Kosinusähnlichkeit versus Punktprodukt als Abstandsmetrik

41

Es sieht so aus, als ob die Kosinusähnlichkeit von zwei Merkmalen nur ihr Skalierungsprodukt ist, das durch das Produkt ihrer Größenordnung skaliert wird. Wann macht Cosinus-Ähnlichkeit eine bessere Abstandsmetrik als das Skalarprodukt? Dh haben das Skalarprodukt und die Kosinusähnlichkeit unterschiedliche Stärken oder Schwächen in unterschiedlichen Situationen?

ahoffer
quelle
Beachten Sie, dass es sich bei keinem dieser Werte um richtige Abstandsmetriken handelt, auch wenn Sie sie in einen Wert umwandeln, der klein ist, wenn die Punkte "ähnlich" sind. Dies kann für Ihren Anwendungsfall von Bedeutung sein oder auch nicht.
Sean Owen

Antworten:

41

Denken Sie geometrisch. Die Cosinus-Ähnlichkeit kümmert sich nur um den Winkelunterschied, während sich das Skalarprodukt um den Winkel und die Größe kümmert. Wenn Sie Ihre Daten so normalisieren, dass sie dieselbe Größe haben, sind beide nicht zu unterscheiden. Manchmal ist es wünschenswert, die Größe zu ignorieren, daher ist die Cosinus-Ähnlichkeit gut, aber wenn die Größe eine Rolle spielt, ist das Skalarprodukt besser als Ähnlichkeitsmaß. Beachten Sie, dass keines von beiden eine "Entfernungsmetrik" ist.

Memming
quelle
3
"Entfernungsmetrik" wird in der Literatur häufig als Gegenteil von "Ähnlichkeit" verwendet: Je größer die Entfernung, desto geringer die Ähnlichkeit, aber im Grunde repräsentieren sie dieselbe Idee.
Freund
1
@ffriend Du meinst "Unähnlichkeit". Metrik hat eine genaue Definition.
Memming
8

Sie haben recht, Cosinus-Ähnlichkeit hat eine Menge Gemeinsamkeiten mit dem Skalarprodukt von Vektoren. Tatsächlich handelt es sich um ein Skalierungsprodukt. Und wegen der Skalierung wird es zwischen 0 und 1 normalisiert. CS wird bevorzugt, weil es die Variabilität der Daten und die relativen Häufigkeiten der Merkmale berücksichtigt. Auf der anderen Seite ist ein einfaches Punktprodukt ein bisschen "billiger" (in Bezug auf Komplexität und Implementierung).

Sobach
quelle
Warum berücksichtigt das Skalarprodukt allein (entspricht nicht dem Normalisieren) nicht die Daten und die Häufigkeit von Features? Ich weiß nicht, dass das der Unterschied ist.
Sean Owen
2
Vielleicht war ich nicht klar. Ich habe über Datenvielfalt gesprochen. ZB haben wir zwei Paare von Dokumenten. Innerhalb jedes Paares sind die Dokumente identisch, aber Paar-1-Dokumente sind kürzer als Paar-2-Dokumente. Und wir berechnen die Ähnlichkeit in jedem Paar. Punktprodukt würde unterschiedliche Zahlen erzeugen, obwohl in beiden Fällen eine maximale Ähnlichkeitsschätzung erwartet wird.
Sobach
5

Ich möchte den oben gegebenen Antworten eine weitere Dimension hinzufügen. Normalerweise verwenden wir die Kosinusähnlichkeit für großen Text, da die Verwendung einer Distanzmatrix für Absätze von Daten nicht empfohlen wird. Und auch wenn Sie beabsichtigen, dass Ihr Cluster breit ist, tendieren Sie dazu, Cosinus-Ähnlichkeit zu verwenden, da Ähnlichkeit insgesamt erfasst wird.

