Interpretation der negativen Kosinusähnlichkeit

16

Meine Frage mag albern sein. Also werde ich mich im Voraus entschuldigen.

Ich habe versucht, das von der Stanford NLP-Gruppe vorbereitete GLOVE-Modell zu verwenden ( Link ). Ich bemerkte jedoch, dass meine Ähnlichkeitsergebnisse einige negative Zahlen zeigten.

Das veranlasste mich sofort, mir die Wortvektordatendatei anzusehen. Anscheinend durften die Werte in den Wortvektoren negativ sein. Das erklärte, warum ich negative Kosinusähnlichkeiten sah.

Ich bin an das Konzept der Kosinusähnlichkeit von Frequenzvektoren gewöhnt, deren Werte in [0, 1] begrenzt sind. Ich weiß, dass das Punktprodukt und die Kosinusfunktion je nach Winkel zwischen Vektor positiv oder negativ sein können. Aber es fällt mir wirklich schwer, diese negative Kosinusähnlichkeit zu verstehen und zu interpretieren.

Wenn ich beispielsweise ein Wortpaar mit einer Ähnlichkeit von -0,1 habe, sind sie weniger ähnlich als ein anderes Paar mit einer Ähnlichkeit von 0,05? Wie wäre es mit einem Vergleich der Ähnlichkeit von -0,9 mit 0,8?

Oder sollte ich nur den absoluten Wert der minimalen Winkeldifferenz von nπ ? Absolutwert der Scores?

Vielen, vielen Dank.

Mai
quelle
1
Das Cosinus-Ähnlichkeits-Tag sagt: An angular-type similarity coefficient between two vectors. It is like correlation, only without centering the vectors.Der einzige Unterschied zwischen den beiden besteht darin, dass bei Korrelationsabweichungen (Momenten) - die kreuzmultipliziert werden - vom Mittelwert abweichen, während bei Cosinus-Abweichungen von der ursprünglichen 0 - dh die Werte so sind, wie sie sind .
ttnphns
2
(Forts.) Das Verständnis des positiven oder negativen Koeffizienten ist in beiden Fällen gleich. Negativer Coef. bedeutet, dass positive Abweichungen / Werte eines Vektors dazu neigen, sich mit negativen Abweichungen / Werten des anderen Vektors zu paaren. Ob dies bedeutet, dass die Vektoren "ähnlich" oder im Gegenteil "sehr unterschiedlich" sind, hängt für Sie von der Bedeutung positiver und negativer Abweichungen / Werte in den Daten ab.
ttnphns
@ttnphns Vielen Dank für Ihren Kommentar! Es inspiriert mich, auf neue Weise über Kosinusähnlichkeit nachzudenken. In meinem Anwendungsfall kann ich es mir vielleicht als Unterschied in den Endergebnissen vorstellen: Wenn die Korrelation von Dokument A und B negativ ist und ein uni-aktuelles Journal X Dokument A enthält, ist es weniger wahrscheinlich, dass X B als enthält Nun, aus einer mittleren Wahrscheinlichkeit. Klingt diese Interpretation für Sie gültig?
Mai
Ich wage es nicht zu sagen, weil ich Ihre Daten, die Bedeutung der darin enthaltenen Werte und Ihre Studie nicht kenne.
ttnphns

Antworten:

1

Bei zwei Vektoren a und b ergibt sich der Winkel θ aus dem Skalarprodukt und der Norm der Vektoren:

cos(θ)=ab||a||||b||

Da der cos(θ) -Wert im Bereich [1,1] :

  • 1 Wert zeigt stark entgegengesetzte Vektoren an
  • 0 unabhängige (orthogonale) Vektoren
  • 1 ähnliche (positive co-lineare) Vektoren. Zwischenwerte werden verwendet, um den Ähnlichkeitsgrad zu bewerten.

Beispiel : Lassen Sie zwei Benutzer und und die Ähnlichkeit zwischen diesen beiden Benutzern entsprechend ihrem Geschmack für Filme:U1U2sim(U1,U2)

  • sim(U1,U2)=1 wenn die beiden Benutzer genau den gleichen Geschmack haben (oder wenn )U1=U2
  • sim(U1,U2)=0 wenn wir keine Korrelation zwischen den beiden Benutzern finden
  • sim(U1,U2)=1 wenn die Benutzer entgegengesetzte Geschmäcker haben
Thomas FEL
quelle
0

Verwenden Sie keine absoluten Werte, da das negative Vorzeichen nicht beliebig ist. Um einen Kosinuswert zwischen 0 und 1 zu erhalten, sollten Sie die folgende Kosinusfunktion verwenden:

(R-Code)

cos.sim <- function(a,b) 
{
  dot_product = sum(a*b)
  anorm = sqrt(sum((a)^2))
  bnorm = sqrt(sum((b)^2))
  minx =-1
  maxx = 1
  return(((dot_product/anorm*bnorm)-minx)/(maxx-minx))
} 

(Python-Code)

def cos_sim(a, b):
    """Takes 2 vectors a, b and returns the cosine similarity according 
to the definition of the dot product"""
    dot_product = np.dot(a, b)
    norm_a = np.linalg.norm(a)
    norm_b = np.linalg.norm(b)
    return dot_product / (norm_a * norm_b)

minx = -1 
maxx = 1

cos_sim(row1, row2)- minx)/(maxx-minx)
```
Unicoder
quelle
Wo setzen Sie Minx und Maxx? Sie können diese Min-Max-Normalisierung anstelle der berechneten Entfernung auf Vektordimensionen anwenden.
Emre kann
0

Die Kosinusähnlichkeit ähnelt der Pearson-Korrelation, ohne jedoch die Mittelwerte zu subtrahieren. Sie können also die relative Stärke von 2 Kosinusähnlichkeiten vergleichen, indem Sie die absoluten Werte betrachten, genau wie Sie die absoluten Werte von 2 Pearson-Korrelationen vergleichen würden.

Dave
quelle
0

Es ist richtig, dass die Kosinusähnlichkeit zwischen Frequenzvektoren nicht negativ sein kann, da die Anzahl der Wörter nicht negativ sein kann, aber mit Worteinbettungen (wie z. B. Handschuhen) können Sie negative Werte haben.

Eine vereinfachte Ansicht der Worteinbettungskonstruktion lautet wie folgt: Sie weisen jedes Wort einem Zufallsvektor in R ^ d zu. Führen Sie als nächstes einen Optimierer aus, der versucht, zwei ähnliche Vektoren v1 und v2 nahe beieinander zu schieben oder zwei unterschiedliche Vektoren v3 und v4 weiter auseinander zu treiben (je nach Abstand, z. B. Kosinus). Sie führen diese Optimierung für genügend Iterationen aus und am Ende haben Sie Worteinbettungen mit dem einzigen Kriterium, dass ähnliche Wörter engere Vektoren haben und unterschiedliche Vektoren weiter voneinander entfernt sind. Das Endergebnis kann dazu führen, dass einige Dimensionswerte negativ sind und einige Paare eine negative Kosinusähnlichkeit aufweisen - einfach, weil der Optimierungsprozess dieses Kriterium nicht berücksichtigt hat. Möglicherweise hat es einige Vektoren gut in die negativen Werte gestoßen. Die Dimensionen der Vektoren entsprechen nicht den Wortzahlen,

npcmail mail
quelle