추천시스템 분석 입문하기 4강 - 협업 필터링 (KNN, SGD, ALS)

안태림·2022년 11월 17일
0

협업필터링

정의: 사용자의 구매 패턴이나 평점을 가지고 다른 사람들의 구매 패턴, 평점을 통해서 추천을 하는 방법

Neighborhood based method

메모리 기반 알고리즘으로 협업 필터링을 위해 개발된 초기 알고리즘

  1. User-based collaborative filtering
    사용자의 구매 패턴(평점)과 유사한 사용자를 찾아서 추천 리스트 생성

  2. Item-based collaborative filtering
    특정 사용자가 준 점수간의 유사한 상품을 찾아서 추천 리스트 생성

Neighborhood based method – KNN

K Nearest Neighbors: 가장 근접한 K 명의 Neighbors를 통해서 예측하는 방법

장점

  • 간단하고 직관적인 접근 방식 때문에 구현 및 디버그가 쉬움
  • 특정 Item을 추천하는 이유를 정당화하기 쉽고 Item 기반 방법의 해석 가능성이 두드러짐
  • 추천 리스트에 새로운 item과 user가 추가되어도 상대적으로 안정적

단점

  • User 기반 방법의 시간, 속도, 메모리가 많이 필요
  • 희소성 때문에 제한된 범위가 있음
    - John의 Top-K 에만 관심이 있음
    - John과 비슷한 이웃중에서 아무도 해리포터를 평가하지 않으면, John의 해리포터에 대한 등급 예측을 제공할 수가 없음

Latent Factor Collaborative Filtering

Rating Matrix에서 빈 공간을 채우기 위해서 사용자와 상품을 잘 표현하는 차원(Latent Factor)을 찾는 방법
행렬 분해는 추천 시스템에서 사용되는 협업 필터링 알고리즘의 한 종류
행렬 분해 알고리즘은 사용자-아이템 상호 작용 행렬을 두 개의 저 차원 직사각형 행렬의 곱으로 분해하여 작동

SGD

고유값 분해와 같은 행렬을 대각화 하는 방법
두개의 행렬(User Latent, Item Latent)을 동시에 최적화

알고리즘
1. User Latent 와 Item Latent의 임의로 초기화
2. Gradient Descent 진행
3. 모든 평점에 대해서 반복
4. 2~3의 과정을 epoch만큼 반복

장점

  • 매우 유연한 모델로 다른 Loss function을 사용할 수 있음
  • parallelized가 가능함

단점

  • 수렴까지 속도가 매우 느림

ALS

두개의 행렬(User Latent, Item Latent) 중 하나를 고정시키고 다른 하나의 행렬을 순차적으로 반복하면서 최적화 하는 방법
기존의 최적화 문제가 convex 형태로 바뀌기에 수렴된 행렬을 찾을 수 있음

알고리즘
1. 초기 아이템, 사용자 행렬을 초기화
2. 아이템 행렬을 고정하고 사용자 행렬을 최적화
3. 사용자 행렬을 고정하고 아이템 행렬을 최적화
4. 위의 2,3 과정을 반복

장점

  • SGD보다 수렴속도가 빠름
  • parallelized가 가능함

단점

  • 오직 Loss Squares만 사용가능

협업필터링

장점

  • 도메인 지식이 필요하지 않음
  • 사용자의 새로운 흥미를 발견하기 좋음
  • 시작단계의 모델로 선택하기 좋음 (추가적인 문맥정보등의 필요가 없음)

단점

  • 새로운 아이템에 대해서 다루기가 힘듬
  • side features(고객의 개인정보, 아이템의 추가정보)를 포함시키기 어려움
profile
데린이

0개의 댓글