Collaborative Filtering(CF)
CF 개요
- '많은 유저들로부터 얻은 기호 정보' 를 이용해 유저의 관심사를 예측하는 방법
-> 더 많은 유저/아이템 데이터가 축적될수록, 협업의 효과는 커지고 추천은 정확해질 것이란 가정에서 출발
- CF 기반 추천시스템은 결국 유저 u가 아이템 i에 부여할 평점(or 선호도 등)을 예측하는 것이다.
- CF 기반 추천시스템은 아이템이 가진 속성을 사용하지 않으면서도 높은 추천 성능을 보인다(도메인 지식 등이 필요하지 않음).
CF 방법
- 주어진 데이터를 활용해 유저-아이템 행렬을 생성
- 유사도 기준을 정하고 유저 혹은 아이템 간의 유사도를 구함
- 주어진 평점과 유사도를 활용하여 행렬의 비어 있는 값을 예측
CF 분류
- Neighborhood-based CF(Memory-based CF)
- Model-based CF
- Non-parametric(KNN, SVD)
- Matrix Factorization
- Deep Learning
- Hybrid CF
- Content-based Recommendation과의 결합
Similarity Measure
Similarity Measure이란
: 두 개체 간의 유사성을 수량화하는 실수 값 함수 혹은 척도
- 유사성에 대한 여러 정의가 존재하지만, 일반적으로는 거리의 역수(거리가 길면 유사도는 작아지고, 가까우면 유사도는 커짐) 개념을 사용.
- 따라서 두 개체 간 거리를 어떻게 측정하냐에 따라 유사도 측정방법이 달라짐(정해진 유사도 사용법은 없음).
대표적인 유사도 종류
Mean Squared Difference Similarity
주어진 유저-아이템 rating에 대하여,
- 각 기준에 대한 점수의 차이를 계산, 유사도는 유클리드 거리에 반비례(평점이 비슷할수록 MSD는 작아짐)
- 분모가 0이 되는 것을 방지하기 위해 분모에 1이 더해짐(smoothing)(최대 유사도 = 1)
Cosine Silmilarity
주어진 두 벡터 X, Y에 대하여,
- 두 벡터의 각도를 이용하여 구할 수 있는 유사도
- 직관적으로 두 벡터가 가리키는 방향이 얼마나 유사한지를 의미
Pearson Similarity(Pearson Correlation)
주어진 두 벡터 X, Y에 대하여,
- 각 벡터를 표본평균으로 정규화한 뒤에 코사인 유사도를 구한 값
- 직관적인 해석: (X,Y가 함께 변하는 정도) / (X,Y가 따로 변하는 정도)
- 0일경우 서로 독립적임을 의미.
- 1에 가까우면 양의 상관관계, -1에 가까우면 음의 상관관계를 나타냄
Jaccard Similarity
주어진 두 집한 A, B에 대하여,
- 집합의 개념을 사용한 유사도
- Cosine, Pearson 유사도와 달리 길이(차원)이 달라도 이론적으로 유사도 계산이 가능함
- 두 집합이 같은 아이템을 얼마나 공유하고 있는지를 나타냄
- 두 집합이 가진 아이템이 모두 같으면 1
- 모두 다르면 0
더 많은 유사도
Neighborhood-based CF (NBCF)
NBCF 개요
- 유저 U가 아이템 I에 부여할 평점을 예측하는 것(행렬의 비어있는 값을 예측)
- 특징
- 구현이 간단하고 이해가 쉬움
- Sparsity
- 주어진 평점/선호도 데이터가 적을 경우, 성능이 저하되는 것
- NBCF는 주어진 데이터를 활용해 유저-아이템 행렬을 만들어 예측하므로, 이에 취약함
- NBCF를 적용하려면 적어도 sparsity ratio(전체 행렬 중 비어있는 칸의 비율)가 99.5를 넘지 않는 것이 좋음(그렇지 않을 경우 모델 기반 CF를 고려해봐야 함).
- Scalability
- 아이템이나 유저가 계속 늘어날 경우 확장성이 떨어짐(메모리 문제 등)
User-based CF (UBCF)
유저 기반 협업 필터링
- 두 유저가 얼마나 유사한 아이템을 선호하는가?
- 유저 간 유사도를 구한 뒤, 타겟 유저와 유사도가 높은 유저들이 선호하는 아이템을 추천
Item-based CF (IBCF)
아이템 기반 협업 필터링
- 두 아이템이 유저들로부터 얼마나 유사한 평점을 받았는가?
- 아이템 간 유사도를 구한 뒤, 타겟 아이템과 유사도가 높은 아이템 중 선호도가 큰 아이템을 추천
K-Nearest Neighbors CF(KNN CF)
- NBCF의 한계
- 아이템 i에 대한 평점 예측을 하기 위해서는, Ωi(아이템 i에 대해 평가를 한 유저 집합)에 속한 모든 유저와의 유사도를 구해야 함.
- 그러나 유저가 너무 많아질 경우 계속해서 연산은 늘어나고, 이로 인해 오히려 성능이 떨어지는 현상이 발생하기도 함
- KNN 협업 필터링의 아이디어
- Ωi에 속한 유저 가운데 유저 u와 가장 유사한 K명의 유저(KNN)만을 이용하여 평점을 예측
(유사하다는 것은 우리가 정의한 유사도 값이 크다는 것을 의미)
- 보통 K = 25 ~ 50을 많이 사용(하이퍼 파라미터임)
Rating Prediction
CF를 이용한 평점 예측
Absolute Rating
-
전체 유저 U, 아이템 I에 대한 평점 데이터가 존재할 때, 유저 u의 아이템 i에 대한 평점 r^(u,i)를 예측해보자.
-
아이템 i에 대한 평점이 있으면서 유저 u와 유사한 유저들의 집합을 Ωi라고 한다면,
- Average:
- Weighted Average:
-
Absolute Rating의 한계
- 유저가 평점을 주는 기준이 제각기 다름
: 어떤 유저는 전체적으로 높게평점을 줄 수도 있고, 반대로 낮게 줄 수도 있음.
Relative Rating
-
상대적 평점의 개념
-
유저의 평균 평점에서 얼마나 높은지 혹은 낮은지, 그 편차(Deviation)을 사용.
- 최종 예측값 = 유저 평균 rating + predicted deviation
-
devation과 유사도 기반 weighted average prediction을 결합한 최종 수식
Top-N Recommendation
- CF의 최종 목적은 유저 u가 아이템 i에 부여할 평점을 예측하는 것임.
- 따라서 예측된 평점이 높은 아이템을 유저에게 추천해주는 것이 CF를 활용한 Top-N Recommendation이 됨.