Wenn Sie beispielsweise Texte haben, die maximal zwei oder drei Wörter lang sind, erreicht die Verwendung der Kosinus-Ähnlichkeit meines Erachtens nicht die Genauigkeit, die durch die Abstandsmetrik erreicht wird.

Vimal Chandra Gorijala
quelle
4

Es gibt einen ausgezeichneten Vergleich der gemeinsamen Innenproduktbasierte Ähnlichkeitsmetriken hier .

Insbesondere wird die Cosinus-Ähnlichkeit so normalisiert, dass sie innerhalb von [0,1] liegt, anders als das Skalarprodukt, bei dem es sich um eine beliebige reelle Zahl handeln kann. Persönlich finde ich das gut. Ich stelle mir die Größe als interne Struktur (innerhalb des Vektors) und den Winkel zwischen Vektoren als externe Struktur (zwischen Vektoren) vor. Sie sind verschiedene Dinge und werden (meiner Meinung nach) oft am besten getrennt analysiert. Ich kann mir keine Situation vorstellen, in der ich lieber innere Produkte als Kosinusähnlichkeiten berechnen und anschließend nur die Größen vergleichen würde.

Shadowtalker
quelle
"Die Cosinus-Ähnlichkeit wird normalisiert, um innerhalb von [0,1] zu liegen." Es befindet sich immer noch ein Skalarprodukt im Zähler. Ich denke, der Bereich sollte stattdessen [-1, 1] sein.
Kari
2

Aus geometrischer Sicht definiert das Skalarprodukt zweier Vektoren einen Winkel , wenn alle Ihre Daten einheitlich sind, , und Sie haben einen Abstand .x,||x||2=x,x=1ϕx,y=cosϕϕ=arccosx,y

Visuell leben alle Ihre Daten auf einer Einheitssphäre. Wenn Sie ein Punktprodukt als Abstand verwenden, erhalten Sie einen Akkordabstand. Wenn Sie jedoch diesen Kosinusabstand verwenden, entspricht dies der Länge des Pfades zwischen den beiden Punkten auf der Kugel. Das heißt, wenn Sie einen Durchschnitt der beiden Punkte wünschen, sollten Sie den Zwischenpunkt auf diesem Pfad (geodätisch) nehmen und nicht den Mittelpunkt, der sich aus dem 'arithmetischen Durchschnitt / Punktprodukt / euklidische Geometrie' ergibt, da dies der Fall ist nicht auf der Kugel leben (daher im Wesentlichen nicht das gleiche Objekt)!

mic
quelle
1

Wie bereits erwähnt, handelt es sich hierbei nicht um Entfernungsmetriken, da sie die Metrikkriterien nicht erfüllen. Sagen Sie stattdessen "Entfernungsmessung".

Wie auch immer, was messen Sie und warum? Diese Informationen helfen uns, eine nützlichere Antwort für Ihre Situation zu geben.

sintax
quelle
Ich habe mich immer über den Unterschied zwischen Kennzahlen und Metriken gewundert. Der Regierung (NIST) zufolge: "... verwenden wir das Maß für konkretere oder objektivere Attribute und die Metrik für abstraktere, übergeordnetere oder etwas subjektive Attribute. ... Robustheit, Qualität (wie bei" hoher Qualität "), und Effektivität sind wichtige Attribute, für die wir ein gewisses Gefühl haben, die jedoch objektiv schwer zu definieren sind. Der Kontext ist jedoch Software-Engineering, nicht Mathematik. Was ist deine Meinung?
Ahoffer
1
Wikipedia war hilfreicher. Abstand (x, y) darf nicht negativ sein; d (x, y) = 0 nur wenn x = y; d (x, y) = d (y, x); und Dreiecksungleichung - d (x, z) ≤ d (x, y) + d (y, z)
ahoffer
1
Das ist so ziemlich alles: Eine Metrik muss bestimmte Axiome erfüllen und ein Maß ist weniger genau definiert.
sintax