답변:
기하학적으로 생각하십시오. 코사인 유사성은 각도 차이에만 관심이있는 반면, 도트 곱은 각도와 크기에 관심이 있습니다. 데이터를 동일한 크기로 정규화하면 두 가지를 구분할 수 없습니다. 때때로 크기를 무시하는 것이 바람직하므로 코사인 유사성이 좋지만, 크기가 중요한 역할을하는 경우 내적은 유사성 측정으로 더 좋습니다. 이들 중 어느 것도 "거리 메트릭"이 아닙니다.
코사인 유사성은 벡터의 내적과 공통점이 많습니다. 실제로, 그것은 규모에 따라 스케일 된 내적입니다. 그리고 스케일링으로 인해 0과 1 사이에서 정규화됩니다. CS는 데이터의 변동성과 특징의 상대 주파수를 고려하기 때문에 바람직합니다. 반면에, 일반 도트 제품은 (복잡성 및 구현 측면에서) 조금 더 저렴합니다.
위의 답변에 차원을 하나 더 추가하고 싶습니다. 데이터 단락에 거리 행렬을 사용하지 않는 것이 좋기 때문에 일반적으로 큰 텍스트에 코사인 유사성을 사용합니다. 또한 클러스터를 넓히려면 전체 유사성을 캡처하므로 코사인 유사성을 사용하는 경향이 있습니다.
예를 들어 최대 2 ~ 3 단어 길이의 텍스트가있는 경우 코사인 유사성을 사용한다고 생각하면 거리 측정법으로 달성 한 정밀도가 달성되지 않습니다.
여기에서 일반적인 내부 제품 기반 유사성 메트릭에 대한 훌륭한 비교가 있습니다 .
특히, 코사인 유사성은 임의의 실수 일 수있는 내적과는 달리 [0,1] 내에 있도록 정규화되지만, 다른 사람들이 말했듯이 벡터의 크기를 무시해야합니다. 개인적으로, 나는 그것이 좋은 것이라고 생각합니다. 나는 크기를 내부 (벡터 내) 구조로 생각하고 벡터 사이의 각도를 외부 (벡터 사이) 구조로 생각합니다. 그것들은 다른 것들이며 (제 생각에) 개별적으로 가장 잘 분석되는 경우가 많습니다. 코사인 유사성을 계산하는 것보다 내부 제품을 계산하고 나중에 크기를 비교하는 상황을 상상할 수 없습니다.
기하학적 관점에서 모든 데이터가 인 경우 두 벡터의 스칼라 곱은 각도 , , 거리는 입니다.φ ⟨ X , Y ⟩ = COS φ φ = ARCCOS ⟨ X , Y ⟩
시각적으로 모든 데이터는 단위 영역에 있습니다. 내적을 거리로 사용하면 화음 거리가 생기지 만이 코사인 거리를 사용하면 구의 두 점 사이의 경로 길이에 해당합니다. 즉, 두 점의 평균을 원하면 '산술 평균 / 점 곱 / 유클리드 기하학'에서 얻은 중간 점이 아니라이 경로 (지오 데식) 사이의 점을 가져와야합니다. 구체에 살지 마십시오 (따라서 본질적으로 동일한 물체가 아닙니다)!
다른 사람들이 지적했듯이, 이들은 메트릭 기준을 충족시키지 않기 때문에 거리 "메트릭"이 아닙니다. 대신 "거리 측정"이라고 말하십시오.
어쨌든, 당신은 무엇을 측정하고 왜? 이 정보는 귀하의 상황에보다 유용한 답변을 제공하는 데 도움이됩니다.