오답노트

[RS] 컨텐트 기반 필터링 (Content-based Filtering) 본문

Python/ML

[RS] 컨텐트 기반 필터링 (Content-based Filtering)

권멋져 2023. 3. 2. 23:43

Content-based Filtering

Content-based Filtering은 이전의 행동과 명시적 피드백을 통해 좋아하는 것과 유사한 항목을 추천한다.

유사도를 기반으로 추천한다.

많은 수의 사용자를 대상으로 쉽게 확장 가능하고 사용자가 관심을 갖지 않던 상품까지 추천 가능한 장점이 있다.

하지만 입력 특성을 직접 설계해야 하기 때문에 많은 도메인 시직이 필요하고 사용자의 기존 관심사항을 기반으로만 추천 가능한 단점이 있다.

 

유클리드 거리

위에서 유사도를 기반으로 추천한다고 했는데, 그 중 사용되는 유사도인 유클리드 거리 유사도이다.

이를 Python 코드로 구현하면 아래와 같다.

import numpy as np
euclidean_dist = np.sqrt(np.sum(np.square(my_vec - user_vec)))

코사인 유사도

코사인 유사도는 두 벡터가 이루고 있는 각을 계산하여 유사도를 구한다.

이를 Python 코드로 구현하면 아래와 같다.

import numpy as np

def compute_cos_similarity(v1,v2):
  norm1 = np.sqrt(np.sum(np.square(v1)))
  norm2 = np.sqrt(np.sum(np.square(v2)))
  dot = np.dot(v1,v2)
  return dot / (norm1 * norm2)