AI_ML

[Boostcamp AI Tech] Collaborative Filtering

썬2 2022. 4. 3. 01:07

1. Collaborative Filering (CF)

  • CF란?: 많은 유저들로부터 얻은 선호 정보를 이용해 유저의 관심사를 자동으로 예측하는 방법.
  • 최종 목적: 유저 u가 아이템 i에 부여할 평점 예측
  • CF의 방법: 유저-아이템 행렬 생성 -> 유저 or 아이템 간의 유사도 구하기 -> 주어진 평점과 유사도를 활용하여 비어있는 값(평점) 예측
  • CF의 원리: 취향이 비슷한 유저들끼리 선호하는 아이템을 추천한다.
  • CF의 종류:
    • Neighborhood-based CF: User-based or Item-based
    • Model-based CF: Non-parametric(KNN, SVD), Matrix Factorization, Deep Learning
    • Hybrid CF: Content-baed Recsys과 결합

 

2. Neighborhood-based CF:

  • UBCF (User-based CF): 유저 간 유사도를 구한 뒤, 유저와 유사도가 높은 유저들이 선호하는 아이템을 추천
  • IBCF (Item-based CF): 아이템간 유사도를 구한 뒤, 타겟 아이템과 유사도가 높은 아이템 중 선호도가 큰 아이템을 추천.
  • NBCF (Neighborhood-based CF): 
    • 구현이 간단하고 이해하기 쉬우나, 수가 늘어날 수록 확장성이 떨어지고, sparsity ratio가 99.5%이하여야된다.
    • 99.5%가 넘으면 모델 기반 CF인 matrix factorization 활용 권장.

 

3. K-Nearest Neighbors CF

  • 유저 가운데 타겟 유저와 가장 유사한 K명의 유저를 이요해 평점을 예측한다.
  • Similarity measure:
    • Mean Squared Difference Similarity
    • Cosine Similarity
    • Pearson Similarity (Pearson Correlation)
    • Jaccard Similarity

 

4. Rating Prediction

  • UBCF_Absolute Rating:
    • Average: 다른 유저들의 타겟 아이템에 대한 rating을 같은 비중으로 평균을 낸다.
    • Weighted Average: 유저 간의 유사도 값을 가중치로 사용하여 rating의 평균을 낸다

 

  • UBCF_Relative Rating:
    • 그런데, 유저가 평점을 주는 기준은 제각기 다르다. 그렇기에 그 편차(Deviation)를 사용하자.
    • 모든 평점 데이터를 편차 값으로 바꾼 뒤 원래의 rating이 아닌 deviation을 예측.
  • IBCF_Absolute Rating:
    • Weighted Average
  • IBCF_Relative Rating
  • Top-N Recommendation: 예측 평점 계산을 높은 순으로 정렬하여 상위 N개만 뽑아 추천하기.

 

 

 

 

5. Model Based CF

  • 항목간 유사성을 단순 비교에서 벗어나, 데이터에 숨겨진 유저-아이템 관계의 잠재적 특성/패턴을 찾는다.
  • Paramettric ML을 사용, 주어진 데이터를 사용하여 모델을 학습하고 최적화를 통해 업데이트한다.
  • NBCF는 유저/아이템 벡터를 데이터를 통해 계산된 형태로 저장하지만, MF CF는 유저, 아이템 벡터는 모두 학습을 통해 변하는 파라미터이다.
  • 장점:
    1. 학습된 모델로 추천해서 서빙 속도가 빠르다.
    2. NBCF의 단점인 Sparsity, Scalability 문제를 개선한다.
    3. Overfitting을 방지한다. (NBCF는 특정 주변 이웃에 크게 영향을 받는다.)
    4. Limited Coverage 극복: NBCF 유사도 값이 정확하지 않으면 이웃의 효과를 보기 어렵다.
  • Latent Factor:
    • 유저와 아이템 관계를 잠재적 요인으로 표현. (유저-아이템 행렬을 저차원 행렬로 분해)
  • SVD, MF(SGD, ALS, BPR)

 

6. Singular Value Decomposition (SVD)

Rating Matrix R에 대해 유저와 아이템의 잠재 요인을 포함할 수 있는 행렬로 분해한다.

U: 유저 잠재 요인 행렬로 유저와 latent factor의 관계를 나타낸다.

𝛴 : 잠재 요인 대각행렬로 latent factor의 중요도를 나타낸다.

V: 아이템 잠재 요인 행렬로 아이템과 latent factor의 관계를 나타낸다.

한계점: 결측된 엔트리를 모두 채우는 imputation을 통해 dense matrix를 만들어서 SVD를 수행하는데, 정확하지 않은 imputation은 데이터를 왜곡시키고 예측 성능을 떨어트린다. (엔트리가 매우 적을 때 SVD 사용하면 과적합된다.)

 

7. Matrix Factorization (MF)

위 한계점을 바탕으로 SVD의 원리를 차용한 다른 접근 방법인 MF.

차이점: 관측된 선호도(평점)만 모델링하여 관측되지 않은 선호도를 예측하는 일반적인 모델 만들기.

Rating Matrix인 R을 P와 Q로 분해하여 R과 최대한 유사하게 R^을 최적화한다.

MF + a: 기본적인 MF에 다양한 테크닉 추가하여 성능 향상시키기.

1. 전체 평균, 유저/아이템의 Biases를 추가하여 예측 성능 높이기. (평점을 짜게 주어 편향이 생길 수 있기에)

2. 신뢰도 추가하기: (모든 평점이 같은 신뢰도를 갖지 않을 수 있다: 대규모 광고, 평점이 정확하지 않을 때)

3. 시간 변화 추가하기: 시간에 따라 변화하는 유저, 아이템의 특성을 반영하고 싶을 때

 

 

8. MF for Implicit Feedback

Alternative Least Square (ALS)

  • 유저와 아이템 매트릭스 중 하나를 상수로 놓고 나머지 매트릭스를 번갈아가며 업데이트하기.
  • 대용량 데이터를 병렬 처리해서 빠른 학습이 가능.

  • 유저 u가 아이템 i를 선호하는지를 binary로 표현한다.
  • c_u,i로 유저 u가 아이템 i를 선호하는 정도를 나타내는 increasing function -> confidence를 표현.

 

9. Bayesian Personalized Ranking (BPR)

  • 베이지안 추론에 기반, implicit data를 사용해 서로 다른 아이템에 대한 유저의 선호도를 반영.
  • Personalized ranking이란?
    • 유저가 item i보다 item j를 더 선호한다면 해당 정보를 MF의 파라미터에 학습 반영.
    • 유저의 아이템에 대한 선호도 랭킹을 생성하여 이를 반영.
  • 가정:
    1. 관측된 아이템을 관측되지 않은 item보다 선호한다.
    2. 관측된 아이템끼리는 선호도를 추론할 수 없다.
    3. 관측되지 않은 아이템끼리도 선호도를 추론할 수 없다.
  • 최대 사후 확률 추정 (Maximum A Posterior)
    • Bayes 정리에 의해, Posterior를 최대화 하면 주어진 유저 선호 정보를 최대한 잘 나타내는 파라미터를 추정할 수 있다.
    • LEARNBPR이라는 Bootstrap 기반의 SGD를 활용해 파라미터를 업데이트한다.
    • Matrix Factorization에 BPR Optimization을 적용한 결과 성능 우수하다.