2014-10-08 2 views
1

다른 제품의 비율을 1-5로 평가하는 사용자 데이터베이스가 있습니다. 권장 엔진은 유사도가 높은 다른 사용자의 환경 설정을 기반으로 사용자에게 제품을 권장합니다. 비슷한 사용자를 찾는 첫 번째 방법은 Cosine Similarity를 ​​사용하고 사용자 등급을 벡터 구성 요소로 취급하는 것입니다. 이 접근법의 주된 문제점은 단지 벡터 각도를 측정하고 등급 또는 크기를 고려하지 않는다는 것입니다.권장 엔진 : 코사인 유사도 비교 각 벡터 구성 요소 간의 차이 %

내 질문은 이것이다 : 코사인 유사성은 어떤 방법으로 간단하게 두 벡터 (사용자)의 벡터 구성 요소 간의 %의 차이를 측정 보다 사용자의 유사성 판단에 더 적합한 이유 누군가가 나에게 설명 할 수 있습니까?

예를 들어, 왜 그냥하지 대신 코사인 유사성의

n = 5 stars 
a = (1,4,4) 
b = (2,3,4) 

similarity(a,b) = 1 - ((|1-2|/5) + (|4-3|/5) + (|4-4|/5))/3 = .86667 

을 :

a = (1,4,4) 
b = (2,3,4) 

CosSimilarity(a,b) = 
(1*2)+(4*3)+(4*4)/sqrt((1^2)+(4^2)+(4^2)) * sqrt((2^2)+(3^2)+(4^2)) = .9697 
+1

이것은 datascience.stackexchange.com에 대한 좋은 후보자입니다. –

답변

1

을 내가 한 대답은 모든 추천인 문제 평가에서 작동한다는 것입니다 가정 모든 기능이 원래의 기능 공간에서 작동하지는 않지만 가끔 낮은 기능 공간에서 작동하는 경우도 있습니다. 그 답이 바뀝니다.

나는 코사인 유사성이 등급에 대한 훌륭한 척도라고 생각하지 않습니다. 평점은 정상화하려는 것이 아닙니다. 각 사용자의 평점을 평균 0으로 정규화하면 좀 더 의미가 있습니다.

수정 된 L1 거리 중 하나를 사용하는 것이 가장 좋지 않은 것 같습니다. 정상적인 유클리드/L2 거리도 고려하십시오. 결국 경험적 테스트를 통해 데이터에 가장 적합한 것이 무엇인지 알려줄 것입니다.

+0

감사합니다. – Myclamm