반응형
T아카데미에서 오픈된 토크ON세미나 강연 동영상을 보고 정리해보았다.
협업필터링
- 사용자의 구매 패턴이나 평점을 가지고 다른 사람들의 구매 패턴, 평점을 통해서 추천을 하는 방법이다.
- 추가적인 사용자의 개인정보나 아이템의 정보가 없이도 추천할 수 있는게 큰 장점이다.
- Netflix Prize Competition(2006-2009) 우승 알고리즘
- 최근접 이웃기반 (Neighborhood based method - KNN) / 잠재 요인기반 (Lantent Factor Collaborative Filtering)
[장점]
- 도메인 지식이 필요하지 않다.
- 사용자의 새로운 흥미를 발견하기 좋다.
- 시작단계의 모델로 선택하기 좋다. (추가적인 문맥정보들의 필요가 없다)
- baseline으로 적용하고, 후에 컨텐츠 기반, 다른 딥러닝, 통계기반 모델들과 결합한다.
[단점]
- 새로운 아이템에 대해서 다루기가 힘들다.
- side features(고객의 개인정보, 아이템의 추가정보)를 포함시키기 어렵다.
Neighborhood based method - KNN
- Neighborhood based Collaborative Filtering은 메모리 기반 알고리즘으로 협업 필터링을 위해 개발된 초기 알고리즘이다.
- 데이터 (Explicit Feedback) : 유저가 직접적으로 선호도를 표현 (평점이 존재)
[알고리즘]
1. User-based collaborative filtering
- 사용자의 구매 패턴(평점)과 유사한 사용자를 찾아서 추천 리스트 생성
- 유저가 자신의 선호도를 직접적으로 표현한 데이터
- 원래 평점을 잘 주는 사용자의 bias term을 제거해주어야 한다.
2. Item-based collaborative filtering
- 특정 사용자가 준 점수간의 유사한 상품을 찾아서 추천 리스트 생성
- 유저가 자신의 선호도를 직접적으로 표현한 데이터
- 마찬가지로 bian term 제거해주어야한다.
[장점]
- 간단하고 직관적인 접근 방식 때문에 구현 및 디버그가 쉽다.
- 특정 Item을 추천하는 이유를 정당화하기 쉽고 Item 기반 방법의 해석 가능성이 두드러진다.
- 추천 리스트에 새로운 item과 user가 추가되어도 상대적으로 안정적이다.
[단점]
- User 기반 방법의 시간, 속도, 메모리가 많이 필요하다.
- 희소성 때문에 제한된 범위가 있다.
- John의 Top-K에만 관심이 있다.
- John과 비슷한 이웃중에서 아무도 해리포터를 평가하지 않으면, John의 해리포터에 대한 등급 예측을 제공할 수 없다.
- 빈익빈 부익부 : 많이 보는 상품은 다 많이 보고, 적게 보는 상품은 다 적게 보는 식으로 예측된다.
- 컨텐츠 기반의 모델을 통해 상호보완한다.
Lantent Factor Collaborative Filtering
- 이웃 기반의 협업 필터링은 Item Space와 User Space간에 유사도를 통해 모델이 구성되고, 잠잭 요인 기반 협업 필터링은 Item Space의 Latent Space와 User Space의 Latent Space 벡터의 곱으로 구성된다.
- 잠재 요인 협업 필터링은 Rating Matrix에서 빈 공간을 채우기 위해서 사용자의 상품을 잘 표현하는 차원(Latent Factor)을 찾는 방법이다.
- 잘 알려진 행렬 분해는 추천 시스템에서 사용되는 협업 필터링 알고리즘의 한 종류이다.
- 행렬 분해 알고리즘은 사용자-아이템 상호 작용 행렬을 두 개의 저 차원 직사각형 행렬의 곱으로 분해하여 작동한다.
- SVD / SGD / ALS
[알고리즘]
1. SGD
- 고유값 분해(eigen value Decomposition)와 같은 행렬을 대각화 하는 방법이다.
- Regularization term을 더해줘서 weight가 폭발하는것을 방지한다.
[알고리즘]
1. User Latent와 Item Latent을 임의로 초기화
2. Gradient Descent 진행 (regularization 적용) - Back Propagation
3. 모든 평점에 대해서 반복 (epoch : 1)
4. 2~3 과정을 10번 반복 (epoch : 10) - total cost 떨어지며 값이 비슷하게 수렴.
5. 4를 바탕으로 예측 (높은 평점을 추천 , 마이너스는 추천x)
[장점]
- 매우 유연한 모델로 다른 Loss function을 사용할 수 있다.
- parallelized가 가능하다 (분산처리가 가능)
[단점]
- 수렴까지 속도가 매우 느리다. (좋은 딥러닝 모델을 사용하면 극복 가능)
2. ALS
- 기존의 SGD가 두개의 행렬 (User Latent, Item Latent)을 동시에 최적화하는 방법이라면, ALS는 두 행렬 중 하나를 고정시키고 다른 하나의 행렬을 순차적으로 반복하면서 최적화하는 방법이다. 이렇게 하면, 기존의 최적화 문제가 convex형태로 바뀌기에 수렴된 행렬을 찾을 수 있는 장점이 있다.
- 값을 다 알고 있고, 식에 대입만 하면 되기때문에, 되게 간단하다.
[알고리즘]
1. 초기 아이템, 사용자 행렬을 초기화 (?는 0으로 설정)
2. 아이템 행렬을 고정하고 사용자 행렬을 최적화
3. 사용자 행렬을 고정하고 아이템 행렬을 최적화
4. 위 2~3과정을 반복
[장점]
- SGD보다 수렴속도가 빠르다.
- parallelized가 가능하다 (분산처리가 가능)
[단점]
- 오직 Loss Squares만 사용 가능하다.
[실습 링크]
https://www.kaggle.com/chocozzz/00-sgd-1
https://www.kaggle.com/chocozzz/00-als
https://github.com/yoonsungsong/TIL/tree/main/RecommenderSytem
Reference :
https://www.youtube.com/watch?v=TFbTU9VG3is
반응형
'Data Analysis > Recommender System' 카테고리의 다른 글
[Recommender System] 5. 평가함수 (Accuracy, MAP, NDCG) (0) | 2021.11.08 |
---|---|
[Recommender System] 3. 컨텐츠 기반 모델 (Word2Vec(CBOW, Skip-gram) (0) | 2021.11.07 |
[Recommender System] 2. 컨텐츠 기반 모델 (유사도 함수, TF-IDF) (0) | 2021.11.06 |
[Recommender System] 1.추천시스템의 이해 (연관분석, Apriori, FP-Growth) (0) | 2021.11.04 |