0
코사인 유사성을 사용하는 2 개의 희소 벡터 사이의 유사도를 계산하려고합니다. 잘 작동하고있어. 그러나 벡터의 각 인덱스에 가중치를 적용하는 추가 단계를 수행하고 싶습니다. 예 : 비교할 벡터가 v1 = [1, 0, 0, 1, 1]이고 v2 = [1, 0, 0, 0, 1]이고 가중치 벡터는 w = [.5, 1, 1 , 2, 1.5]. 이것은 첫 번째 요소가 요소 2와 3의 절반만큼 중요하고 4 번째 요소가 두 배 중요하다는 의미로 해석 될 수 있으며 마지막 요소는 유사성의 1.5 배 중요합니다.희박한 벡터의 가중 코사인 유사도
코사인 유사성을 사용하는 경우에도 가능합니까? 그렇다면 원래의 수식을 수정하여 이러한 가중치를 통합하는 방법은 무엇입니까? 감사! 원본 Java 코드는 다음과 같습니다.
private double score(Vector<Double> v1, Vector<Double> v2) throws Exception{
int v1Size = v1.size();
if (v1Size != v2.size()){
throw new Exception("Vectors not same size");
}
double numerator = 0;
double v1squaresum = 0;
double v2squaresum = 0;
for (int i = 0; i < v1Size; i++){
double v1Val = v1.get(i);
double v2Val = v2.get(i);
numerator += (v1Val * v2Val);
v1squaresum += (v1Val * v1Val);
v2squaresum += (v2Val * v2Val);
}
if (numerator == 0 || v1squaresum == 0 || v2squaresum == 0){
return 0;
}
double denom = (Math.sqrt(v1squaresum) * Math.sqrt(v2squaresum));
return numerator/denom;
}
가능한 가중치 유사성 계산 (0120)을 참조하십시오. – bradimus
http://mathforum.org/kb/ message.jspa? messageID = 5658016 & tstart = 0 – Yuri
둘 다 보았습니다. 첫 번째 메시지는 도움이되지 않으며 어쨌든 올바르지 않습니다. 그리고 두 번째보다 더 구체적인 구현을 기대했지만 표면이 보이지 않으면 그 경로로 갈 수 있습니다. – holtc