Content based Filtering은 팀블로그에서 참고했다.
위의 그림이 저번에도 게시했던 CF알고리즘의 개요이다.
여기서 빨간 부분인, content를 어떻게 수집할지에 대한 '키워드 수집' 내용을 다루겠다.
키워드 수집을 할 때 대부분 TF-IDF를 활용한 vector space model(VSM)을 사용한다.
즉, 모든 문서에 많이 등장하는 단어는 중요도를 떨어뜨리고, 특정 문서에 자주 등장하는 단어만 중요 단어로 판단한다.
아래 예시를 보고 어떻게 vector로 표현하는지 확인해보자.
- document1: 나는 우유를 마셨다
- document2: 우유를 마셨다
- document3: 나는 우유를
라고 했을 때, 문서에서 전체 단어가 '나는', '우유를', '마셨다'라는 3 단어로 이뤄져 있다. 이를 다음과 같이 벡터로 표현할 수 있다.
- document1: [1,1,1]
- document2: [0,1,1]
- document3: [1,1,0]
VSM의 절차
1 . 단어의 weights를 측정하는 방법(weighting the terms)
2. 특성 벡터 간의 유사도를 측정하는 방법(measuring the feature vector similarity)
1. weighting the terms
단어의 weights를 측정하는 방법에는 크게 TF-IDF와 나머지(binary model, count model, log-freq model)가 있다. 나머지 모델은 요즘 잘 사용하지 않고, 팀블로그에 잘 설명되어 있으니 생략하도록 하겠다.
TF-IDF
이 모델은 모든 문서에 자주 등장한 단어가 아닌, 특정 문서에만 자주 등장한 단어를 중요단어로 선정한다. 이는, '합니다' 라는 단어가 중요단어로 선정되면 안 되기 때문이다.
때문에 핵심어를 추출하거나, 문서들 사이의 유사도를 구하는 용도 등으로 사용되고 있다.
따라서 TF-IDF는 2가지 특성으로 나뉜다.
- TF(단어 빈도, term frequency): '특정 단어가 문서 내에서 얼마나 등장하는가?'를 나타내며, 값이 높을수록 단어의 중요도가 높아진다.
- IDF: 단어의 희소성을 나타낸다. 이는 문서군의 성격에 따라 달라진다.
예를 들어, '원자'라는 낱말은 일반적인 문서들과 있을 때, IDF가 높아지겠지만, 원자에 관한 문서를 모아놓은 문서 사이에선 IDF가 낮아진다.
1. TF 공식
문서의 집합
N: 전체 문서의 수
$n_{k}$: term$t_{k}$를 한 번이라도 포함하고 있는 문서의 수
$f_{k,j}$: 문서 $d_{j}$에서 term$t_{k}$의 빈도
$max_{z}f{zj}$: 문서 d_{j}에서 가장 자주 등장하는 term$t_{z}$의 빈도
TF에는 불린 빈도, 로그 스케일 빈도, 증가 빈도가 있다.
- 불린 빈도: 단어가 한 번이라도 나타나면 1, 아니면 0
- 로그 스케일 빈도: tf(t,d)= log(f(t,d)+1)
- 증가 빈도: traget 단어 빈도수 / 최빈 단어 빈도수
2. IDF 공식
log(해당 단어를 포함한 문서의 수/ 전체 문서의 수)
즉, 해당 단어를 포함한 문서의 수가 많아질수록 0에 가까워 짐
2. measuring the feature vector similarity
중요단어들을 파악했으면 유사도를 계산해야 한다. 유사도는 코사인 유사도를 가장 많이 사용하는데, 이 내용은 아래에 정리되어 있다.
https://ekdud7667.tistory.com/10?category=887591
'인공지능 > 스터디' 카테고리의 다른 글
최대우도추정 (0) | 2020.04.14 |
---|---|
Bias-Variance, underfitting-overfitting trade off (0) | 2020.03.23 |
[Ensemble] 개요(Bagging, Boosting, Stacking) (0) | 2020.03.13 |
[CB Filtering] 1. 개요 (0) | 2020.03.13 |
Collaborative Filtering(CF: 협업필터링)2: 계산 (0) | 2020.03.12 |