본문 바로가기

추천 시스템/Collaborative Filtering

Collaborative Filtering(CF: 협업필터링)1: 개요

CF에 관한 내용들이 많아서 1과 2로 나눠서 게시했다.

1은 CF의 특징, 개념에 관한 내용이고, 2는 CF를 어떻게 계산하는지에 대한 직접적인 유도를 하는 내용이다.

관련한 모델 또한 추가로 정리했다. 

 

Collaborative Filtering: 유사도 계산법

 

Collaborative Filtering(CF: 협업필터링)2: 유사도 계산법

Collaborative Filterting1: 개요 Collaborative Filtering(CF: 협업필터링)1: 특징, 개념 <수정필요> CF에 관한 내용들이 많아서 1과 2로 나눠서 게시했다. 1은 CF의 특징, 개념에 관한 내용이고, 2는 CF를 어떻..

data-matzip.tistory.com

Matrix Factorization(MF, 행렬분해)

 

MF(Matrix Factorization, 행렬분해)

MF는 CF(Collaborative Filtering)의 한 기법이다. MF는 user-item의 매트릭스에 비어있는 요소를 채우는 기술이다. 아래의 행렬이 user-item 매트릭스라고 가정해보자 $\begin{bmatrix} 2 & 5 \\ 3 & ? \end{bmat..

data-matzip.tistory.com

Bayesian Personalized Ranking MF(BPR-NF)

 

 

CF(Collaborative Filterting)은 user, item의 상호작용(구매, 평가 등..)의 이력을 바탕으로 추천을 진행한다.

예를 들어, A에게 새로운 영화를 추천해주고 싶을 때, A와 비슷한 사람 B가 좋은 점수를 매긴 영화를 추천해준다.

A와 비슷한 사람 B를 어떻게 찾는지는 차차 설명하겠다.

 

 

장단점

  • CF는 상호작용의(rating, 구매빈도..) 데이터만 있으면 적용할 수 있다. 따라서 도메인에 의존되지 않고 사용할 수 있다.
  • 일반적으로 content based보다 좋은 성능을 가진다.  
  • 하지만 단점으로는 cold start문제가 있다. 새로운 item이나 user들에 대한 feedback(상호작용 데이터)이 부족하기 때문이다.

그렇다면 cold start문제가 있을 때 어떻게 해야 할까? 여러 가지의 대안책들이 있다.

  • 상품을 랜덤 하게 추천하거나 인기상품을 추천한다.
  • AR(Association Rule:연관분석)으로 상품을 추천한다.
  • content based모델을 사용해 추천한다. content based는 아이템의 특성 및 정보를 가지고 추천하기 때문에 cold start문제에 대안책이 될 수 있다.

 

 

종류

 

CF의 종류로는 크게 Memory based(메모리 기반 알고리즘)과 Model based(모델 기반 알고리즘)이 있다.

Memory based는 Neighborhood Models로, 가까운 user나 가까운 item을 묶어서 추천한다. Memory based에는 user based CF와 item based CF가 있다.

Model based에는 Matrix Factorization(MF), RBM, 베이지안이 있다. MF와 베이지안은 블로그에 따로 게시하겠다. Model based에서는 MF가 월등하게 많이 사용된다. 그 이유는 user와 item의 데이터를 그대로 받아들이는 게 아니라, 차원을 축소해서 다른 데이터(내재적인 데이터)로 받아들이는 것이다. 예를 들어, 영화 데이터를 장르, 배우등으로 내재적인 의미를 찾는 것이다. 

 

Memory based VS Model based

CF를 적용할 때 어떤 모델을 써야 할까? Memory와 Model based의 장단점을 알아보자

- Memory based

이 모델은 user와 item의 데이터를 직접적으로 연관시키고 추천하기 때문에 설명성이 높고 적용이 용의 하다.

하지만, sparse 한 data인 경우 성능이 저하되고, (cold start문제도 이런 문제 때문이다.) 쉽게 확장할 수 없다. 그 이유는 추천 결과를 생성할 때마다 많은 연산을 요구하기 때문이다.

 

- Model based

이 모델은 적은 데이터에서도 잘 동작한다. 또한 user에게 더 많은 item을 추천하며, 쉽게 확장할 수 있다. 즉, 한번 모형을 학습하면 다음 추천 결과를 생성하는데 시간과 연산량이 많이 소요되지 않는다. 하지만, Model based는 첫 모형 학습 시 시간과 연산량이 많이 소요된다.

 

user based VS item based

CF에서 Memory based를 사용한다고 하면 user based와 item based 중 어떤 모델을 사용할지 각 특징에 대해서 살펴보자.

 

- user based

user 간의 유사도(similarity matrix)를 측정한 뒤 유사도가 높은 user들이 선호하는 상품을 추천한다.

https://www.slideshare.net/xamat/recommender-systems-machine-learning-summer-school-2014-cmu

위의 그림에서 5번째 사람에게 영화를 추천해보자. 5번째 사람과 가장 가까운 사람은 누구일까? 2번째 사진의 similarity를 보면 5번째 사람과 3번째 사람이 가장 가까운 사람임을 확인할 수 있다. 유사도에 관한 계산법은 다음 게시글에서 설명하겠다. 이렇게 user based는 사람들의 가까움 정도를 수치로 나타낸 후, rating을 예측한다.

 

- item based

item 간의 유사도를 측정한 뒤 rating을 매긴다. user based와 똑같지만, target만 달라진다고 보면 된다.

https://www.slideshare.net/xamat/recommender-systems-machine-learning-summer-school-2014-cmu

 

user와 반대로 사람들이 6번째 영화를 어떻게 평가를 매길지 예측해보자. 이 방법은 영화 간의 유사도를 찾은 뒤, similarity에 영향을 주어 계산한다.

 

다음 게시글에서는 어떻게 계산하는지 계산방법에 대해 다루겠다.