recommend system : 토크ON세미나 _ SKplanet Tacademy 정리
url : https://www.youtube.com/watch?v=43gb7WK56Sk&ab_channel=SKplanetTacademy
4강 -협업 필터링 (KNN, SGD, ALS)
3강 생략
아는내용 생략
- 정의
사용자의 구매 패턴이나 평점을 가지고 다른 사람들의 구매 패턴, 평점을 통해서 추천을 하는 방법.
추가적인 사요앚의 개인정보나 아이템의 정보가 없이도 추천할 수 있는게 큰 장점이며 2006년부터 2009년동안 열린 Netflix Prize Competition에서 우숭한 알고리즘
- 종류
최근접 이웃기반
잠재요인 기반
Neighborhood based method
- 정의
메모리 기반 알고리즘으로 협업 필터링을 위해 개발된 초기 알고리즘.
- 알고리즘
- User-based collaborative filtering
사용자의 구매 패턴(평점)과 유사한 사용자를 찾아서 추천 리스트 생성
- Item-based collaborative filtering
특정 사용자가 준 점수간의 유사한 상품을 찾아서 추천 리스트 생성
- 장점
간단하고 직관적인 접근 방식 때문에 구현 및 디버그가 쉬움
특정 Item을 추천하는 이유를 정당화하기 쉽고 Item 기반 방법의 해석 가능성이 두드러짐
추천 리스트에 새로운 item과 user가 추가되어도 상대적으로 안정적
- 단점
User 기반 방법의 시간, 속도, 메모리가 많이 필요
희소성 때문에 제한된 번위가 있음
-> John의 Top-K 에만 관심이 있음 (많이 보는 상품은 다 많이보게 되는 문제)
-> John과 비슷한 이웃중에서 아무도 평가를 하지 않으면, 해당 상품은 등급 예측을 제공할 수 없음
Latent Factor Collborative Filtering
- 정의
잠재 요인 협업 필터링은 Rating Matrix에서 빈 공간을 채우기 위해서 사용자와 상ㅁ풍르 잘 표현하는 차원(Latent Factor)을 찾는 방법
잘 알려진 행렬 분해는 추천 시스템에서 사용되는 협업 필터링 알고리즘
- 원리
사용자의 잠재요인과 아이템의 잠재요인을 내적해서 평점 매트릭스를 계싼
SVD, SGD, ALS 등등이 있음
- SGD
- 정의
고유값 분해(eigen value Decomposition)와 같은 행렬을 대각화 하는 방법
- 실행 순서
1. User Latent 와 Item Latent의 임의로 초기화
2. User Latent 와 Item Latent를 매트릭스 곱한 내요을 Gradient Descent 진행
- 장점
매우 유연한 모델로 다른 Loss function을 사용할 수 있음
parallelized가 가능함
- 단점
수렴까지 속도가 매우 느림
- ALS
- 정의
기존의 SGD가 두개의 행렬(User Latent, Item Latent)을 동시에 최적화 -> ALS는 두 행렬 중 하나를 고정하키고 다른 하나의 행렬을 순차적으로 반복하면서 최적화를 진행
- 실행 순서
1. 초기 아이템, 사용자 행렬을 초기화
2. 아이템 행렬을 고정하고 사용자 행렬을 최적화
3. 사용자 행렬을 고정하고 아이템 행렬을 최적화
4. 위의 2~3 과정을 반복
위 방식을 사용하면 수식을 이용하면 답이 정해져 있어서 빠르게 최적호 ㅏ가능
- 협업 필터링
- 장점
도메인 지식이 필요하지 않음
사용자의 새로운 흥미를 발견하기 좋음
시작단계의 모델로 선택하기 좋음
- 단점
새로운 아이템에 대해서 다루기가 힘듬
side features(고객 정보, 추가 정보, 메타 정보)를 포함시키기 어려움
평가함수
- 평가함수를 알아야 하는 이유
모델에 대한 평가를 위해
도메인이나 목적에 맞는 평가함수가 필요
- MAP
AP : Precision @k's를 평균낸 값 (추천한 K개의 영화의 Precision을 평균)
MAP : N명의 사용자의 AP를 평균낸 값
- NDCG(Normalized Discounted Cumulative Gain)
검색알고리즘에서 주로 사용됨
- CG(Cumulative Gain)
추천 해준경우 얼마나 맞은건지를 계산
- DCG
정규화 과정을 취해서 앞에서 맞을수록 분모값이 더 작아지게 해서 CG에서 맞춘 순서에 중요성을 더한 알고리즘
- NDCG
DCG는 추천결과의 위치를 고혀할 때 다양한 요인에 따라 권장 사항 수가 상요자수마다 다를 수 있음.
DCG는 권장 사항의 수에 따라 결과가 달라지는 문제 발생(사람마다 추천해줘야 하는 갯수가 다를 수 있음) -> 정규화 필요성이 있음
NDCG = DCG / iDCG
iDCG는 이상적인 순서에서 얼마만큼의 값을 가지는지