D039
Collaborative Filtering
CF 는 사용자 x 와 유사한 사용자 집합 N을 찾는 작업입니다.
집합 N 을 찾아, N 의 사람들이 좋아하는 아이템을 사용자 x 에게 추천해주는 방식입니다.
영화에 대한 예시를 봅시다.
A,B,C,D 는 사용자이고, 칼럼은 영화(아이템) 입니다.
사용자들의 레이팅은 채워지지 않았습니다.
CF 를 사용해 사용자 A 에게 새로운 영화를 추천해보겠습니다.
여기서는 코사인 유사도를 사용합니다.
아이템에 대한 레이팅을 그대로 사용하게 된다면,
지난 포스팅과 같이, 부정적 평가에 대한 반영이 어렵습니다.
그리고 사람마다 평가의 기준, 정도가 다르기 때문에
이 특성을 고려해서 레이팅을 정규화 해야합니다.
여기서는 각 행의 평균을 빼서 정규화합니다.
A의 평균은 10/3 이므로, 순서대로 2/3, 5/3, -7/3 이 나옵니다.
이 정규화에서는 모든 행을 더하면 0이 됩니다.
그래서 평점의 평균이 0 됩니다.
레이팅이 없는 feature 에 대해서는 평균 0 으로 두고 유사도를 계산합니다.
이런 방식으로 유사도를 Centered Cosine similarity 혹은 Pearson Correlation 이라고 합니다.
A 와 B 의 코사인 유사도는 $sim(A,B) = 0.09$
A 와 C 의 코사인 유사도는 $sim(A,C) = -0.56$ 으로
A는 C보다는 B 와 더 유사하다고 볼 수 있습니다.
Rating Prediction
앞선 예시에서는 사용자와 유사한 집합 N 을 찾는 방식을 다뤘습니다.
유사한 집합으로부터 사용자 x 가 갖고있지 않은 아이템의 점수 예측해야 추천을 할 수 있습니다.(높은 점수의 아이템을 추천)
여기서는 두가지 방식을 고려할 수 있습니다.
-
- $r_{xi} = \frac{1}{k}\sum_{y \in N}r_{yi}$
- 사용자 x 의 아이템 i, $r_{xi}$ 는 집합 N 의 i 레이팅 평균으로 둡니다.
-
- $r_{xi} = \frac{\sum_{y \in N}s_{xy}r_{yi}}{\sum_{y \in N}s_{xy}}$
- 같은 집합 N 에서의 평점이라도 유사도에 따라 더 높은 비중을 주어 점수를 예측합니다. ($s_{xy} =SIM(x,y)$)
Item-Item Collaborative Filtering
위 방식은 user-user collaborative filtering 으로 유사한 사용자를 찾는 방식이었습니다.
item-item 방식에서는 유사한 사용자 집합이 아닌
유사한 아이템의 집합을 기준으로 추천을 합니다.
기준만 item 으로 바뀐것이지
작동원리는 동일합니다.
위와 같은 상황에서 영화 1 에서 사용자 5 가 어떤 평가를 낼지 예측하고 싶습니다.
우선 1번 아이템과 다름 아이템 간 유사도를 찾습니다.
위와 동일하게 Pearson correlation 으로 구했습니다.
유사도에 따라 3과 6번 영화와 유사하다는 것을 알 수 있습니다. (N의 크기를 2로 설정)
유사도를 고려한 방식(2) 으로 레이팅을 예측하자면
$\frac{0.41\cdot 2 + 0.59\cdot 3}{0.41+0.59} = 2.6$ 으로 예측할 수 있습니다.
user-user VS Item-Item
이 두 방식의 원리가 동일하기 때문에
이론상 두 방식의 성능 차이는 없습니다.
그러나 실제 어플리케이션에서는 일반적으로 item-item CF 가 더 높은 성능을 보입니다.
직관적으로 보자면, 아이템이 사용자보다 단순하기 때문입니다.
아이템, 예를 들어 음악 같은 경우
힙합과 클래식은 아이템 간 차이가 있지만
독특한 취향을 가진 사용자는 두 장르 모두 좋아할 수 있습니다.
item-item 간 유사성 개념이 user-user 간 유사성 개념보다
더 밀접하고, 의미가 있기 때문에
item-item CF 가 일반적으로 더 높은 성능을 보입니다.
Comments