5장 추천(1)

Updated:

2 minute read

5. 추천

  • niche 제품에 신경을 써야 하는 이유는 Long Tail에서 소외됐던 부분에 대해 관심을 환기함으로써
  • Short Tail을 넘어서는 수익을 추구할 수 있기 때문이다.
  • 그렇기에, ‘추천’을 통해 고객들에게 새로운 Niche를 발굴하게 하고 구매를 유도하는 게 목적

5.2 비즈니스 목표

  • 적합성, 참신함, 우연성, 다양성 크게 4가지 지표로 추천 평가 가능
    • 우연성을 자세히 보면, ‘해리포터’ 관심 고객에게 ‘해리포터’를 추천해주는 게 아니라,
    • ‘베오울프’와 같은 유사하지만 새로운 카테고리 추천
  • 결국 비즈니스 목표는 비용대비 수익을 극대화하는 것이다 (비용은 적게, 매출은 크게)
    • 이익 = 제품 판매량 X 제품 마진

5.3 품질 평가

  • Rating Matrix
  • 사용자별로, 알려진 Rating 값(이미 Rating 메겨진 상품)을 통해 알려지지 않은 Rating (Rating 메겨지지 않은 상품) 예측
    • 그렇기 때문에 일반적으로 회귀로 접근하기에는 어렵다 → 사용자/아이템별 정답지가 Random하게 분포
  • Rating은 매일매일 평가 받고 모델을 갱신하여 재 추천하는 방식으로 지속적인 Online 학습 방식으로 이뤄진다

5.3.1 예측 정확도

  • 적합성: RMSE, 랭킹 정확도
  • 참신성: Test Set에서 비교적 과거 예측보다 비교적 최근 예측을 잘 하는 지 확인
  • 우연성: 베이스라인 알고리즘으로 추천된 (Old 한 추천) Item과 개인화된 추천 알고리즘이 얼마나 적게 베이스라인 알고리즘 추천 Item을 추천했는 지 확인
  • 다양성: 추천리스트 모든 아이템별 Cosine 유사도를 측정하여 그 합을 통하여 다양성 확인 가능

5.4 추천 기법들의 개관

  1. 협업 필터링: 사용자들끼리 비슷한 행동을 나타내는 사람들끼리 모아서, A라는 사람이 아직하지 않은 행동 (상품, 영화)에 대해서 추천하는 방식
    • But, Cold Start라고 하여 아무 데이터가 없는 신규사용자에겐 추천 자체가 불가능한 문제
    • 사용자가 많을 경우 사용자 수가 많으면 계산량이 폭발적으로 증가
  2. 콘텐츠 기반 필터링: 영화 태그에 의해서 추천을 하는 것이 콘텐츠 필터링, 데이터 양이 많지 않아도 추천 가능
    • K Nearest Neighbor : 한 사용자 주변(근접)에 분포된 N개 데이터 point들 중 다수의 특성을 해당 사용자에 대한 특성을 부여하는 방식
    • 나이브 베이즈
    • 이웃 기반 협업필터링 (사용자)
      • 아이템 기반 협업 필터링은 코사인 유사도 기반 속도를 매우 빠르게 함으로써 속도 효율 개선
  • 전체적으로 추천은 엄청나게 많은 컴퓨터 리소스를 잡아먹지만, 효율이 크게 나오진 않아서 고민인 부분
    • 추천 기법들은 다양한 기법을 보통 Mix해서 사용
    • 사실, 한국인들은 비개인화 (그냥 인기 아이템 추천)가 잘 먹힌다고 해서 추천이 크게 필요없다는 이야기도 존재

5.5 콘텐츠 기반 필터링

  • 아이템에 대한 행렬이 존재한다면, 그걸 어떻게 data frame으로 바꿀 것인가 문제
  • 영화 예시
    • 데이터 전처리
      • 여러 개 장르가 겹쳐져있는 영화에 대해서 장르들 이름을 다 합쳐서 TF-IDF를 통해서 숫자값으로 encoding
    • 그렇게 영화별로 나온 숫자들(벡터)에 대해 각각 Cosine 유사도를 구한다

5.6 협업 필터링

  • 사용자와 유사한 취향을 가진 사용자가 있을 것이다라는 ‘주요 가정’ 기반
  • 영화 예시
    • 영화 라이언 일병 구하기에 5점을 준 사용자가 좋아할 영화 추천
      • 사용자-아이템 평점 행렬 생성 (User가 Index, Movie Id가 Column, 사용자 기반 협업 필터링이고 아이템 기반 협업 필터링은 해당 행렬의 전치행렬임)
      • 코사인 유사도 구하고
      • 보고 싶은 영황에 대한 다른 사용자들(평점 메긴)의 평점과 코사인 유사도로 가중평균 구하기 (예측 평균)
        • 코사인 유사도와 평점을 행렬곱하면, scalar 값이 나오고 해당 scalar를 전체 코사인 유사도 합으로 나눠준다.

Categories:

Updated: