JUstory
[추천시스템] Collaborative Filtering 개념 / Memory-based 본문
Collaborative Filtering (CF)
: '많은 유저들로부터 얻은 기호 정보'를 이용해 유저의 관심사를 자동으로 예측하는 방법
- 더 많은 유저/ 아이템 데이터가 축적될수록 협업의 효과는 커지고 추천은 정확해질 것이란 가정에서 출발
최종 목적 : 유저 u가 아이템 i에 부여할 평점을 예측하는 것
방법
1. 주어진 데이터를 활용해 유저- 아이템 행렬을 생성한다.
2. 유사도 기준을 정하고, 유저 혹은 아이템 간의 유사도를 구한다.
3. 주어진 평점과 유사도를 활용하여 행렬의 비어 있는 값(평점)을 예측한다.
CF 기반 추천 시스템의 원리
: 유전 A와 비슷한 취향을 가진 유저들이 선호하는 아이템을 추천
- 아이템이 가진 속성을 사용하지 않으면서도 높은 추천 성능을 보임
Properties of CF
전통적인 classification 및 regression 태스크의 일반화 케이스로 볼 수 있다.
1. Label과 feature의 구분이 모호함; feature과 label 역할이 column별로 고정된 classification 및 regression과 달리, 모든 column이 각 example에서 feature이자 label로 기능할 수 있음 (row도 user feature로 볼 수 있음)
2. Training / testing의 구분이 row-wise가 아닌 entry-wise로 이루어짐
CF에서 cold-start problem이 존재하는 이유
cold-start problem; 이력이 없는 새로운 사용자/ 아이템, 또는 매우 적은 이력만 가지고 있는 사용자/ 아이템에 대한 추천이 어려운 문제
새로운 행이나 열이 추가되는 상황에 해당함. 추가된 행이나 열은 기존의 학습된 모델에서 사용하던 feature에 대응하지 않음
CF와 CB는 각각의 장단점으로 인해 서로 보완적인 특성을 지니며, 두 방법의 장점을 모두 취하고자 함께 사용되기도 함
(Hybrid methods = CF + CB)
Collaborative Filtering | Content-based | |
Cold-start problem | Both for new users and new items | Only for new users (new items can handled) |
Interpretable explanation | No | Yes (in terms of features) |
Quality of recommendations | Often suffer from popularity bias | Obvious result of recommendations |
분류
- Neighborhood - based CF (Memory-based CF)
- Model - based CF
- Hybrid CF
Memory-based | Model-based | |
Training and Inference Complexity | - Training 필요 없음 - Inference를 위해서 많은 양의 Offline 계산 (similar-item tagbles를 만드는 작업)이 요구됨 |
- 모델 학습을 위해 값비싼 offline training이 요구됨 - 한번 학습된 후에는 비교적 빠르게 inference 가능함 |
Interpretability | - Interacion 데이터 기반의 similarity를 계산하여 활용하기 때문에 추천의 이유에 대해 직관적인 설명을 제공 | - Parametric 모델의 특성 상 black-box인 측면이 있음 |
Accuracy | - 직접적으로 accuracy 메트릭을 최적화하지 않으므로 불리함 (휴리스틱 방법의 한계) | - MSE 등의 objective/ function을 직접적으로 최적화하므로 유리함 |
Neighborhood-based CF
User - based CF (UBCF)
유저 기반 협업 필터링 : 두 유저가 얼마나 유사한 아이템을 선호하는가?
유저 간 유사도를 구한 뒤, 타겟 유저와 유사도가 높은 유저들이 선호하는 아이템을 추천
Item - based CF (IBCF)
아이템 기반 협업 필터링 : 두 아이템이 유저들로부터 얼마나 유사한 평점을 받았는가?
아이템 간 유사도를 구한 뒤, 타겟 아이템과 유사도가 높은 아이템 중 선호도가 큰 아이템을 추천
Neighborhood - based CF (NBCF) ; 이웃 기반 협업 필터링
최종 목적 : 유저 u가 아이템 i에 부여할 평점을 예측하는 것
특징
- 구현이 간단하고 이해가 쉽다.
- 아이템이나 유저가 계속 늘어날 경우 확장성이 떨어진다. (Scalability)
- 주어진 평점 / 선호도 데이터가 적을 경우, 성능이 저하된다. (Sparsity)
NBCF를 적용하려면 적어도 sparsity ratio*가 99.5%를 넘지 않는 것이 좋음
- 그렇지 않을 경우 모델 기반 CF를 사용해야 함 (ex. MF)
* sparsity ratio: 행렬 전체 원소 중 비어 있는 원소의 비율
K-Nearest Neighbors CF (KNN CF) & Smilarity Function
NBCF의 한계
아이템 i에 대한 평점 예측을 하기 위해서는, 아이템 i에 대해 평가를 한 모든 유저와의 유사도를 구해야 함
그런데, 유저가 많아질 경우 계속해서 연산은 늘어나고 오히려 성능이 떨어지기도 함
KNN 협업 필터링의 아이디어
아이템 i에 대해 평가를 한 모든 유저 가운데 유저 u와 가장 유사한 K명의 유저 (KNN)를 이용해 평점을 예측
- 유사하다는 것은 우리가 정의한 유사도 값이 크다는 것을 의미
- 보통 K = 25~50 을 많이 사용함/ 직접 튜닝해야하는 하이퍼파라미터
1-NN CF
: 유저 B가 가장 유사한 1명인 유저 A의 평점 데이터를 이용해 평점 예측
유사도 측정법 (Smilarity Measure)
: 두 개체 간의 유사성을 수량화하는 실수 값 함수 혹은 척도
- 유사성에 대한 여러 정의가 존재하지만, 일반적으로는 거리의 역수 개념을 사용
따라서 두 개체 간 거리를 어떻게 측정하느냐에 따라 유사도 측정방법이 달라짐
Mean - Squared Difference Similarity
각 기준에 대한 점수의 차이를 계산, 유사도는 유클리드 거리에 반비례
분모가 0이 되는 것을 방지하기 위해 분모에 1이 더해짐 (smoothing)
Cosine Smilarity
두 벡터의 각도를 이용하여 구할 수 있는 유사도 (두 벡터의 차원이 같아야 함)
직관적으로 두 벡터가 가리키는 방향이 얼마나 유사한지를 의미
Pearson Smilarity (Pearson Correlation)
각 벡터를 표본평균으로 정규화한 뒤에 코사인 유사도를 구한 값
- 직관적으로 해석하면 (X와 Y가 함께 변하는 정도) / (X와 Y가 따로 변하는 정도)
- 1에 가까우면 양의 상관관계, 0일 경우 서로 독립, -1에 가까울수록 음의 상관관계를 나타냄
Jacard Similarity
집합의 개념을 사용한 유사도
- Cosine, Pearson 유사도와 달리 길이 (차원)이 달라도 이론적으로 유사도 계산 가능
- 두 집합이 같은 아이템을 얼마나 공유하고 있는지를 나타냄 (모두 같으면 1, 안겹치면 0)
우리에게 주어진 데이터, 서비스의 특징을 고려해서 무엇을 사용할지 고르거나,
offline test를 거쳐서 가장 좋은 성능을 보인 유사도를 고르는 것이 일반적
Rating Prediction
Average
: 다른 유저들의 평점을 rating 평균을 냄
Weighted Average
: 유저 간의 유사도 값을 가중치로 사용하여 rating의 평균을 냄
Absolute Rating Fomula
Absolute Rating의 한계
: 유저가 평점을 주는 기준이 제각기 다름
상대적 평점(Relative Rating)의 개념
: 유저의 평균 평점에서 얼마나 높은지 혹은 낮은지, 그 편차를 사용함
Relative Rating Formula
: 모든 평점 데이터를 deviation 값으로 바꾼 뒤, 원래의 rating이 아닌 deviation을 예측한다.
예측한 deviation을 기존의 avearage rating에 더해준다.
예측 평점이 높은 아이템을 유저에게 추천 - > Top-N Recommendation -> 추천 완료!!
'딥러닝' 카테고리의 다른 글
[추천시스템] Item2Vec / ANN (0) | 2024.11.04 |
---|---|
[추천시스템] Collaborative Filtering_Model-based (0) | 2024.11.04 |
[추천시스템] 연관분석 / 컨텐츠 기반 추천 (0) | 2024.10.30 |
[추천시스템] 개요/ 평가지표/ 인기도 기반 추천 (5) | 2024.10.29 |
[딥러닝] 정규화 기법 (0) | 2024.10.14 |