Kosinus-Ähnlichkeit und Pearson-Korrelation
Swipe um das Menü anzuzeigen
Kosinus-Ähnlichkeit
Die Kosinus-Ähnlichkeit ist ein Maß, das die Ähnlichkeit zwischen zwei Vektoren quantifiziert, indem der Kosinus des Winkels zwischen ihnen gemessen wird. Mathematisch ist sie definiert als:
Cosine Similarity = ∑i=1nAi2⋅∑i=1nBi2∑i=1nAiBi
wobei A und B Benutzer- oder Artikelvektoren sind. Geometrisch erfasst die Kosinus-Ähnlichkeit, wie stark zwei Vektoren ausgerichtet sind, unabhängig von ihrer Größe. Ein Wert von 1 bedeutet, dass die Vektoren in die gleiche Richtung zeigen (maximale Ähnlichkeit), 0 bedeutet, sie sind orthogonal (keine Ähnlichkeit), und -1 bedeutet, sie zeigen in entgegengesetzte Richtungen. Im Bereich des Verhaltensabgleichs ist die Kosinus-Ähnlichkeit nützlich, wenn das Muster der Präferenzen wichtiger ist als deren absolute Werte, beispielsweise beim Vergleich von Nutzern, die Artikel auf unterschiedlichen Skalen bewerten.
Pearson-Korrelation
Die Pearson-Korrelation misst die lineare Beziehung zwischen zwei Vektoren und berücksichtigt sowohl die Richtung als auch den Mittelwert der Daten. Die Formel lautet:
Pearson Correlation=∑i=1n(Ai−Aˉ)2⋅∑i=1n(Bi−Bˉ)2∑i=1n(Ai−Aˉ)(Bi−Bˉ)
wobei Aˉ und Bˉ die Mittelwerte der Vektoren A und B sind. Die Pearson-Korrelation reicht von -1 (perfekte negative lineare Beziehung) bis 1 (perfekte positive lineare Beziehung), wobei 0 keine lineare Beziehung anzeigt. Diese Kennzahl ist besonders nützlich, wenn Nutzer oder Artikel nach Entfernung individueller Verzerrungen verglichen werden sollen, etwa wenn ein Nutzer dazu neigt, alles höher oder niedriger zu bewerten als ein anderer.
Vergleich
- Konzentriert sich auf die Ausrichtung der Vektoren und ignoriert deren Mittelwert und Betrag;
- Geeignete Wahl für spärliche Daten, bei denen viele Bewertungen fehlen oder null sind, kann jedoch die Ähnlichkeit überschätzen, wenn Nutzer systematisch unterschiedliche Bewertungsskalen verwenden.
- Zieht den Durchschnittswert von jedem Vektor ab und ist dadurch robust gegenüber Unterschieden in Skala oder Grundpräferenz;
- Besser geeignet, wenn Nutzer- oder Artikelverzerrungen kontrolliert werden sollen, erfasst jedoch möglicherweise keine nichtlinearen Zusammenhänge.
Beispiel: Berechnung beider Metriken
Angenommen, Sie haben zwei Benutzer, die vier Artikel bewertet haben. Ihre Bewertungen sind:
- Benutzer 1:
[4, 0, 3, 5] - Benutzer 2:
[5, 1, 2, 4]
Sie können sowohl die Kosinus-Ähnlichkeit als auch die Pearson-Korrelation für diese Vektoren berechnen, um ihre Verhaltensähnlichkeit zu vergleichen.
12345678910111213141516171819import numpy as np # User ratings user1 = np.array([4, 0, 3, 5]) user2 = np.array([5, 1, 2, 4]) # Cosine similarity def cosine_similarity(a, b): 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) cos_sim = cosine_similarity(user1, user2) print(f"Cosine Similarity: {cos_sim:.4f}") # Pearson correlation pearson_corr = np.corrcoef(user1, user2)[0, 1] print(f"Pearson Correlation: {pearson_corr:.4f}")
Schritt-für-Schritt-Erklärung des Codes
Definition der Benutzerbewertungs-Arrays
user1 = np.array([4, 0, 3, 5]);user2 = np.array([5, 1, 2, 4]);
Es werden zwei NumPy-Arrays erstellt, die jeweils die Bewertungen eines Benutzers für vier Artikel darstellen. Diese Arrays sind Ihre Benutzervektoren.
Definition der Kosinus-Ähnlichkeitsfunktion
def cosine_similarity(a, b):
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)
- Berechnung des Skalarprodukts:
dot_product = np.dot(a, b);
Multipliziert die entsprechenden Elemente der beiden Vektoren und summiert sie. Dies misst, wie stark die beiden Vektoren in die gleiche Richtung zeigen. - Berechnung der Normen:
norm_a = np.linalg.norm(a);norm_b = np.linalg.norm(b);
Berechnet die Länge (Betrag) jedes Benutzervektors. Die Norm ist die Quadratwurzel der Summe der Quadrate der Elemente des Vektors. - Berechnung der Ähnlichkeit:
return dot_product / (norm_a * norm_b);
Teilt das Skalarprodukt durch das Produkt der beiden Normen. Das Ergebnis ist der Kosinus des Winkels zwischen den beiden Vektoren und zeigt deren Ähnlichkeit an.
Berechnung der Kosinus-Ähnlichkeit und Ausgabe
cos_sim = cosine_similarity(user1, user2);
print(f"Cosine Similarity: {cos_sim:.4f}");
Die Funktion wird mit den Benutzervektoren aufgerufen, um deren Kosinus-Ähnlichkeit zu berechnen. Das Ergebnis wird auf vier Dezimalstellen formatiert ausgegeben.
Berechnung der Pearson-Korrelation und Ausgabe
pearson_corr = np.corrcoef(user1, user2)[0, 1];
print(f"Pearson Correlation: {pearson_corr:.4f}");
Mit np.corrcoef wird die Pearson-Korrelationsmatrix für die beiden Benutzervektoren berechnet. Der Wert an Position [0, 1] gibt die Korrelation zwischen Benutzer 1 und Benutzer 2 an. Die Ausgabe dieses Wertes zeigt, wie stark die Bewertungsschemata der Benutzer nach Entfernung des durchschnittlichen Bewertungseinflusses linear zusammenhängen.
1. Was ist der Hauptunterschied zwischen Kosinus-Ähnlichkeit und Pearson-Korrelation beim Vergleich von Benutzervektoren?
2. Welches Maß sollte gewählt werden, wenn Benutzer verglichen werden sollen, die Objekte auf sehr unterschiedlichen Skalen bewerten (zum Beispiel gibt ein Benutzer immer hohe Bewertungen und ein anderer immer niedrige)?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen