Note
협업 필터링 ( Collaborative Filtering, CF ) 본문
Machine Learning/Recommender system
협업 필터링 ( Collaborative Filtering, CF )
알 수 없는 사용자 2021. 8. 9. 01:07728x90
협업 필터링의 유형은 최근접 이웃 기반은 크게 사용자 기반과 아이템 기반으로 나뉜다.
최근접 이웃 기반
사용자 기반
- 특정 사용자와 비슷한 고객들을 기반으로 비슷한 고객들이 선호하는 또 다른 상품을 추천한다.
- 특정 사용자와 비슷한 상품을 구매해온 고객들은 비슷한 부류의 고객으로 간주한다.
- 예시) 비슷한 고객들이 구매한 상품 목록
아이템 기반
- 특정 상품과 유사한 좋은 평가를 받은 비슷한 상품을 추천한다.
- 사용자들에게 특정 상품과 비슷한 평가를 받은 품목들은 비슷한 상품으로 간주한다.
- 예시) 상품을 구매한 다른 고객들이 구매한 다른 상품 목록
일반적으로 사용자 기반보다는 아이템 기반이 더 사용된다.
같은 상품을 구매한 사람을 유사한 사람으로 판단하기 어렵기 때문이다.
CF 구현 순서
- 아이템 - 사용자 행렬 데이터로 변환
- 아이템 간 유사도 산출 - 코사인 유사도, 피어슨 상관계수 등등
- 사용자가 구매하지 않은 아이템들 중에서 아이템 유사도를 반영한 예측 점수 계산
- 예측 점수가 높은 순으로 추천
잠재 요인 기반
- Rating Matrix에서 빈 공간을 채우기 위해 사용자와 상품을 잘 표현하는 차원 ( Latent Factor ) 을 찾는 방법이다.
- 행렬 분해 알고리즘은 사용자와 아이템 상호 작용 행렬을 두 개의 저 차원 직사각형 행렬의 곱으로 분해하여 작동한다.
- Netflix 챌린지를 통해 알려지게 된 알고리즘이다.
SVD : 행렬을 대각화 하는 방법.
한계
- 데이터에 결측치가 없어야 한다.
- 대부분의 현업 데이터는 Sparse 한 데이터다.
SGD : 행렬을 대각화 하는 방법인 SVD에 Gradient Descent를 추가한 방법.
- 유저 잠재요인과 아이템 잠재요인을 임의로 초기화한다.
- 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