추천 시스템에서 다루는 문제는 '사용자가 본 적 없는 아이템에 대한 rating 예측하기' 입니다.
rating을 예측하고 나면, 사용자가 본 적 없는 아이템들 중에 예측 rating이 높은 아이템을 추천하면 됩니다.
수식으로 표현하기 전에 몇가지 정의를 하겠습니다.
C : 모든 사용자
S : 추천의 대상이 되는 모든 아이템
u : 효용함수로, s가 c에게 얼마나 효용성이 있는가를 아래와 같이 표현가능하며, 추천시스템에서는 효용성이 주로 평점(rating)으로 나타납니다. u : C x S R
그러면 추천시스템의 문제는 아래와 같이 정의할 수 있습니다.
u에서 다루는 효용성은 사용자에 의해 정해지는 값이며, 이를 수익성과 연관지어서 활용할 수 있습니다.
C에서의 사용자들은 모두 특성(profile)을 가지게 됩니다. 예를 들어, 나이, 성별, 소득수준, 결혼여부, 등이 될 수 있습니다.
S에서의 아이템도 모두 특성(characteristic)을 가지고 있습니다. 예를 들어 S가 영화라면 characteristic은 장르, 배우, 감독, 언어, 발행연도 등이 될 수 있습니다.
그러나 우리는 모든 사용자와 모든 아이템에 대한 효용성을 알지 못합니다. 예를 들어, 사용자들이 몇몇의 영화를 보고 매긴 평점(rating)이 효용성이라고 가정하면, 사용자들이 아직 안 본 영화에 대한 별점은 알 수 없습니다. 그래서 지금 가지고 있는 평점들로 아직 안 본 영화에 대한 평점을 확장예측하는(extrapolation) 것이 추천시스템입니다.
확장예측(Extrapolation)은 두 가지 단계로 이루어져 있습니다.
Specifying heuristics that define the utility function and empirically validating its performance
전에 좋은 별점을 준 영화와 장르가 비슷하거나 주연배우가 겹치거나 연출감독이 같으면 좋은 평점을 줄 가능성이 높다 라는 heuristic을 발견하고 실제로 얼마나 효과가 있는 지 확인하기
estimating the utility function that optimizes certain performance criterion
각 요소가 얼마나, 어떤 방향으로 영향을 주는 지 계수 추정하기
따라서 추천시스템은 주로 효용을 어떻게 추정하는 지로 분류되며 크게 3가지 방식이 있습니다.
다음 글에서는 위 세가지 방식에 대해 자세히 살펴보겠습니다.
위 글은 아래 논문을 참고했습니다.
Adomavicius, Gediminas, and Alexander Tuzhilin. "Toward the next generation of recommender systems: A survey of the state-of-the-art and possible extensions." IEEE transactions on knowledge and data engineering 17.6 (2005): 734-749.