Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Kosinus-Ähnlichkeit und Pearson-Korrelation | Kollaboratives Filtern und Verhaltensbasierte Abgleichsysteme
Market Basket Analyse und Empfehlungssysteme

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=1nAiBii=1nAi2i=1nBi2\frac {\sum_{i=1}^{n} A_i B_i} {\sqrt{\sum_{i=1}^{n} A_i^2} \cdot \sqrt{\sum_{i=1}^{n} B_i^2}}

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(AiAˉ)(BiBˉ)i=1n(AiAˉ)2i=1n(BiBˉ)2\text{Pearson Correlation} = \frac{\sum_{i=1}^{n} (A_i - \bar{A})(B_i - \bar{B})}{\sqrt{\sum_{i=1}^{n} (A_i - \bar{A})^2} \cdot \sqrt{\sum_{i=1}^{n} (B_i - \bar{B})^2}}

wobei Aˉ\bar{A} und Bˉ\bar{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

Kosinus-Ähnlichkeit
expand arrow
  • 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.
Pearson-Korrelation
expand arrow
  • 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.

12345678910111213141516171819
import 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)?

question mark

Was ist der Hauptunterschied zwischen Kosinus-Ähnlichkeit und Pearson-Korrelation beim Vergleich von Benutzervektoren?

Wählen Sie die richtige Antwort aus

question mark

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)?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 2

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 3. Kapitel 2
some-alt