Cosinusgelijkenis en Pearson-correlatie
Veeg om het menu te tonen
Cosinusgelijkenis
Cosinusgelijkenis is een maatstaf die de gelijkenis tussen twee vectoren kwantificeert door de cosinus van de hoek tussen hen te meten. Het wordt wiskundig gedefinieerd als:
Cosine Similarity = ∑i=1nAi2⋅∑i=1nBi2∑i=1nAiBi
waarbij A en B gebruikers- of itemvectoren zijn. Geometrisch geeft cosinusgelijkenis weer hoe uitgelijnd twee vectoren zijn, ongeacht hun grootte. Een waarde van 1 betekent dat de vectoren in dezelfde richting wijzen (maximale gelijkenis), 0 betekent dat ze orthogonaal zijn (geen gelijkenis), en -1 betekent dat ze in tegenovergestelde richting wijzen. In gedragsmatige matching is cosinusgelijkenis nuttig wanneer het patroon van voorkeuren belangrijker is dan de absolute waarden, bijvoorbeeld bij het vergelijken van gebruikers die items op verschillende schalen beoordelen.
Pearson-correlatie
Pearson-correlatie meet de lineaire relatie tussen twee vectoren, waarbij zowel de richting als het gemiddelde van de gegevens in aanmerking worden genomen. De formule is:
Pearson Correlation=∑i=1n(Ai−Aˉ)2⋅∑i=1n(Bi−Bˉ)2∑i=1n(Ai−Aˉ)(Bi−Bˉ)
waarbij Aˉ en Bˉ de gemiddelden zijn van de vectoren A en B. Pearson-correlatie varieert van -1 (perfect negatieve lineaire relatie) tot 1 (perfect positieve lineaire relatie), met 0 als aanduiding voor geen lineaire relatie. Deze maatstaf is vooral nuttig wanneer gebruikers of items vergeleken worden na het verwijderen van individuele vooroordelen, bijvoorbeeld wanneer een gebruiker consequent hoger of lager beoordeelt dan een ander.
Vergelijking
- Richt zich op de oriëntatie van de vectoren en negeert hun gemiddelde en grootte;
- Geschikt voor schaarse data waarbij veel beoordelingen ontbreken of nul zijn, maar kan gelijkenis overschatten wanneer gebruikers systematisch verschillende beoordelingsschalen hanteren.
- Haalt het gemiddelde uit elke vector, waardoor het robuust is tegen verschillen in schaal of basisvoorkeur;
- Beter wanneer controle over gebruikers- of itemvooroordelen gewenst is, maar kan niet-lineaire relaties mogelijk niet vastleggen.
Voorbeeld: Beide Maten Berekenen
Stel, je hebt twee gebruikers die vier items hebben beoordeeld. Hun beoordelingen zijn:
- Gebruiker 1:
[4, 0, 3, 5] - Gebruiker 2:
[5, 1, 2, 4]
Je kunt zowel de cosinusgelijkenis als de Pearson-correlatie voor deze vectoren berekenen om hun gedragsmatige gelijkenis te vergelijken.
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}")
Stapsgewijze Uitleg van de Code
Definiëren van Gebruikersbeoordelingsarrays
user1 = np.array([4, 0, 3, 5]);user2 = np.array([5, 1, 2, 4]);
Je maakt twee NumPy-arrays aan, elk die de beoordelingen van een gebruiker voor vier items weergeven. Deze arrays zijn je gebruikersvectoren.
Definiëren van de Cosinusgelijkenisfunctie
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)
- Berekening van het inwendig product:
dot_product = np.dot(a, b);
Vermenigvuldigt overeenkomstige elementen van de twee vectoren en telt deze op. Dit meet in hoeverre de twee vectoren in dezelfde richting wijzen. - Normberekeningen:
norm_a = np.linalg.norm(a);norm_b = np.linalg.norm(b);
Berekent de lengte (magnitude) van elke gebruikersvector. De norm is de vierkantswortel van de som van de kwadraten van de elementen van de vector. - Gelijkenisberekening:
return dot_product / (norm_a * norm_b);
Deelt het inwendig product door het product van de twee normen. Het resultaat is de cosinus van de hoek tussen de twee vectoren, wat hun gelijkenis aangeeft.
Berekenen van Cosinusgelijkenis en Afdrukken
cos_sim = cosine_similarity(user1, user2);
print(f"Cosine Similarity: {cos_sim:.4f}");
Je roept de functie aan met je gebruikersvectoren om hun cosinusgelijkenis te berekenen en drukt vervolgens het resultaat af, geformatteerd tot vier decimalen.
Berekenen van Pearson-correlatie en Afdrukken
pearson_corr = np.corrcoef(user1, user2)[0, 1];
print(f"Pearson Correlation: {pearson_corr:.4f}");
Je gebruikt np.corrcoef om de Pearson-correlatiematrix voor de twee gebruikersvectoren te berekenen. De waarde op positie [0, 1] geeft de correlatie tussen gebruiker 1 en gebruiker 2. Het afdrukken van deze waarde toont hoe sterk de beoordelingspatronen van de gebruikers lineair gerelateerd zijn na het verwijderen van hun gemiddelde beoordelingsbias.
1. Wat is het belangrijkste verschil tussen cosinusgelijkenis en Pearson-correlatie bij het vergelijken van gebruikersvectoren?
2. Welke statistiek moet je kiezen als je gebruikers wilt vergelijken die items op zeer verschillende schalen beoordelen (bijvoorbeeld, de ene gebruiker geeft altijd hoge beoordelingen en de andere altijd lage beoordelingen)?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.