BigData/Mahout

머하웃 추천기법

Jonghee Jeon 2013. 11. 17. 20:11

 

1. 피어슨 상관관계 기반의 유사도

  피어슨 상관관계는 -1과 1사이의 값으로, 두 개의 연속적인 숫자열의 일대일 비교를 통해 경향성을 측정한다. 다시 말해 한 숫자열의 각 숫자가 다른 숫자열의 대응되는 값보다 얼마나 상대적으로 큰지 측정한다는 뜻이다. 즉, 두 숫자열 간에 대략적인 선형관계를 이루는지 숫자열내의 값들과 다른 숫자열 값의 공통적인 방향성을 측정해서 확인해보는 것이다. 경향성이 크면 상관계수는 1에 가까워 진다. 관계가 적어지거나 거의 없을 경우에는 값이 0에 가까워 진다. 숫자열 내의 숫자가 높고 다른 숫자열 내의 값은 작아지는 서로 대립하는 상관성을 가질 경우에는 값이 -1에 가까워 진다.

 

 - 피어슨 상관관계의 문제점

(1) 두 사용자의 선호가 겹쳐지는 아이템의 숫자를 고려하지 않기 때문에 추천엔진을 사용할 때 약점이 될 수 있다.

(2) 만약 두 사용자의 아이템 선호 중 단지 하나만 겹친다면 계산 방식을 어떻게 정의할지 모르기 때문에 상관관계를 계산할 수 없다.

(3) 상관관계는 선호값의 열이 모두 일치하는 경우에도 정의하기 어렵다. 두 숫자열 모두 같은 선호값을 가질 필요는 없다.

 

2. 유클리드 거리 기반의 유사도

  유클리드 거리 기반의 유사도 방법은 사용자 사이의 거리에 기반한다. 이 방법은 선호값으로 좌표체계를 구성한 많은 다차원 공간(가지고 있는 아이템 수만큼 차원이 존재할 수 있다)에 사용자를 하나의 위치로 보는데, 이는 일리가 있어 보인다.

 

3. 스피어만 상관관계의 관련 순위로 유사도 정의

  원래의 선호값으로 상관관계를 계산하기보다는 상대적인 선호값 순위에 기반해서 상관관계를 계산한다. 스피어만 상관관계 기반의 유사도 측정은 계산 비용이 크기 때문에, 실제로 사용하기보다는 학술적인 목적으로 사용할 가능성이 높다.

 

4. 로그 우도 테스트로 유사도 계산하기

  개인의 선호값을 고려하지 않는 측정법이다. 두 사용자의 공통 아이템의 수를 활용한다. 하지만 로그 우도의 값은 각 사용자의 선호 아이템에서 아이템 수에 대비해서 얼마나 두 사용자가 겹치지 않는지 표현한 것이다.

 

5. 슬로프-원 추천기

  새로운 아이템과 다른 아이템의 사용자 선호의 평균적인 값의 차이에 기반해서 새로운 선호를 추정한다.

 

6. 특이값 분해 기반 추천기(SVD, Single Value Decomposition)

  SVD는 기계학습 기법에서 뜬금 없이 등장한 선형대수의 중요한 기법 중 하나다. SVD는 요약같은 역할을 한다. SVD 알고리즘은 개별 아이템의 사용자 선호 영역을 더 일반적이고 적은 수의 (장르와 같은) 특성으로 축약한다. 즉, 잠재적으로는 훨씬 작은 데이터 셋이 되는 것이다.

이러한 처리 때문에 일정 부분의 정보를 잃어버리긴 하지만 경웨 따라서는 추천 결과가 좋아 질 수도 있다. 이런 처리를 통해 입력 데이터를 유용하게 만들 수 있다.

 

7. 군집 기반 추천

  군집 기반 추천은 아이템을 사용자에게 추천하는 대신에 아이템을 유사 사용자 군집에 추천한다. 전처리 단계로 시작하는데, 모든 사용자를 클러스터로 나눈다. 그러고 나서 각 군집 별로 추천이 이루어 진다. 즉, 가장 큰 수의 사용자가 관심을 가질 만한 아이템을 추천하는 것이다.

 

 

* 머하웃에서 제공하는 추천기를 선택할 때, 고려해야 할 중요한 입력 마라미터 및 특성에 대한 요약 

 구현

중요 파라미터 

중요 특성 

 GenericUserBasedRecommender

 - 사용자 유사도 측정

 - 이웃 정의 및 크기 

 - 평범한 구현법

 - 사용자 수가 적을 때는 상대적으로 빠름

 GenericItemBasedRecommender

 - 아이템 유사도 측정

 - 아이템 수가 적을 때는 빠름

 - 외부에 아이템 유사도 개념이 있을 때 유용함

 SlopeOneRecommender

 - 차이값 저장소 전략

 - 실행 중에 추천과 업데이트가 빠름

 - 많은 선행 계산 필요

 - 아이템 수가 상대적으로 적을 때 적합함

 SVDRecommender

 - 특성의 수

 - 양호한 결과

 - 많은 선행 계산 필요

 KnnItemBasedRecommender

 - 평균치('K')의 수

 - 아이템 유사도 측정

 - 아이템 수가 상대적으로 적을 때 좋은

 TreeClusteringRecommender

 - 이웃의 크기

 - 클러스터의 수

 -클러스터 유사도 정의

 - 사용자 유사도 측정

 - 실행 중에 추천이 빠름

 - 많은 선행 계산 필요

 - 사용자 수가 상대적으로 적을 때 좋은

 

 

 

 - Mahout in Action [머하웃 완벽가이드] -