Collaborative Filtering (1)
Collaborative Filtering (1)
1. Collaborative Filtering (CF)
1.1 CF 문제 정의
협업 필터링 (Collaborative Filtering, CF)
“많은 유저들로부터 얻은 기호 정보”를 이용해 유저의 관심사를 자동으로 예측하는 방법
- Collaborative: 집단적 협업, 다수의 의견 활용
- 더 많은 유저/아이템 데이터가 축적될수록 협업의 효과는 커지고 추천은 정확해질 것이란 가정에서 출발
- 학습데이터가 많을 수록 좋다는 것과 같은 원리
CF 기반 추천 시스템
최종 목적
유저 $u$가 아이템 $i$에 부여할 평점을 예측하는 것
방법
- 주어진 데이터를 활용해 유저-아이템 행렬을 생성한다
- 유사도 기준을 정하고 유저 혹은 아이템 간의 유사도를 구한다
- 주어진 평점과 유사도를 활용하여 행렬의 비어 있는 값(평점)을 예측한다
1.2 CF 원리
CF 기반 추천 시스템의 원리
유저 A와 비슷한 취향을 가진 유저들이 선호하는 아이템을 추천
- 아이템이 가진 속성을 사용하지 않으면서도 높은 추천 성능을 보임
1.3 CF 분류
Neighborhood-based CF (Memory-based CF)
- User-based
- Item-based
Model-based CF
- Non-parametric (KNN, SVD)
- Matrix Factorization
- Deep Learning
Hybrid CF
- Content-based Recommendation 과의 결합
2. Neighborhood-based CF
2.1 User-based CF (UBCF)
유저 기반 협업 필터링 (User-based CF, UBCF)
- 두 유저가 얼마나 유사한 아이템을 선호하는지
-
유저간의 유사도를 구한 뒤에 타겟 유저와 유사도가 높은 유저들이 선호하는 아이템을 추천
- 유사도가 높다 = 취향이 비슷하다 = correlation이 높다
2.2 Item-based CF (IBCF)
아이템 기반 협업 필터링 (Item-based CF, IBCF)
-
두 아이템이 유저들로부터 얼마나 유사한 평점을 받았는지
-
아이템간 유사도를 구한 뒤에 타겟 아이템과 유사도가 높은 아이템 중 선호도가 큰 아이템을 추천
2.3 Neighborhood-based CF (NBCF)
이웃 기반 협업 필터링 (Neighborhood-based CF, NBCF)
최종 목적
유저 $u$가 아이템 $i$에 부여할 평점을 예측하는 것
특징
- 구현이 간단하고 이해가 쉬움
- 아이템이나 유저가 계속 늘어날 경우 확장성이 떨어짐 (Scalability)
- 주어진 평점 / 선호도 데이터가 적을 경우, 성능이 저하됨 (Sparsity)
Sparsity
-
유저-아이템 숫자에 비해 평점, 선호도 데이터가 적은 경우를 말함
- 행렬 대부분의 원소가 비어있음 (sparse matrix, 희소 행렬)
- NBCF를 적용하려면 적어도 sparsity ratio가 99.5%를 넘지 않는 것이 좋음
- 그렇지 않을 경우에는 모델기반 CF를 사용해야함 (ex Matrix Factorization)
- sparsity ratio: 행렬 전체 원소 중 비어 있는 원소의 비율
3. K-Nearest Neighbors CF & Similarity Function
3.1 K-Nearest Neighbors (KNN) CF
NBCF의 한계
- 아이템 $i$에 대한 평점 예측을 하기 위해서는 $\Omega_i$에 속한 모든 유저와의 유사도를 구해야함
- $\Omega_i:$ 아이템 $i$에 대해 평가를 한 유저 집합
- 유저가 많아질 경우 계속해서 연산은 늘어나고 오히려 성능이 떨어지기도 함
KNN 협업 필터링(k-nearest neighbors CF, KNN CF)의 아이디어
$\Omega_i$에 속한 유저 가운데 유저 $u$와 가장 유사한 $K$명의 유저(KNN)를 이용해 평점을 예측
- 유사하다 = 유사도 값이 크다
- 보통 $K$ = 25 ~ 50을 많이 사용 / 하이퍼파라미터
3.2 Similarity Measure
유사도 측정법(Similarity Measure)
두 개체 간의 유사성을 수량화하는 실수 값 함수 혹은 척도
- 유사성에 대한 여러 정의가 존재하지만 일반적으로는 거리의 역수 개념을 사용
- 따라서 두 개체 간 거리를 어떻게 측정하느냐에 따라 유사도 측정방법이 달라짐
Mean Squared Difference Similarity
- 주어진 유저-아이템 rating에 대하여
-
추천시스템에서 주로 사용되는 유사도
- 각 기준에 대한 점수의 차이를 계산, 유사도는 유클리드 거리에 반비례
-
분모가 0이 되는 것을 방지하기 위해 분모에 1이 더해짐 (smoothing)
- 평점이 비슷할수록 $msd$ 값은 작아지게 되고 $msd_sim$의 값은 커지게 됨
- $msd$ 값이 0일 경우 $msd_sim$의 값은 1 이 된다
Cosine Similarity
- 주어진 두 벡터 X, Y에 대하여
- 두 벡터의 각도를 이용하여 구할 수 있는 유사도
- 두 벡터의 차원이 같아야 함
- 직관적으로 두 벡터가 가리키는 방향이 얼마나 유사한지를 의미함
- 두 벡터의 방향이 비슷할수록 1에 가깝고 반대일 경우 -1에 가까워짐
Pearson Similarity (Pearson Correlation
- 주어진 두 벡터 X, Y에 대하여
- 각 벡터를 표본평균으로 정규화한 뒤에 코사인 유사도를 구한 값
- (X와 Y가 함께 변하는 정도) / (X와 Y가 따로 변하는 정도)
- 1에 가까우면 양의 상관관계, 0일 경우 서로 독립, -1에 가까울 수록 음의 상관관계
Jaccard Similarity
- 주어진 두 집합 A, B에 대하여
- 집합의 개념을 사용한 유사도
- Cosine, Pearson 유사도와 달리 길이(차원)이 달라도 이론적으로 유사도 계산이 가능
- 두 집합이 같은 아이템을 얼마나 공유하고 있는지를 나타냄
- 두 집합이 가진 아이템이 모두 같으면 1
- 두 집합에 겹치는 아이템이 하나도 없으면 0
데이터와 서비스의 특징에 따라 유사도를 선택하는 것이 중요!!
4. Rating Prediction
4.1 UBCF - Absolute/Relative Rating
Weighted Average
다른 유저들의 아이템에 대한 rating의 가중 평균을 냄
유저들마다 유사도가 다를 수 있으므로 유저간의 유사도값을 각각의 가중치로 적용 \(\hat{r}(u,i)=\frac{\sum_{u^{'}\in \Omega_i}sim(u, u^{'})r(u^{'},i)}{\sum_{u^{'}\in \Omega_{i}}sim(u,u^{'})}\) Absolute Rating의 한계
- 유저가 평점을 주는 기준이 제각기 다름
- 긍정적 유저: 대부분 5점을 주고 부정적인 평가로는 3점을 줌
- 부정적 유저: 대부분 1~2점을 주고 많이 줘봐야 4점을 줌
상대적 평점(Relative Rating)의 개념
유저의 평균 평점에서 얼마나 높고 낮은지, 그 편차(Deviation)를 사용 \(dev(u,i)=r(u,i)-\overline{r_u} \ for\ known\ rating\)
Relative Rating Formula
모든 평점 데이터를 deviation 값으로 바꾼 뒤 원래의 rating이 아닌 deviation을 예측한다
predicted rating = 유저 평균 rating + predicted deviation \(dev(u, i)=r(u,i)-\overline{r_u}\ for\ known\ rating\)
\[\widehat{dev}(u,i)=\frac{\sum_{u^{'}\in \Omega_i}dev(u^{'},i)}{|\Omega_i|}=\frac{\sum_{u^{'}\in \Omega_i}r(u^{'},i)-\overline{r_{u^{'}}}}{|\Omega_i|}\] \[\hat{r}(u,i)=\bar{r}_u+\frac{\sum_{u^{i}\in \Omega_i}r(u^{'},i)-\overline{r_{u^{'}}}}{|\Omega_i|}=\overline{r_u}+\widehat{dev}(u,i)\] \[\hat{r}(u,i)=\overline{r_u}+\frac{\sum_{u^{'}\in \Omega_i}sim(u, u^{'})\{r(u^{'},i)-\overline{r_{u^{'}}}\}}{\sum_{u^{'}\in \Omega_{i}}sim(u,u^{'})}\]4.2 IBCF - Absolute/Relative Rating
아이템의 집합을 사용한다는 점이 UBCF와 다르다
Absolute Rating \(\hat{r}(u,i)=\frac{\sum_{i^{'}\in \phi_u}sim(i, i^{'})r(u,i^{'})}{\sum_{i^{'}\in \phi_{u}}sim(i,i^{'})}\) Relative Rating \(\hat{r}(u,i)=\overline{r_i}+\frac{\sum_{i^{'}\in \phi_u}sim(i, i^{'})\{r(u,i^{'})-\overline{r_{i^{'}}}\}}{\sum_{i^{'}\in \phi_{u}}sim(i,i^{'})}\)
4.3 Top-N Recommendation
CF in Recommendation System
- Collaborative Filtering의 최종 목적
- 유저 $u$가 아이템 $i$에 부여할 평점을 예측하는 것
- Recommendation System의 최종 목적
- 예측 평점이 높은 아이템을 유저에게 추천하는 것
- Top-N recommendation
Top-N Recommendation
타겟 유저에 대한 아이템의 예측 평점 계산이 완료되면 높은 순으로 정렬하여 상위 N개만 뽑아 추천
댓글남기기