참고: lsjsj92.tistory.com/563

참고2: lsjsj92.tistory.com/564?category=853217

 

협업 필터링은 다른 사람들의 구매 패턴, 평점을 보고 추천하는 방법이다.

 

netflix 대회에서 우승한 알고리즘으로 유명한 알고리즘이다.

 

종류로는 최근접 이웃기반과 잠재 요인기반 collaborative filtering이 있다.

 

1. knn 기반(메모리 기반) 협업 필터링

사용자가 아직 평가하지 않은 아이템을 예측하는 것이 목표이다.

 

- user based collaborative filtering:

사용자의 구매패턴(평점)과 유사한 사용자를 찾아서 추천 리스트 생성

즉, A가 구매한 이력이 B와 유사할때 A가 구매한 다른 아이템을 B에게 추천해준다.

 

- item based collaborative filtering:

특정 사용자가 준 점수간의 유사한 상품을 찾아서 추천 리스트 생성

즉, A아이템과 B아이템이 비슷한 평가(평점)를 받았기때문에 A아이템을 구매한 사용자에게 B아이템을 추천한다.

 

1) 데이터: explicit feedback (자신의 선호도를 직접 표현한 데이터)

 

 

 

 

2-1) 알고리즘: user based collaborative filtering

두 유저간의 사용가능한 정보만으로 코사인 유사도, 피어슨 유사도를 사용하여 유사도를 측정한다.

그런데, user1, user2는 사진에서도 알 수 있듯이 다른 아이템에 대해서도 높은 평점을 부여하였다. 그래서 bias를 빼주기 위해서 아이템 - 아이템 평균 평점을 해주었는데 사실 잘 이해가 안간다. 사진의 공식을 확인하자. 

 

 

정리하자면, 사용자3과 사용자1,2가 유사해서 사용자1,2의 평점으로 사용자3의 평점을 채워줘야하는데 bias term을 제외하고 측정해주었다. 

 

2-2) 알고리즘: item based collaborative filtering

유저가 기준이 아니라 아이템을 기준으로 한다. 사진을 보면 1번 아이템과 3번 아이템의 유사도가 높은 것을 알 수 있다.

또, 4번 아이템과 6번 아이템의 유사도가 높은 것을 알 수 있다.

 

 

3) 장/단점

-장점: 간단하고 직관적이며 이유를 알기 쉽다. 새로운 아이템이 들어와도 모델이 바뀌지 않는다.

 

-단점: 사람들이 많이 보는 것 위주로만 추천이 된다. 만약 john과 비슷한 이웃중에서 아무도 해리포터를 보지 않으면 등급 예측이 불가함. 

따라서, CF, CBF가 함께 진행되어야 한다.

 

 

2. latent factor based collaborative filtering

Rating matrix에서 빈 공간을 채우기 위해서 사용자와 상품을 잘 표현하는 latent factor을 찾는 방법이다.

user-item matrix를 두 개의 저차원 행렬의 곱으로 matrix factorization을 기반으로 사용한다.

 

R = U*V.T

 

knn based cf보다 저장 공간을 많이 절약할 수 있다.

 

1) SGD: 고유값 분해를 통해서 행렬을 대각화하는 방법(?) 

실제 rating 행렬과 u*v.T의 차이를 통해서 loss를 알고 u와 v로 미분을 하여 최소화할 수 있다.

*tip.latent factor은 보통 20을 써준다.

 

 

장점: 다른 loss func를 사용할 수 있고, parallelized가 가능하다.

 

2) ALS

하나의 latent를 고정하고 진행시키는 것이다.

 

사용자 행렬을 초기화하고 처음에는 아이템 행렬을 고정하고 사용자 행렬을 최적화한다.

그 다음에는 사용자 행렬을 고정하고 아이템 행렬을 최적화한다.

 

linear regression에서 np.abs(y - Xb)에서 b를 구할 때, b = (X.T*X)^-1*X.T*y라고 두고 풀었던 것처럼 아래의 사진에서도 u와 v를 고정하기때문에 u와 v를 구할 수 있다. 이때, u,v는 행렬이다. (아래 사진 참고) 

 

 

대입만 하면 latent factors를 구할 수 있다.

 

 

장점: sgd보다 수렴 속도가 빠르다.

 

 

 

3. collaborative filtering 장/단점

-장점: 도메인 지식이 필요가 없다. CBF는 어떤 feature가 중요한지 등등을 알아야하는데 협업 필터링은 필요가 없다. 그래서 시작 단계의 모델로 사용하기 좋다.(baseline)

또한 사용자의 흥미를 발견하기 쉽다.

 

-단점: cold-start problem, side features( 개인정보, 추가정보 )를 포함시키기 어렵다.

 

 

 

*이 글은 토크on세미나 유튜브를 통해 공부한 내용입니다.

 

 

추후에 공부할 것.

lsjsj92.tistory.com/category/machine%20learning%28%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D%29?page=1

 

 

+ Recent posts