본문으로 바로가기
반응형

T아카데미에서 오픈된 토크ON세미나 강연 동영상을 보고 정리해보았다.

 

컨텐츠 기반 모델

  • 사용자가 이전에 구매한 상품중에서 좋아하는 상품들과 유사한 상품들을 추천하는 방법
  • Items를 벡터 형태로 표현, 도메인에 따라 다른 방법이 적용된다.
  • 벡터들간의 유사도를 계산하여 자신과 유사한 벡터를 추출한다.

 

유사도 함수

  • 유클리디안 유사도 = 1 / (유클리디안 거리 + 0.000001)
    • 유클리디안 거리    
    • 가장 가까운 거리가 묶인다.
    • 장점 : 계산하기 쉽다.
    • 단점 : p와 q의 분포나 스케일이 다른 경우 상관성을 놓친다.
  • 코사인 유사도 (가장 많이 사용)
    • 벡터의 방향도 고려한다. (쎄타 각도)
    • 장점 : 벡터의 크기가 중요하지 않은 경우에 거리를 측정하기 위한 메트릭으로 사용
    • 단점 : 벡터의 크기가 중요한 경우에 대해서 잘 작동하지 않음
  • 피어슨 유사도
    • 상관관계를 분석할 때 주로 사용하는 알고리즘
  • 자카드 유사도
    • 집합에서 얼마만큼 결합된 부분이 있는지로 계산
  • 그 외 다양한 유사도 함수가 존재한다. (scikitl-learn, scipy에서)
  • 여러가지 유사도를 사용하고, 상황/도메인에 따라 다르게 적용한다.
  • 평가지표가 좋은 순서대로, 가중치를 통해 적용하기도 한다.
  • 유사도 매트릭스를 더해도 되고, 각각의 유사도 매트릭스마다 모델을 만들어서 추천시스템을 결합해도 된다.

 

Represented Items를 벡터로 표현해야 유사도를 구할 수 있게 된다. 즉, 유사도를 구하기 위해 벡터화시킨다.

 

TF-IDF

  • 특정 문서 내에 특정 단어가 얼마나 자주 등장하는 지를 의미하는 단어 빈도(TF) 와 전체 문서에서 특정 단어가 얼마나 자주 등장하는지를 의미하는 역문서 빈도(DF)를 통해서 "다른 문서에서는 등장하지 않지만 특정 문서에서만 자주 등장하는 단어"를 찾아서 문서 내 단어의 가중치를 계산하는 방법.
  • 문서의 핵심어를 추출, 문서들 사이의 유사도를 계산, 검색 결과의 중요도를 정하는 작업등에 활용할 수 있다.

[구성]

  1. TF(d, t) : 특정 문서 d에서의 특정 단어 t의 등장 횟수
  2. DF(t) : 특정 단어 t가 등장한 문서의 수
  3. IDF(d, t) :   

TF-IDF(d, t) = TF(d, t) * IDF(d, t)

 

[원리]

1. Item이라는 컨텐츠를 벡터로 "Feature Extract" 과정을 수행해준다.

2. 빈도수를 기반으로 많이 나오는 중요한 단어들을 잡아준다. 이러한 방법을 Counter Vectorizer 라고 한다.

3. 하지만, Counter Vectorizer는 단순 빈도만을 계산하기에 조사, 관사처럼 의미는 없지만 문장에 많이 등장하는 단어들도 높게 쳐주는 한계가 있는데, 이러한 단어들에는 패널티를 줘서 적절하게 중요한 단어만을 잡아낸다.

4. 문서간에 TF*IDF 라는 벡터값이 생성되었으니, 이를 통해 유사도를 계산한다.

 

[장점]

- 직관적인 해석이 가능함

 

[단점]

- 대규모 말뭉치를 다룰 때 메모리상의 문제가 발생한다. (이를 해결하기 위한 것이 word2vec)

  - 높은 차원을 가진다.

  - 매우 sparse한 형태의 데이터

 

 

 

 

[실습 링크]

https://www.kaggle.com/chocozzz/00-tf-idf-1

 

00. 컨텐츠 기반 추천시스템 - TF-IDF를 이용한 추천시스템#1

Explore and run machine learning code with Kaggle Notebooks | Using data from T Academy Recommendation2

www.kaggle.com

https://www.kaggle.com/chocozzz/00-tf-idf-2

 

00. 컨텐츠 기반 추천시스템 - TF-IDF를 이용한 추천시스템#2

Explore and run machine learning code with Kaggle Notebooks | Using data from T Academy Recommendation2

www.kaggle.com

https://github.com/yoonsungsong/TIL/blob/main/RecommenderSytem/TF-IDF_info_and_project.ipynb

 

GitHub - yoonsungsong/TIL: Today I Learned..

Today I Learned.. Contribute to yoonsungsong/TIL development by creating an account on GitHub.

github.com

 

 

TF-IDF는 원시적인 방법으로, 대용량 데이터에는 맞지 않는다.

 

 

Reference : 

https://wikidocs.net/31698

 

4) TF-IDF(Term Frequency-Inverse Document Frequency)

이번 챕터에서는 DTM 내에 있는 각 단어에 대한 중요도를 계산할 수 있는 TF-IDF 가중치에 대해서 알아보도록 하겠습니다. TF-IDF를 사용하면, 기존의 DTM을 사용 ...

wikidocs.net

https://www.youtube.com/watch?v=g2-z0saMteA&t=4s 

 

반응형