[Data Science] 협업 필터링

김수민·2024년 4월 9일

DataScience

목록 보기
2/3

협업 필터링 개념

1. 협업 필터링

  • 사용자의 구매 패턴, 평점 등을 가지고 다른 사람들의 구매 패턴, 평점을 통해 추천하는 시스템
  • 즉, 한 사용자가 매긴 평점과 비슷하게 평점을 매긴 다른 사용자를 찾아주는 방식
  • 최근접 이웃(kNN) 기반, 잠재 요인기반 모델이라고 표현

    이웃 기반 vs 잠재요인 기반
    (1) 이웃 기반
    : 아이템의 벡터와 유저 스페이스의 벡터 간 조합을 통해 아이템 간의 유사도를 통해 아이템 기반 추천을 진행
    : 유저 스페이스 간의 유저 간 벡터 유사도를 계산하여 비슷한 유저를 통해 추천 진행
    (2) 잠재요인 기반
    : 유저 스페이스에 대한 Latent Space와 아이템 스페이스에 대한 Latent Space를 만들어 둘의 곱을 통해 추천 진행

    (1) 장점
    : 도메인 지식이 필요하지 않음
    : 사용자의 새로운 흥미를 발견하기 용이
    : 시작단계의 모델로 선택하기 좋음(추가적인 문맥정보 등이 필요 X)
    (2) 단점
    : 새로운 아이템에 대해 다루기 힘듦
    : side features(고객의 개인정보, 아이템의 추가정보)를 포함시키기 어려움

2. Neighborhood based Collaborative Filtering

  • 메모리 기반 알고리즘으로, 협업 필터링을 위해 개발된 초기 알고리즘
  • User-based collaborative filtering과 Item-based collaborative filtering의 접근법이 존재
    1) User-based collaborative filtering
    : 사용자의 구매 패턴(평점 등)과 유사한 사용자를 찾아 추천 리스트 생성
    : 비슷한 사용자를 찾아 비슷한 사용자가 본 아이템을 추천
    2) Item-based collaborative filtering
    : 특정 사용자가 준 점수 간의 유사한 상품을 찾아 추천 리스트 생성
    : 본인이 선호한 아이템과 유사한 아이템을 찾아 유사한 상품 추천

3. kNN 알고리즘(이웃 기반의 협업 필터링)

  • 가장 근접한 k명의 Neighbor를 통해 예측
  • Explicit Feedback : 유저의 자신의 선호도를 직접적으로 표현한 데이터
  • 유저 간 유사도를 찾기 위해 Cosine과 Pearson으로 유사도 계산
  • 유저마다의 평균적인 평점이 다르므로, 이러한 문제를 제거하기 위해 bias term을 제거해야 함
  • 유저의 아이템 평점 - 유저의 평균 평점을 통해 bias term을 제거한 평점을 구할 수 있음
    (1) 장점
    : 간단하고 직관적 접근 방식으로 구현 및 디버그 용이
    : 특정 Item을 추천하는 이유를 정당화하기 쉽고, Item 기반 방법의 해석 가능성 ↑
    : 추천 리스트에 새로운 item과 user가 추가되어도 상대적으로 안정적
    (2) 단점
    : User기반 방법의 시간, 속도, 메모리가 많이 필요
    : 희소성 때문에 제한된 범위가 존재(ex. 사용자와 비슷한 이웃 중 아무도 해당 아이템에 대해 평가하지 않으면, 예측을 제공할 수 없음)

4. 잠재요인 기반의 협업 필터링

  • Rating Matrix에서 빈 공간을 채우기 위해 사용자와 상품을 잘 표현하는 차원(Latent Factor)를 찾는 방법
  • 사용자와 아이템 간 잠재요인을 분석하지만, 잠재요인을 정확히는 알 수 없음

5. SGD

  • 고유값 분해를 통해 행렬을 대각화하는 방법
  • 유저의 Latent Matrix, 아이템의 Latent Matrix간의 곱과 평점 매트릭스의 차이를 최소화 하고자 하는 것
  • 유저 Latent와 아이템 Latent를 곱했을 때, 평점 매트릭스를 복원할 수 있는데 이를 실제 평점과의 차이를 줄이는 U와 V를 찾는 것
  • Gradient Descent에 의해 편미분 된 값으로 U와 V에 대한 함수로 업데이트를 진행
  • weight가 폭발적으로 변화하는 것을 막기 위해, 각 크기의 제곱인 Regularization Term을 더해줌
    (1) 장점
    : 유연한 모델로 다른 Loss function을 사용 가능
    : parallelized가 가능
    (2) 단점
    : 수렴까지 속도가 매우 느리지만, 좋은 딥러닝 모델로 개선 가능

https://colab.research.google.com/drive/1n8YcAhCskmLg701VESUHhTr4cPGw9sWN?usp=sharing
(SGD 실습 링크)

6. ALS

  • 두 행렬(User Latent/Iteme Latent) 중 하나를 고정시키고, 다른 하나의 행렬을 순차적으로 반복하며 최적화하는 방법
  • 기존 최적화 문제가 convex 형태로 바뀌기 때문에 수렴된 행렬을 찾을 수 있음
  • ALS는 ? 값을 0으로 변환한 뒤 진행
  • implicit package를 사용해 적용 가능
    (1) 장점
    : SGD보다 수렴 속도 ↑
    : parallelized가 가능
    (2) 단점
    : 오직 Loss Squares만 사용 가능

https://colab.research.google.com/drive/1PgNZQB-ztew7MMSTTfl-XV948-Qj64jV?usp=sharing
(ALS 실습 링크)

0개의 댓글