CF의 알고리즘을 소개하겠다.
CF의 간단한 소개는 아래 링크를 참고하자!
https://zzz0101.tistory.com/33
Collaborative Filtering - 사용자 기반 필터링과 아이템 기반 필터링
CF(Collaborative Filtering)은 Peer(동료, 타 유저)와의 유사도를 계산하여 유저 u의 기록되지 않은 평점을 희소행렬을 통해 예측하는 기법이다. 예를 들어 유저 c의 3번 아이템에 대한 평점을 예측하고
zzz0101.tistory.com
우리의 목표는 유저 3의 아이템 1과 아이템 6에 대한 정확한 예측을 하는 것이다.
사용자 기반의 예측 방법은 다음과 같다
1. 3번 사용자와 가장 유사도가 높은 peer 그룹을 정의한다
2. 유사도를 기반으로 예측값을 계산한다
이 두 가지 방법이 끝이다.
보통 사용자 기반 필터링의 경우 선호에 대한 기준이 제각기 다르기 때문에 normalization(정규화) 작업이 필요하다
때문에 각 벡터의 내적만 구하는 cosine 유사도말고 평균을 빼주는 pearson 유사도를 사용한다.
여러분이 봤을 때 3번 유저와 가장 비슷한 유저는 누구인가?
아마 유저 1과 2가 될 것이다. 유저 3의 1번과 6번 아이템의 평점을 구하기 위해 다음과 같은 식이 사용된다.
p(예측값)는 w(각 유저의 유사도)의 합으로 w*r(각 유저의 평점)을 나눈 것이다.
위의 예로 설명을 하면
p(3,1) = (0.894*7 + 0.939*6) / (0.894 + 0.939) = 6.49가 된다
유저 3은 아이템 1에 대하여 6.49점을 부여할 것이라는 말이다.
그런데 6.49라는 숫자는 유저 3의 기존 평점에 비해서 너무 높다는 생각이 든다.
이유는 유저 1과 2가 평점에 더 후한 그룹이기 때문에 점수가 올라가게된 것이다.
이러한 편향을 없애기 위해 평균 중심 평점을 도출하는 식을 보여주겠다!
식을 풀어서 보면
r_hat(예측된 평점)은 해당 유저 3의 전체 평균에 유사한 그룹원(1,2)의 평점에 각 유저의 평점 평균을 빼주고 유사도를 곱한 것을 각 유저의 유사도의 합으로 나눈 것이다.
숫자로 풀어서 설명하면
2(유저 3의 평균) + (1.5*0.894 + 1.2*0.939) / (0.894 + 0.939) = 3.35가 된다.
원래의 식에서 각 유저의 평균을 뺀 것 밖에 없다.
편향을 제거하니 유저 3의 경향을 좀 더 따라가는 것 같다.
유저 3은 다른 아이템들에 비해서 아이템 1을 조금 더 선호할 수 있는 가능성이 있다고 해석할 수 있다.