Browse Tag: 추천시스템

유사도 측정법

추천 시스템 구축을 위해 CF 혹은 CBF의 모델을 만들기 위해서는 각 아이템/사용자 간 유사도 측정이 중요하다.

유사도 측정을 위한 다양한 방법이 존재하지만 몇가지 유사도 측정법을 정리해본다

  1. 유클리드 유사도
    – 두점이나 백터 사이의 거리를 계산하는데 가장 일반적인 유사도 측정 방식
    – 백터 공간에서의 두점이나 백터 사이의 경로에 대한 거리
    – 간단한 계산을 통한 거리 측정으로 유사도 계산이 가능
  2. 코사인 유사도
    – 두 백터 사이의 사이값에 대한 코사인을 측정하여 백터들의 유사도를 측정
    – 유클리드 유사도와 달리 길이가 다른 백터들에 대한 유사도 측정시 정확한 값을 보여줌
  3. 자카드 유사도(Jaccard index)
    – 사용자와 아이템 사이의 합집합에 대한 교집합의 비율
    – 샘플 집합의 유사도와 다양도를 찾는데 사용
  4. 피어슨 상관계수
    – 각 대상의 데이터 집합이 얼마나 한 직선으로 표현되는지에 대한 측정값
    – 두 변수에 대한 선형관계를 파악하기 위해 사용

각 유사도 계산을 위한 수식은 구글링을 통해 쉽게 찾을 수 있으므로 따로 정리하지 않음

 

참고 : http://bigbigdata.tistory.com/99, http://docs.likejazz.com/cosine-sim/ , 추천엔진을 구축하기 위한 기본서

추천 엔진 구축을 위한 기본

추천 엔진이라 함은 사용자가 해당 항목을 얼마나 좋아할지를 통계적으로 추론하기 위해 수학적 모델을 개발하여 아이템에 대한 사용자 선호도를 예측하는 것이다.

추천 엔진을 크게 나누면 휴리스틱 기반과 모델기반 추천 시스템으로 나눌수 있는데 먼저 휴리스틱 기반부터 살펴보겠다.

휴리스틱 기반 추천 시스템은 흔히 메모리 기반 모델(메모리에 로딩한 후 계산한다고 해서 메모리 기반 모델)으로 불린다. 휴리스틱 기반 추천 시스템은 이웃기반 추천(collaborative Filtering, CF)과 Content-Based 추천(Content Based Filtering, CBF)이 존재한다

  • 이웃 기반 추천 : 사용자간 유사도를 바탕으로 추천하는 사용자 기반과 아이템간의 유사도를 기반으로 추천하는 아이템 기반 필터링이 존재
  • Content Based 추천 : 아이템 프로필(tfidf를 이용해 생성)과 사용자 프로필의 유사도를 계산하여 추천

과거 CF 기반의 추천엔진에서 콜드스타트 문제와 높은 개인화 수준을 만족하기 위해 CF에서 CBF로 추천엔진 로직이 발전해가는 추세이다.

이외에 날씨,장소,시간 등을 고려하는 상황인식 추천 시스템, CF와 CBF를 조합한 하이브리드 시스템 이 존재한다.

모델기반 추천 시스템에는 확률 모델, 머신러닝 모델, 수학적 모델 같은 다양한 모델들이 존재하는 이는 휴리스틱 접근법보다 정확하고 강력한 성능을 보여준다.

참고 : 추천 엔진을 구축하기 위한 기본서@수레시 고라칼라