사용자의 구매 패턴이나 평점을 가지고 다른 사람들의 구매 패턴, 평점을 통해서 추천을 하는 방법
추가적인 사용자의 개인정보나 아이템의 점보가 없이도 추천할 수 있는게 큰 장점
종류 - 최근접 이웃기반, 잠재 요인기반
이웃기반 협업 필터링은 메모리 기반 알고리즘으로 협업 필터링을 위해 개발되었다
알고리즘
1. User-based collaborative filtering
사용자의 구매 패턴(평점)과 유사한 사용자를 찾아서 추천 리스트 생성
-> 유사한 사람을 찾는
장점
간단하고 직관적인 접근 방식 때문에 구현 및 디버그가 쉬움
특정 Item을 추천하는 이유를 정당화하기 쉽고 Item기반 방법의 해석 가능성이 두드러짐
추천 리스트에 새로운 item과 user가 추가되어도 상대적으로 안정적
단점
User 기반 방법의 시간, 속도, 메모리가 많이 필요
희소성 떄문에 제한된 범위가 있음
Rating Matrix에서 빈 공산을 채우기위해 사용자와 상품을 잘 표현하는 차원을 찾는 방법(ex 행렬분해). 행렬 분해는 추천 시스템에서 사용되는 협업 필터링 알고리즘을 한 종류로 사용자-아이템 상호 작용 행렬을 두 개의 저차원 직사각형 행렬의 곱으로 분해하여 작동
고유값 분해와 같은 행렬을 대각화 하는 방법
Rating Matrix R과 User latent matrix U와 Item latent matrix V 내적의 차이를 최소화하는 U, V를 찾음
Gradient Descent를 통해 U, V를 업데이트

Gradient Descent를 통해 J를 U, V로 편미분한 값

기울기 폭주 방지를 위해 규제항 추가해야 한다

편미분한 값을 이용해 한 번의 에포크로 각 Latent Matrix의 원소를 업데이트
SGD는 User Latent, Item Latent 두 개의 행렬을 최적화하는 방버
ALS는 두 행렬 중 하나를 고정시키고 다른 하나의 행렬을 순차적으로 반복하면서 최적화하는 방법 -> 기존의 최적화 문제가 convex형태로 바뀌기 때문에 수렴된 행렬을 찾을 수 있다