[boostcamp-ai-tech][RecSys] Collaborative Filtering(1) Neighborhood-based CF, Similarity Measure, Rating Prediction(CF)

whatSup CheatSheet·2022년 3월 14일
0

RecSys

목록 보기
3/13
post-thumbnail

Collaborative Filtering(CF)

CF 개요

  • '많은 유저들로부터 얻은 기호 정보' 를 이용해 유저의 관심사를 예측하는 방법
    -> 더 많은 유저/아이템 데이터가 축적될수록, 협업의 효과는 커지고 추천은 정확해질 것이란 가정에서 출발
  • CF 기반 추천시스템은 결국 유저 u가 아이템 i에 부여할 평점(or 선호도 등)을 예측하는 것이다.
    • CF 기반 추천시스템은 아이템이 가진 속성을 사용하지 않으면서도 높은 추천 성능을 보인다(도메인 지식 등이 필요하지 않음).

CF 방법

  1. 주어진 데이터를 활용해 유저-아이템 행렬을 생성
  2. 유사도 기준을 정하고 유저 혹은 아이템 간의 유사도를 구함
  3. 주어진 평점과 유사도를 활용하여 행렬의 비어 있는 값을 예측

CF 분류

  • Neighborhood-based CF(Memory-based CF)
    • User-based
    • Item-based
  • Model-based CF
    • Non-parametric(KNN, SVD)
    • Matrix Factorization
    • Deep Learning
  • Hybrid CF
    • Content-based Recommendation과의 결합

Similarity Measure

Similarity Measure이란


: 두 개체 간의 유사성을 수량화하는 실수 값 함수 혹은 척도

  • 유사성에 대한 여러 정의가 존재하지만, 일반적으로는 거리의 역수(거리가 길면 유사도는 작아지고, 가까우면 유사도는 커짐) 개념을 사용.
  • 따라서 두 개체 간 거리를 어떻게 측정하냐에 따라 유사도 측정방법이 달라짐(정해진 유사도 사용법은 없음).

대표적인 유사도 종류

Mean Squared Difference Similarity

주어진 유저-아이템 rating에 대하여,

  • 각 기준에 대한 점수의 차이를 계산, 유사도는 유클리드 거리에 반비례(평점이 비슷할수록 MSD는 작아짐)
  • 분모가 0이 되는 것을 방지하기 위해 분모에 1이 더해짐(smoothing)(최대 유사도 = 1)

Cosine Silmilarity

주어진 두 벡터 X, Y에 대하여,

  • 두 벡터의 각도를 이용하여 구할 수 있는 유사도
    • 두 벡터의 차원이 같아야 함
  • 직관적으로 두 벡터가 가리키는 방향이 얼마나 유사한지를 의미

Pearson Similarity(Pearson Correlation)

주어진 두 벡터 X, Y에 대하여,

  • 각 벡터를 표본평균으로 정규화한 뒤에 코사인 유사도를 구한 값
    • 직관적인 해석: (X,Y가 함께 변하는 정도) / (X,Y가 따로 변하는 정도)
    • 0일경우 서로 독립적임을 의미.
    • 1에 가까우면 양의 상관관계, -1에 가까우면 음의 상관관계를 나타냄

Jaccard Similarity

주어진 두 집한 A, B에 대하여,

  • 집합의 개념을 사용한 유사도
    • Cosine, Pearson 유사도와 달리 길이(차원)이 달라도 이론적으로 유사도 계산이 가능함
  • 두 집합이 같은 아이템을 얼마나 공유하고 있는지를 나타냄
    • 두 집합이 가진 아이템이 모두 같으면 1
    • 모두 다르면 0

더 많은 유사도

Neighborhood-based CF (NBCF)

NBCF 개요

  • 유저 U가 아이템 I에 부여할 평점을 예측하는 것(행렬의 비어있는 값을 예측)
  • 특징
    • 구현이 간단하고 이해가 쉬움
    • Sparsity
      • 주어진 평점/선호도 데이터가 적을 경우, 성능이 저하되는 것
      • NBCF는 주어진 데이터를 활용해 유저-아이템 행렬을 만들어 예측하므로, 이에 취약함
      • NBCF를 적용하려면 적어도 sparsity ratio(전체 행렬 중 비어있는 칸의 비율)가 99.5를 넘지 않는 것이 좋음(그렇지 않을 경우 모델 기반 CF를 고려해봐야 함).
    • Scalability
      • 아이템이나 유저가 계속 늘어날 경우 확장성이 떨어짐(메모리 문제 등)

User-based CF (UBCF)


유저 기반 협업 필터링

  • 두 유저가 얼마나 유사한 아이템을 선호하는가?
  • 유저 간 유사도를 구한 뒤, 타겟 유저와 유사도가 높은 유저들이 선호하는 아이템을 추천

Item-based CF (IBCF)


아이템 기반 협업 필터링

  • 두 아이템이 유저들로부터 얼마나 유사한 평점을 받았는가?
  • 아이템 간 유사도를 구한 뒤, 타겟 아이템과 유사도가 높은 아이템 중 선호도가 큰 아이템을 추천

K-Nearest Neighbors CF(KNN CF)

  • NBCF의 한계
    • 아이템 ii에 대한 평점 예측을 하기 위해서는, Ωi\Omega_i(아이템 i에 대해 평가를 한 유저 집합)에 속한 모든 유저와의 유사도를 구해야 함.
    • 그러나 유저가 너무 많아질 경우 계속해서 연산은 늘어나고, 이로 인해 오히려 성능이 떨어지는 현상이 발생하기도 함
  • KNN 협업 필터링의 아이디어
    • Ωi\Omega_i에 속한 유저 가운데 유저 u와 가장 유사한 K명의 유저(KNN)만을 이용하여 평점을 예측
      (유사하다는 것은 우리가 정의한 유사도 값이 크다는 것을 의미)
      • 보통 K = 25 ~ 50을 많이 사용(하이퍼 파라미터임)

Rating Prediction

CF를 이용한 평점 예측

Absolute Rating

  • 전체 유저 U, 아이템 I에 대한 평점 데이터가 존재할 때, 유저 u의 아이템 i에 대한 평점 r^(u,i)\hat{r}(u, i)를 예측해보자.

  • 아이템 i에 대한 평점이 있으면서 유저 u와 유사한 유저들의 집합을 Ωi\Omega_i라고 한다면,

    • Average:
    • Weighted Average:
  • Absolute Rating의 한계

    • 유저가 평점을 주는 기준이 제각기 다름
      : 어떤 유저는 전체적으로 높게평점을 줄 수도 있고, 반대로 낮게 줄 수도 있음.

Relative Rating

  • 상대적 평점의 개념

  • 유저의 평균 평점에서 얼마나 높은지 혹은 낮은지, 그 편차(Deviation)을 사용.

    • 최종 예측값 = 유저 평균 rating + predicted deviation
  • devation과 유사도 기반 weighted average prediction을 결합한 최종 수식

Top-N Recommendation

  • CF의 최종 목적은 유저 u가 아이템 i에 부여할 평점을 예측하는 것임.
  • 따라서 예측된 평점이 높은 아이템을 유저에게 추천해주는 것이 CF를 활용한 Top-N Recommendation이 됨.
profile
AI Engineer : Lv 0

0개의 댓글