본문 바로가기

추천 시스템/Content-based Filtering

[CB Filtering] 2. Keyword-based Vector Space Model

이전글

1. 2020/03/12 - [추천 시스템/Content-based Filtering] - [CB Filtering] 1. 개요

 

저번 포스팅에서 개요를 설명하며 봤던 그림이다.

 

오늘 내용은 빨간 박스를 친 부분이다.

 

 

대부분의 추천 시스템은 TF-IDF를 활용한 Vector Space Model을 정보 획득 모델로 사용한다. Vector Space Model(VSM)은 문서의 공간적 표현(spatial representation)이다. 간단한 예를 들어보면 다음과 같다.

  • Document 1: The boxer rebellion
  • Document 2: The boxer
  • Document 3: The rebellion

전체 문서는 "rebellion", "the", "boxer"로 이루어져 있으며, 각각의 단어가 x, y, z축에 해당한다고 하자. 그렇다면 전체 문서를 아래와 같은 벡터 공간에 나타낼 수 있다.

  • Document 1: [1, 1, 1]
  • Document 2: [0, 1, 1]
  • Document 3: [1, 1, 0]

$D={d_1, d_2, ..., d_N}$ : 문서의 집합
$T={t_1, t_2, ..., t_n}$ : 전체 문서에 있는 단어들의 집합

 

$T$는 자연어 처리 기법을 적용시켜 얻을 수 있다. 예를 들어, tokenization, stop-words removal, stemming 등이 있다.

$D$의 원소는 $n$차원 벡터이며, 각각의 원소는 해당 단어(term)와 단어가 포함된 문서의 연관성의 정도를 나타낸다. 이를 간단하게 term weights라고 한다. $d_j={w_{1j}, w_{2j}, ..., w_{nj}}$이라면, $w_{1j}$는 term $t_1$가 문서 $d_j$와 관련된 정도를 말한다.

 

VSM은 결정해야 할 사항이 두 개 있다.

  1. 단어의 weights를 측정하는 방법(weighting the terms)
  2. 특성 벡터 간의 유사도를 측정하는 방법(measuring the feature vector similarity)

Weighting the terms

Binary Model

가장 처음에 들었던 "The boxer rebellion" 예제가 Binary Model이다. 문서가 해당 단어를 포함하고 있는지 여부를 0과 1로 나타내어 표현한 것이다.

Count Model

Binary Model이 문서가 해당 단어를 포함하고 있는지 여부만 나타냈다면, Count Model은 몇 번 포함하고 있는지를 나타낸 것이다.

Log-Freq Model

Count Model을 살짝 변형시킨 것이다. 단순히 문서 내에서 단어를 몇 번 포함하고 있는지 세는 것이 아니라, $1+log(word\_freq)$를 적용시킨 것이다.(Log Normalization)

 

Log Normalization

1. Captures relative changes

2. Captures the magnitude of change

3. Keeps everything in the positive space

TF-IDF Model

TF-IDF : Term Frequency-Inverse Document Frequency

TF-IDF는 경험적인 관측에 기반한 가설을 만족하도록 설계되었다.

 

  1. multiple occurences of a term in a document are not less relevant than single occurrences(TF assumption)
  2. rare terms are not less relevant than frequent terms(IDF assumption)
  3. long documents are not preferred to short documents(Normalization assumption)

즉, 1, 2를 조합해 보면 한 문서에서 많이 등장하지만, 다른 문서에서 적게 등장하는 단어가 해당 문서와 연관성이 높다는 것이다. 3을 추가하면 길이가 더 긴 문서가 높은 연관성을 가지게 되는 문제를 방지한다.

$N$ : 전체 문서의 수
$n_k$ : term $t_k$를 한 번이라도 포함하고 있는 문서의 수

$f_{k,j}$ : 문서 $d_j$에서 term $t_k$의 빈도
$max_zf_{z,j}$ : 문서 $d_j$에서 가장 자주 등장하는 term $t_z$의 빈도

weights가 [0,1] 구간에 떨어지도록 하기 위해서, 그리고 문서를 같은 길이의 벡터로 표현하기 위해서 Cosine Normalization을 수행한다.

Measuring the feature vector similarity

유사도 계산은 Collaborative Filtering(CF: 협업필터링)2: 유사도 계산법에 잘 정리된 글이 있다. 여기서는 가장 많이 언급되는 코사인 유사도의 공식만 보여주고 넘어가겠다.

VSM을 활용한 Content-based RS에서는 User Profile과 Item Features가 모두 weighted term vector로 표현된다. 그렇기 때문에 아이템에 대한 유저의 관심을 알아내기 위해서는 코사인 유사도를 계산하면 된다.

출처

From Vector Space Models to Recommender Systems

'추천 시스템 > Content-based Filtering' 카테고리의 다른 글

[CB Filtering] 4. Profile Learner(1)  (0) 2020.04.15
[CB Filtering] 3. TF-IDF Practice  (0) 2020.03.23
[CB Filtering] 1. 개요  (0) 2020.03.12