Recommendation Systems with TensorFlow on GCP - penny4860/study-note GitHub Wiki

1. 정리

요약

  1. Content-Based Filtering
    • Description
      • user가 과거에 좋아했던 item과 비슷한 item을 추천
      • item feature dataset을 사용
    • Flow
      1. item embedding matrix를 구한다.
        • V : (n_items, d)
      2. user matrix를 구한다.
        • U : (n_users, d)
        • 각 user별로 item embedding을 weighted average & normalize
      3. recommend matrix를 구한다.
        • R = np.dot(U, V.transpose()) : (n_users, n_items)
        • user별 item score별로 정렬해서 추천 리스트를 내보낸다.
    • 장점
    • 단점
  2. Collaborative Filtering
    • Description
      • 해당 user와 비슷한 user가 소비한 item을 추천
      • user, item의 interaction dataset을 사용
    • Flow
      1. matrix A를 만든다.
        • (user x items)
      2. matrix factorization으로 user embedding, item embedding을 만든다.
        • A ~ np.dot(U, V')
          • U : (n_users, d)
          • V : (n_items, d)
      3. user별로 높은 score의 item을 추천
    • 장점
    • 단점
  3. Hybrid

질문

2. 내용

1. Recommender Systems Overview

1.1. Course Overview

  • recommendation systems are about personalization
  • CB reco systems
    • item의 meta 데이터를 사용
    • user가 과거에 소비한 item과 비슷한 item을 추천
  • CF reco systems
    • meta data없이 item similarity와 user similarity를 학습
    • 해당 유저와 비슷한 유저가 소비한 item을 추천
    • A(users x items) ~ U x V'
      • U : (num_users x dim)
      • V : (num_items x dim)
      • A : (num_users x num_items)
        • user별 item의 score
        • user별로 높은 score의 item을 추천한다.

1.2. Recommendation Systems Overview

  • Types of recomenndation systems
    1. Content-based filter
      • user가 과거에 좋아했던 item과 비슷한 item을 추천
      • item feature dataset을 사용
    2. Collaborative Filtering
      • 해당 user와 비슷한 user가 소비한 item을 추천
      • user, item의 interaction dataset을 사용
    3. Knowledge-Based
    4. Hybrid system
      • item의 feature(meta data)와 interaction data를 함께 사용
  • Pitfalls
    1. Sparsity
      • user item간의 interaction matrix가 sparse함.
    2. Skewed
      • 소수의 item에 interaction이 몰린다.
      • 소수의 user(헤비유저)가 대부분의 interaction을 수행
    3. Cold-Start
      • 신규 user, 신규 item
    4. Explicit Feedback이 적다.
      • Youtube의 경우 view숫자에 비해 like숫자는 적다.

2. Content-Based Recommendation Systems

2.1. Building a Simple Vector-Based Model

  • Embedding
    • 어떤 데이터를 finite dimensional vector space에 맵핑하는 작업
  • Contents-Based Recommendation Systems을 만드는 Flow
    1. item embedding matrix를 구한다.
      • V : (n_items, d)
    2. user matrix를 구한다.
      • U : (n_users, d)
      • 각 user별로 item에 대한 선호도를 계산한다.
        • 예시: user가 평점을 매긴 item들에 대해서 weighted average & normalize
    3. recommend matrix를 구한다.
      • R = np.dot(U, V.transpose()) : (n_users, n_items)
      • user별 item score별로 정렬해서 추천 리스트를 내보낸다.

2.2. Building a Content-Based Recommendation System with a Neural Network

3. COLLABORATIVE FILTERING RECOMMENDATION SYSTEMS

  • user-item의 interaction data를 활용한다.
  • Flow
    1. matrix A를 만든다.
      • (user x items)
      • rating 또는 0/1으로 matrix를 채운다.
    2. matrix factorization으로 user embedding, item embedding을 만든다.
      • A ~ np.dot(U, V')
        • U : (n_users, d)
        • V : (n_items, d)
    3. user별로 높은 score의 item을 추천