아카이브/추천시스템(2019)

추천시스템 11 - TFIDF

Johnny Yoon 2019. 6. 30. 14:20
728x90
반응형

추천시스템

본 포스팅은 Minnesota대학교의 Intro to Recommender Systems코세라 강좌를 정리한 내용입니다.

https://www.coursera.org/learn/recommender-systems-introduction?specialization=recommender-systems

 

 

TFIDF

TFIDF기법은 정보검색 분야에서 출발한 개녑이다. 정보검색과 관련된 개념을 자세히 설명하지는 않을것이지만, 정보검색에 TFIDF 어떻게 쓰였는지 들여다 보도록 하자.

  • 만약 기본적인 검색기능(태그 랭킹 기반) 실패하면 어떻게할까?
    • 특정 단어를 가진 문서를 모두 가져온다면, 너무 많을것이다.
    • 어떠한 방식으로 랭킹을 정하는가?
  • 두가지 요인을 고려해 있다.
    • 단어의 빈도는 중요한 요인이다.
    • 하지만 모든 단어가 빈도에 대해서 같은 영향을 가지는 것은 아니다.

두번째를 설명하면, "The" 같은 단어는 모든 문서들에서 엄청나게 많이 나온다. 하지만 "Civil War" 같은 단어는 특정 문서들에만 많이 나올것이다. 이러한 경우 사용자가 "The Civil War" 관련된 문서를 원할 "The"보다는 "Civil War" 중심을 두고 문서들을 모아야 것이다.

 

TFIDF 가중치

TFIDF 가중치는 아래 두가지 요소를 곱한 결과이다.

Term Frequency  X  Inverse Document Frequency

Term Frequency

  • 하나의 문서에 단어가 나오는 단순한 빈도수
  • 단어가 문서와 어느정도 연관성이 있는가를 표현한다.

Inverse Document Frequency

  • 특정 단어가 문서에서 나올 확률이 얼마나 드문가를 표현한다.
  • 계산법은 아래와 같다:

log(모든 문서의 / 특정 단어를 가진 문서의 )

  • 문서의 수가 많아지면, 계산하기가 까다로워지기 때문에 log 취한다.

가중치는 검색하는 쿼리의 단어들에 적용되어 문서들과 비교된다.

 

TFIDF 강점/약점

강점

약점

  • - Stopwords (문서와 관련없는 단어들) 자동으로 무시하는 효과
  • 중요한 단어들에 혜택을 주는 구조이다.
  • 중요한 단어가 적으면 동작하지 않는다
  • (. 법적인 계약은 계약자의 이름이 적게 나온다)
  • 사용자가 좋지 않은 쿼리를 넣었을

 

컨텐츠 기반 필터링과 TFIDF

컨텐츠 필터링은 기본적으로 사용자의 프로필에 기반해 컨텐츠를 추려내는 작업이다.

과정에서 TFIDF 사용자의 프로필에 문서기반 프로필을 만든다.

문서에 나온 단어들이 사용자에게 얼마나 중요한 단어인가를 사용해, 사용자의 선호도를 반영하는 것이다.

사용자의 프로필에 있는 단어들을 벡터화하고, 문서들의 단어를 백터화 해서 비교해보면 특정 문서에 대한 사용자의 선호도를 있을 것이다.

 

TFIDF변형

특정 도메인에서는 TF 도메인의 특성에 맞춰 변형해서 사용한다.

  • TF(빈도수) 0/1(단어가 나오는지 나오지 않는지, 횟수를 무시) 사용
  • 로그 빈도수 (tf 너무 , tf + 1 log 취한다)
  • 정규화된 빈도수 (빈도수를 문서의 길이로 나눈다)

BM25랭킹함수

  • 문서에서만 TF 계산하는 것이 아니라, 쿼리에서도 계산한다.
  • 문서의 길이도 고려한다.

 

고려점들

특정 구절 또는 N-grams

  • N-gram이란 단어들을 N-페어로 묶는것을 말한다. (computer, science) bigram (computer, science, major) trigram이다.
  • Computer Science 붙어있을때의 의미는 Computer Science 떨어져있을때의 의미와 다르기 때문에 사용한다.

단어의 중요도를 계산하는 다른 방법들

  • 제목에 나오는 단어의 중요도가 문서의 문단에 나오는 단어의 중요도와 같은가?

문서들의 가치

  • 어떤 문서들이 좋은 문서들인가? Pagerank 알고리즘

부수적인 문서들

  • 특정 문서들은 많이 클릭되는 링크가 있지는 않은가?
  • 링크의 문서들을 같은 문서로 고려해야 하는가?

 

키워드벡터

키워드벡터는 키워드를 사용해 벡터공간에 컨텐츠(아이템) 표현하기 위함이다.

