시작하면서..
이전 포스트에서는 추천 시스템의 전체적인 내용, 그리고 방향성에 대해 간단히 이야기 해보았습니다. 이 포스트에서는 추천 시스템의 세 방법론 중 하나인 content-based method에 대해 이하기 하고자 합니다.
Content-Based Methods
유저가 이전에 사용한 item과 비슷한 recommendation
Content-based recommendation methods에서는 utility function \(u(c,s)\)가 측정됩니다. c는 user이고 s는 item 입니다.
예를 들어 movie recommendation을 생각해봅시다. user c가 이전에 높게 rating한 영화들과 공통점이 많은 것을 추천할 것입니다. (genre, director ...)
Content-based methods는 정보 검색, 정보 필터링 연구에 뿌리를 둡니다. 정보검색, 필터링 커뮤니티들에 의한 발전이 이루어졌고, 여러 text 기반 application의 중요성 때문에 많은 current content based methods는 text 정보를 담은 item 추천에 집중합니다.
Content-based methods는 text based item에 초점을 맞춤.
이 부분에서 formally하게 \(Content(s)\)에 대한 내용이 나옵니다. \(Content(s)\)는 item s의 profile을 나타냅니다. (s의 특징에 대한 set)
가장 잘 알려진 keyword weights measure 방법으로 TF-IDF가 있습니다.
$$
TF_{i,j} = {f_{i,j} \above 1pt max_{z}f_{z,j}}
$$
\(TF_{i,j}\) Term Frequency 단어 빈도
\(f_{i,j}\) : keyword \(k_i\)가 document \(d_j\)에 등장한 횟수
\(max_{z}f_{z,j}\) : 최빈 단어 frequency
하지만 모든 document에 대해서 frequency가 높은 것도 유의할 만한 keyword라고 할 수 있을까요?? (is, the, ...) 당연히 아닙니다. 그래서 이를 고려해주기 위해 \(IDF_i\)를 고려해줍니다.
$$
IDF_i = \log{N \above 1pt n_i}
$$
\(IDF_i\) : 한 단어가 전체 집합에서 얼마나 공통적으로 나오는지..
\(n_i\) : 해당 단어를 포함한 문서의 수
그래서 document \(d_j\)에서 keyword \(k_i\)의 weight을 TF-IDF로 구합니다.
$$
w_{i,j} = TF_{i,j} \times IDF_i
$$
그리고 이를 통해
$$
Content(d_j)=(w_{1,j}, ... w_{k,j})
$$
로 \(Content(d_j)\)에 대해 정의 할 수 있습니다.
앞에서 언급했듯이, Content-based methods는 이전에 user가 좋아했던 것과 비슷한 item을 추천해주는 것 입니다. 이를 수행하기 위해서는 여러 후보군을 이전에 rate 되었던 content들과 비교해봐야 합니다.
그럼 User c에 대한 취향을 알아야 하는데, 이는 formal하게 \(ContentBasedProfile(c)\)로 나타낼 수 있습니다. 이는 rating, 이전에 봤던 것, keyword analysis technique 등으로 얻어집니다.
위의 \(ContentBasedProfile(c), Content(s)\)를 이용하여 utility function을 구할 수 있습니다.
$$
u(c,s)=score(ContentBasedProfile(c), Content(s))
$$
\(ContentBasedProfile(c), Content(s)\) 둘 다 TF-IDF 벡터로 표현이 가능하고 이 벡터들의 관계를 some scoring heuristic methods를 이용하여 측정합니다. (cosine 유사도)
논문에서는 코사인 유사도를 이용하여 score를 측정하는 것을 예시로 보여줍니다. (heuristic)
이러한 traditional heuristics 뿐만 아니라 다른 technique (model based) 들이 존재 합니다. (베이지안 분류기 등 )
논문에서는 이 중 예시로 나이브 베이즈 분류기를 보여줍니다.
$$
P(c_i|k_{1,j}, ... , k_{n,j})
$$
나이브 베이즈 분류기에서는 "relevant","irrelevant" 의 binary class에 대해 분류를 합니다.
위의 조건부 확률은 실제로 계산하기 거의 불가능에 가깝기 때문에 나이브 베이즈 분류기에서는 각 keywords가 서로 독립이라고 가정합니다. 이를 통해 아래와 같이 식이 변경 될 수 있습니다.
$$
P(C_i) \prod_xP(k_{x,j}|C_i)
$$
하지만 실제 상황에서는 키워드 간의 독립이 성립하지 않을때가 많습니다. 하지만 이런 상황에 대해서도 괜찮은 성능을 보인다고 합니다.
Limited Content Analysis
충분한 features를 갖기 위해 content는 컴퓨터가 자동적으로 parse 할 수 있는 form이어야 합니다. 아니면 item에 feature가 할당되던가..
Content-based techniques의 어떤 한계를 극복하기 위해 automatic feature extraction이 필요하다고 합니다. 하지만 이미지, video 등 멀티미디어에 대해서 여러 문제가 있다고 합니다. (당시 2005년 기준..)
그리고 다른 두 아이템이 동일한 features에서 주어진다면 구분이 불가합니다. Content-based methods는 빈도 주의라서 quality를 고려하지 못합니다. (이는 rating을 통해 어느정도 극복 가능하다합니다.)
Overspecialization
만약 score가 엄청 높은 것만 recommend 하게 된다면 새로운 아이템에 대해서는 추천을 절대 하지 못할 것 입니다. 이를 Overspecialization이라고 합니다.
그래서 user의 선호와 너무 비슷하거나 너무 다른 것은 추천하지 않습니다.
diversity 중요!
New User Problem
이제 New User에 대해서는 정확한 recommendation이 필요 없습니다.
극악한 data 환경에서는 CB(content-based methods)가 CF(collaborative filtering)보다 더 좋다고 합니다. (하지만 충분한 data가 있을 때는 CF가 성능이 더 좋음)