Data/ML

추천 시스템(Recommender System)- 3. Collaborative Filtering(협업 필터링)

뚱요 2022. 2. 6. 12:00
반응형

 

3. Collaborative Filtering(협업 필터링)

  • ‘사람들이 과거에 좋아했던 것들이 크게 변하지 않아서 미래에도 비슷한 것들을 좋아할 것이다.’라는 가정을 전제로 한다.
  • 동시에 유저와 아이템 간의 유사도를 이용해서 추천한다. 추천할 유저와 비슷한 유저들의 데이터 기반으로 추천한다. 
  • 이전의 content-based filtering처럼 직접 특성을 엔지니어링 하지 않고 모델이 자동으로 학습한다.

(1) 종류

  • memory based 방식
    • 사용자 평가 데이터를 사용하여 사용자 또는 항목 간의 유사성을 계산
    • 종류 : user-based, item-based
    • 알고리즘:KNN
  • Model based 방식
    • 평가되지 않은 항목에 대한 사용자의 평가를 예측하는 다양한 데이터 마이닝, 기계학습 알고리즘을 사용
    • 알고리즘: Bayesian networks, clustering models, latent semantic model (singular value decomposition, probabilistic latent semantic analysis, multiple multiplicative factor, latent Dirichlet allocation , Markov decision process based model)
  • 데이터 종류
    • 명시적 데이터(explicit data)- 유저들이 얼마나 해당 아이템을 좋아하는지에 대한 데이터
      • 유저가 직접 해당 아이템을 평점/순위를 준다.
      • 좋아하는 아이템 목록
    • 비명시적 데이터(implicit data) - 명확한 의견은 없지만 관심사를 볼 수 있는 데이터
      • 유저 서치 기록 정보
      • 구매 기록
      • sns 좋아요,싫어요 기록

(2) Embedding

(2.1) 1D Embedding(1차원 임베딩)

    • 이번 예시는 영화이다. 사람들의 피드백이 담긴 행렬로 학습 데이터로 사용한다 하자. 해당 행렬의 행은 유저를 나타내고 열은 아이템을 나타낸다. 이번에도 단순화하기 위해서 feedback matrix가 이진 값을 갖는다고 가정한다. 
    • 1개의 특성을 기반으로 1차원 벡터로 나타내 보자. 영화에 [-1,1] 사이의 값으로 어느 연령대에 적합한지 표시를 할 수 있다. -1에 가까울수록 유아용 콘텐츠, 1에 가까울수록 성인에 적합한 콘텐츠이다. 두 번째 그림에서 유저의 Embedding과 영화의 Embedding 이 1에 가까울수록 유저가 좋아함을 알 수 있다.두번째 그림에서는 체크된 것은 유저가 해당 영화를 봤다는 것을 표시한다. 특히 3번째, 4번째 유저가 이를 잘 보여준다. 3번째 유저는 전체 연령가 콘텐츠를 선호하지만 4번째 유저는 성인 관람 가능한 영화들을 좋아하는 것을 알 수 있다. 하지만 1번째, 2번째 유저를 보면 알 수 있듯이 유저의 선호는 하나의 특성으로 설명되지 않음을 명시하자.

feedback matrix

(2.2) 2D Embedding(2차원 임베딩)

 

하나의 특성으로 모든 유저들의 선호도를 설명하지 못한다. 이 문제를 해결하기 위해서는 2번째 특성을 추가한다. 예로 영화 카테고리를 추가한다. 위의 예시에서는 블록버스터에 가까운지 예술영화에 가까운지를 [-1,1] 사이 값으로 표시한다.

동일한 Embedding 공간에서 이제는 각 특성별로 유저 Embedding을 추가해준다. 이것을 특정 유사도를 이용해서 구해서 1에 가까우면 유저가 선호 할 가능성이 높다.

위의 예시에서는 특정 feature를 정해주었지만 실제에서는 모델이 스스로 유저들의 취향을 가장 잘 반영하는 Embedding 을 배운다. 취향이 비슷한 유저의 임베딩이 임베딩 공간에서 가까각

워 지게 된다. 또한, 영화 임베딩에서 feedback 행렬을 가장 잘 반영하는 것을 학습한다. 결과적으로 비슷한 유저들이 좋아했던 영화들의 임베딩 또한 임베딩 공간에서 까가워 지게 된다. 비슷한 이것이 바로 현업 필터링의 장점이다.

예시로 위의 이미지에서 빨간색? 칸을 내적으로 계산해보아서 4번째 유저가 슈렉을 좋아할지를 알아보자. \( 0.1 \times1+1 \times -1= 0.1 -1 = -0.9 \)이므로 -1 에 더 가까워서 4번째 유저가 슈렉 영화를 싫어할 수 있음을 유추할 수 있다. 2차원의 첫 번째 그림에서도 반대 끝에 있는 것을 알 수 있다

(3) 장단점

장점

  • 도메인 지식이 필요하지 않다. 협업 필터링이 스스로 학습하기 때문에 콘텐츠 기반 필터링 처럼 필요하지 않다.
  • Serendipity(세렌디피티): 유저들의 새로운 취향을 찾도록 도와준다.
어원 완전한 우연으로부터 중대한 발견이나 발명이 이루어지는 것을 말하며 특히 과학연구의 분야에서 실험 도중에 실패해서 얻은 결과에서 중대한 발견 또는 발명을 하는 것
  • 아이템에 관한 정보가 따로 필요하지 않고 유저의 취향을 파악한다

단점

  • cold start문제
    • 추천시스템의 정확도가 높으려면 사용자에 대한 많은 정보가 필요하다. 하지만 신규 유저인 경우 추천하기에 데이터가 있지 않아 계산을 할 수가 없다.
      • 해결책 1. Weighted-average least squares (WALS)
      • 해결책 2. 새로운 아이템 embeddings에 대해 Heuristics(간편 추론)을 통해 생성한다.
        • 평균, 중앙값 등을 사용하여 값을 넣어 줄 수 있다.
  • Scalability
    • 데이터 크기가 크면 연산량도 오래 걸리고 많이 소요된다.
  • Sparsity
    • 아이템 목록은 엄청나게 많고 활발히 활동하는 유저는 전체 중 일부이다. 인기 있는 아이템이라도 데이터 충분치 않을 수 있다.
      • 실제로도 프로젝트로 실제 데이터 가져와보니 인기 있는 영화여도 리뷰가 생각보다 많지 않았고 리뷰 없는 영화나 리뷰가 1개인 영화가 더 많았다.
  • 다른 특성을 추가해서 학습하기 어렵다. e.g. 사용자의 다른 데모 그래픽 특성(연령, 성별, 출생국)

출처

Google Developers

반응형