Note

협업 필터링 ( Collaborative Filtering, CF ) 본문

Machine Learning/Recommender system

협업 필터링 ( Collaborative Filtering, CF )

알 수 없는 사용자 2021. 8. 9. 01:07
728x90

협업 필터링의 유형은 최근접 이웃 기반은 크게 사용자 기반과 아이템 기반으로 나뉜다.

 

최근접 이웃 기반

 

사용자 기반 

  • 특정 사용자와 비슷한 고객들을 기반으로 비슷한 고객들이 선호하는 또 다른 상품을 추천한다.
  • 특정 사용자와 비슷한 상품을 구매해온 고객들은 비슷한 부류의 고객으로 간주한다.
  • 예시) 비슷한 고객들이 구매한 상품 목록

 

아이템 기반

  • 특정 상품과 유사한 좋은 평가를 받은 비슷한 상품을 추천한다.
  • 사용자들에게 특정 상품과 비슷한 평가를 받은 품목들은 비슷한 상품으로 간주한다.
  • 예시) 상품을 구매한 다른 고객들이 구매한 다른 상품 목록

 

일반적으로 사용자 기반보다는 아이템 기반이 더 사용된다.

같은 상품을 구매한 사람을 유사한 사람으로 판단하기 어렵기 때문이다.

 

CF 구현 순서

  1. 아이템 - 사용자 행렬 데이터로 변환
  2. 아이템 간 유사도 산출 - 코사인 유사도, 피어슨 상관계수 등등
  3. 사용자가 구매하지 않은 아이템들 중에서 아이템 유사도를 반영한 예측 점수 계산
  4. 예측 점수가 높은 순으로 추천

 

잠재 요인 기반 

  • Rating Matrix에서 빈 공간을 채우기 위해 사용자와 상품을 잘 표현하는 차원 ( Latent Factor ) 을 찾는 방법이다.
  • 행렬 분해 알고리즘은 사용자와 아이템 상호 작용 행렬을 두 개의 저 차원 직사각형 행렬의 곱으로 분해하여 작동한다.
  • Netflix 챌린지를 통해 알려지게 된 알고리즘이다.

 

SVD : 행렬을 대각화 하는 방법.

한계

  • 데이터에 결측치가 없어야 한다.
  • 대부분의 현업 데이터는 Sparse 한 데이터다.

 

SGD : 행렬을 대각화 하는 방법인 SVD에 Gradient Descent를 추가한 방법.

  1. 유저 잠재요인과 아이템 잠재요인을 임의로 초기화한다.
  2. Gradient Descent를 사용하여 최적의 값을 찾는다.

장점

  • 매우 유연하다.
  • 다른 비용 함수를 사용할 수 있다.
  • 병렬화가 가능하다.

단점

  • 수렴하는 속도가 매우 느리다.

 

ALS

기존의 SGD가 두개의 행렬을 동시에 최적화한다면, ALS는 두 행렬 중 하나를 고정시키고 다른 하나의 행렬을 순차적으로 반복하면서 최적화하는 방법이다.

기존 최적화 문제가 convex 형태로 바뀌기 때문에 수렴된 행렬을 찾을 수 있다.

장점

  • SGD보다 수렴속도가 빠르다.
  • 병렬화가 가능하다.

단점

  • 오직 Loss Squares만 사용 가능하다.

 

협업 필터링 장점

  • 간단하고 직관적인 접근 방식 때문에 구현 및 디버그가 쉽다.
  • 특정 아이템을 추천하는 이유를 정당화하기 쉽다.
  • 새로운 아이템과 유저가 추가되어도 상대적으로 안정적이다.

협업 필터링 단점

  • 유저 기반 방법의 시간, 속도, 메모리가 많이 필요하다.
  • 희소성 때문에 제한된 범위가 있다.

 

'Machine Learning > Recommender system' 카테고리의 다른 글

Surprise 패키지  (0) 2021.09.15
FP - Growth 알고리즘  (0) 2021.07.29
Apriori 알고리즘  (0) 2021.07.27
연관분석 (Association Analysis)  (0) 2021.07.27
추천시스템 개요  (0) 2021.07.25
Comments