-
[추천시스템] 1. User-User Collaborative FilteringDeep Learning/Recommender System 2021. 2. 17. 02:38
Reference
강의 : Minnesota 대학교 Nearest Neighbor Collaborative Filtering 코세라 강좌
블로그 : exmemory.tistory.com/56
Intro
협업 필터링에는 최근접 이웃 기반과 잠재요인 협업 필터링이 있는데 오늘 공부할 내용은 최근접 이웃 기반이다.
협업 필터링은 user-behabior(rating, 구매 이력 등)을 기반으로 추천을 진행한다. 최근접 이웃 기반의 목표는 User-Item matrix에서 사용자가 아직 평가하지 않은 아이템을 예측하는 것이 목표다. 이를 위해 행렬을 만들면 굉장히 sparse한 형태가 나와 공간이 낭비되는 문제가 발생한다.
이 최근접 이웃 기반은 2가지로 나뉘는데,
- 사용자 기반 : 비슷한 사용자들은 어떤 item을 소비했다
- 아이템 기반 : 어떤 item을 소비한 사용자들은 특정 상품을 구매했다.
다음과 같이 User과 Item에 대해 score를 표시해보자.S(u, i) = sum of (rating) / number of users여기서 각 rating에 대해 weight를 준다면 어떤 weight를 주어야 할까?-> 바로 similarity이다. 비슷한 사람은 비슷한 item을 선호하고 추천의 정확도는 높아진다. 당연하다.Score function
왜 각 rating에 평균을 빼고 가중치를 곱해줬을까? - 사용자의 유형이 달라 rating의 scale이 다 다르기 때문
: 사용자의 rating을 normalize해주는 과정이라 할 수 있다.
Weight
코사인 유사도를 사용하여 user끼리 얼마나 비슷한 취향을 가졌는지 구한다. 모든 user들에 대하여 유사도를 계산한다.
Neighborhood for User (K)
모든 user들에 대해 유사도를 계산하고 나면, k 값을 지정하여 가장 비슷한 이웃들을 반환하는 함수를 만든다.
최종 S(u,i) 구하기
최종 스코어를 계산하여, target user가 아직 경험하지 않은 item에 대한 rating을 예측한다.
Filtering 과정을 정리하면, (Configuring)
1. Neighborhoods 선택하기
적당한 사이즈의 이웃들은 선택해야 함. 너무 많으면 signal보다 noise를 줌.
2. Scoring Items from Neighborhoods
- 평균
- 가중 평균
- 다중 선형 회귀
3. Normalizing Data
4. Computing Similarities
- Algorithms : Pearson 상관계수 -> 데이터가 매우 적다면? -> Spearman rank 상관계수
- Tweaks : 유사도에 가중치를 둠
5. Good Baseline Configuration
'Deep Learning > Recommender System' 카테고리의 다른 글
[추천시스템/뉴스추천] KDD-2019 NPA : Neural News Recommendation with Personalized Attention 논문 리뷰 (0) 2021.09.17 [추천시스템] 3. Evaluation and Metrics (0) 2021.02.25 [추천시스템] 2. Item-Item Collaborative Filtering (0) 2021.02.18 [추시 질문 모음] Predictions and Recommendations (0) 2021.02.03