CF(Collaborative Filtering)은 Peer(동료, 타 유저)와의 유사도를 계산하여
유저 u의 기록되지 않은 평점을 희소행렬을 통해 예측하는 기법이다.
예를 들어 유저 c의 3번 아이템에 대한 평점을 예측하고 싶다.
그렇다면 유저 c와 가장 비슷한 유저인 a를 선택하여 a의 3번 아이템에 대한 평점을 참고해 평점을 매기는 방식이다
(마치 스도쿠를 하듯이 빈 셀의 숫자를 채워넣는 게임이라고 생각하면 쉽다)
이것이 사용자 기반 필터링이다.
하지만 사용자 기반 필터링은 여러가지 문제가 있다. 그 중 가장 큰 문제는
시간에 따라서 사용자의 선호가 바뀔 수 있다는 것이다.
예를 들면 a와 c가 비슷한 취향을 가진 유저 그룹이었는데, a가 갑자기 다른 아이템을 더 선호하게되면
a와 c는 더 이상 유사한 그룹으로 묶일 수 없게된다. 이러한 문제는 사용자를 기반할때(행기준으로 볼때) 많이 일어난다.
두번째로 사용자의 선호에 대한 기준선이 각자 다르다는 것이다
a는 만족에 대한 기준이 낮아서 모든 아이템에 5점을 부여하는 반면,
c는 만족에 대한 기준이 높아서 모든 아이템에 1점을 부여한다.
이렇게 되어도 a와 c의 유사도는 1이된다. 즉, 평점에 대한 기준이 다름에도 같은 그룹으로 분류되는 것이다
사용자의 선호 변화까지 반영하고, 예측의 정확도를 올리는 방법으로는 아이템 기반 필터링이 있다.
쉽다. 사용자 기반 필터링이 행(사용자)기준으로 유사도를 계산하여 예측한다면,
아이템 기반 필터링은 열(아이템)기준으로 유사도를 계산하여 예측한다.
즉, 사용자의 영향을 덜 받는 방법이라는 것을 직관적으로 느낄 수 있을 것이다.
아이템 기반 필터링 기법은 예측해야할 아이템에 자신의 평점을 반영할 수 있는 특징이 있다.
위의 행렬에서 유사도가 높은 아이템 4와 6을 기준으로 유저 d의 6에 대한 평점을 예측한다고 해보자.
유저 d의 아이템 6에 대한 평점은 유저 d의 아이템 4에 대한 평점을 반영하게 된다.
즉, 사용자의 다른 평점과 비슷한 결을 유지할 수 있다는 것이다.
이런 쉬운 설명이 있다니
구체적인 알고리즘에 대한 소개는 바로 다음 포스팅에서 다루겠다