키워드는 아이템을을 정의하는 단어일 수도 있고, 영화의 경우는 장르, 배우와 같은 특성일 수도 있다.

  • 키워드는 하나의 차원이다.
  • 아이템은 키워드의 차원 내의 포지션(벡터) 된다.
  • 사용자는 선호도 프로필이 있고, 선호도 또한 차원 내의 벡터가 된다.
  • 사용자와 아이템의 매치는, 벡터가 얼마나 가까이 정렬되어 있는가를 보고 결정한다.
  • 차원(키워드) 많아질 수록 벡터화하기가 어려워지기 때문에, 키워드를 줄이는 것을 고려해야 한다.

 

아이템을 키워드 벡터로 표현하는 방법

  • 키워드가 있는지 없는지? (0/1의값)
  • 카운트
  • TFIDF (가장 보편적인 방법)
  • 다른 변형/조합들
  • 결과적으로 모든 방식은 키워드벡터가 되고 그것을 정규화하면 사용이 가능해진다.

 

영화 태깅 예제)

영화의 경우 키워드벡터는 어떻게 표현할 있을까?

키워드가 있는지 없는지로 표현

  • 배우 - 행크스가 영화에 얼마나 많이 나왔는지는 중요하지 않다.
  • 태그가 기술적이라면? 단어의 카운트가 중요할지도 모른다.

IDF방법

  • 특정 배우가 다른 배우보다 중요한가?
  • 기술적 - "감옥장면" "키스씬", "로맨스" 보다 중요한가?

 

표기법

t

태그/특성

$$t \in T$$

태그/특성 집합에 포함된 태그/특성

$$T_i$$

아이템 i 적용된 태그/특성 집합

$$\vec{t}$$

0/1값의 태그/특성 벡터

$$\vec{t}_i$$

아이템 i 적용된 0/1값의 태그/특성 벡터

$$t_{ui}$$

사용자가 태그를 아이템에 적용한 벡터 (application 벡터)

 

아이템에서 사용자 프로필로

벡터모델은 특성값을 하나의 스칼라값으로 표현하게 된다.

말은 , 좋아요 하나가 다른 어떤 중요한 특성값과 같은 의미를 가진다는 것이 되는데,

특정 도메인에서는 좋지 않은 방법이 된다.

 

그렇다면 사용자의 프로필을 어떻게 표현할것인가?

간단히 모든 횟수를 더할것인가?

  • 정규화를 할것인가?
    • 모든 벡터가 같은 길이를 가질 있게 정규화 할것인가?
    • 모든 특성이 같은 중요도를 가지는가?
    • 방법은 많은 경우 좋지 않다는 것을 있다.
  • 특성마다 중요도에 대한 다른 가중치를 것인가?
    • 평점을 중요도로 매길 것인가?
    • 신뢰도를 사용할 것인가?
  • 평점을 어떻게 요소화 할것인가?
    • 단항의 ? - 벡터를 모두 더해 가중치가 없이 사용
    • 이항의 ? - 양수의 값이면 더하고 음수의 값이면 빼서 사용
    • 제한된 단항의 ? - 일정 수준이 넘어서는 단항의 값만 사용 (3.5평점 이상의 이이템만 사용 )
    • 양수의 가중치의 ? - 높은 점수가 높은 값임을 의미
    • 음수의 가중치값도 사용한 ? - 음수 평점을 낮은 값으로 사용
  • 프로파일을 어떻게 갱신할 것인가?
    • 갱신하지 않고 매번 새로 만들어 사용 - 비효율적이다.
    • 새로 들어온 가중치를 어떠한 비율로 적용 (선형결합)
    • 예전 가중치를 조금씩 감소시키고 (Time Decay) 새로운 가중치를 적용
    • (. 0.95 * 오래된가중치 + 0.05 * 새로운가중치)

 

예측값 계산

마지막 단계는 구해진 벡터들을 이용해 예측값을 구하는 것이다.

예측값이 추천할 아이템을 선정할 값이 된다.

사용자의 선호도 벡터와 아이템들의 벡터가 있을 ,

사용자가 아이템을 선호할 예측값은 벡터의 코사인 유사도를 구한 값으로 결정된다.

코사인 유사도는 벡터의 내적곱을 구하고, 그것을 벡터의 길이를 곱한값으로 나눈 값이다.

벡터 v 벡터 w 코사인 유사도를 수식으로 표현하면 아래와 같다:

$$\frac{v * w}{|v| * |w|}$$
코사인 유사도의 값은 -1 1사이의 값이다.

추천할 때는 유사도 값을의 최상위 N개를 추천할 있다.

 

장단점

장점

단점

    • 컨텐츠 기반 추천이다 (컨텐츠만 사용한다)
    • 이해 가능한 (설명 가능한) 프로필이다
    • 쉬운 (효율적인) 계산법이다.
    • 다른 추천시스템의 방법론과 쉽게 결합이 가능하다. (유연한 기법이다)
      • 가중치와 요소들을 직접 찾아내야 한다.
      • 많은 실험을 요구한다. (한두번 해봐선 안된다)
      • 컨텐츠끼리의 상호의존관계를 적용할 없다.
        • 영화라면 배우와 장르를 함께 고려할 없다.

 

728x90
반응형