Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Similarité Cosinus et Corrélation de Pearson | Systèmes de filtrage collaboratif et d'appariement comportemental
Analyse du Panier de Marché et Systèmes de Recommandation

Similarité Cosinus et Corrélation de Pearson

Glissez pour afficher le menu

Similarité cosinus

La similarité cosinus est une mesure qui quantifie la similarité entre deux vecteurs en mesurant le cosinus de l’angle entre eux. Elle est définie mathématiquement comme suit :

Similarité cosinus = 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}}

où A et B sont des vecteurs d’utilisateurs ou d’articles. Géométriquement, la similarité cosinus indique à quel point deux vecteurs sont alignés, indépendamment de leur magnitude. Une valeur de 1 signifie que les vecteurs pointent dans la même direction (similarité maximale), 0 qu’ils sont orthogonaux (aucune similarité), et -1 qu’ils pointent dans des directions opposées. En appariement comportemental, la similarité cosinus est utile lorsque l’on s’intéresse au schéma des préférences plutôt qu’à leurs valeurs absolues, par exemple lors de la comparaison d’utilisateurs qui évaluent des articles sur des échelles différentes.

Corrélation de Pearson

La corrélation de Pearson mesure la relation linéaire entre deux vecteurs, en tenant compte à la fois de la direction et de la moyenne des données. La formule est :

Correˊlation de Pearson=i=1n(AiAˉ)(BiBˉ)i=1n(AiAˉ)2i=1n(BiBˉ)2\text{Corrélation de Pearson} = \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}}

Aˉ\bar{A} et Bˉ\bar{B} sont les moyennes des vecteurs A et B. La corrélation de Pearson varie de -1 (relation linéaire négative parfaite) à 1 (relation linéaire positive parfaite), avec 0 indiquant l’absence de relation linéaire. Cette mesure est particulièrement utile pour comparer des utilisateurs ou des articles après avoir supprimé les biais individuels, par exemple lorsqu’un utilisateur a tendance à attribuer des notes systématiquement plus élevées ou plus basses qu’un autre.

Comparaison

Similarité cosinus
expand arrow
  • Se concentre sur l’orientation des vecteurs et ignore leur moyenne et leur magnitude ;
  • Constitue un bon choix pour des données clairsemées où de nombreuses évaluations sont manquantes ou nulles, mais peut surestimer la similarité lorsque les utilisateurs ont des échelles d’évaluation systématiquement différentes.
Corrélation de Pearson
expand arrow
  • Soustrait la note moyenne de chaque vecteur, ce qui le rend robuste aux différences d’échelle ou de préférence de base ;
  • Plus adapté lorsque l’on souhaite contrôler le biais utilisateur ou article, mais peut ne pas capturer les relations non linéaires.

Exemple : Calcul des deux métriques

Supposons que vous ayez deux utilisateurs ayant noté quatre articles. Leurs évaluations sont :

  • Utilisateur 1 : [4, 0, 3, 5]
  • Utilisateur 2 : [5, 1, 2, 4]

Vous pouvez calculer à la fois la similarité cosinus et la corrélation de Pearson pour ces vecteurs afin de comparer leur similarité comportementale.

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}")

Explication du code étape par étape

Définition des tableaux d'évaluations utilisateurs

  • user1 = np.array([4, 0, 3, 5]);
  • user2 = np.array([5, 1, 2, 4]);

Création de deux tableaux NumPy, chacun représentant les évaluations d'un utilisateur pour quatre articles. Ces tableaux sont vos vecteurs utilisateurs.

Définition de la fonction de similarité cosinus

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)
  • Calcul du produit scalaire : dot_product = np.dot(a, b);
    Multiplie les éléments correspondants des deux vecteurs et fait la somme. Cela mesure à quel point les deux vecteurs pointent dans la même direction.
  • Calculs des normes :
    norm_a = np.linalg.norm(a);
    norm_b = np.linalg.norm(b);
    Calcule la longueur (norme) de chaque vecteur utilisateur. La norme est la racine carrée de la somme des carrés des éléments du vecteur.
  • Calcul de la similarité : return dot_product / (norm_a * norm_b);
    Divise le produit scalaire par le produit des deux normes. Le résultat est le cosinus de l'angle entre les deux vecteurs, indiquant leur similarité.

Calcul de la similarité cosinus et affichage
cos_sim = cosine_similarity(user1, user2);
print(f"Cosine Similarity: {cos_sim:.4f}");
Appel de la fonction avec vos vecteurs utilisateurs pour calculer leur similarité cosinus, puis affichage du résultat formaté à quatre décimales.

Calcul de la corrélation de Pearson et affichage
pearson_corr = np.corrcoef(user1, user2)[0, 1];
print(f"Pearson Correlation: {pearson_corr:.4f}");
Utilisation de np.corrcoef pour calculer la matrice de corrélation de Pearson pour les deux vecteurs utilisateurs. La valeur à la position [0, 1] donne la corrélation entre user1 et user2. L'affichage de cette valeur montre à quel point les schémas d'évaluation des utilisateurs sont linéairement liés après suppression du biais de note moyenne.

1. Quelle est la principale différence entre la similarité cosinus et la corrélation de Pearson lors de la comparaison de vecteurs utilisateurs ?

2. Quelle métrique faut-il choisir si l'on souhaite comparer des utilisateurs qui notent les éléments sur des échelles très différentes (par exemple, un utilisateur donne toujours des notes élevées et un autre donne des notes basses) ?

question mark

Quelle est la principale différence entre la similarité cosinus et la corrélation de Pearson lors de la comparaison de vecteurs utilisateurs ?

Sélectionnez la réponse correcte

question mark

Quelle métrique faut-il choisir si l'on souhaite comparer des utilisateurs qui notent les éléments sur des échelles très différentes (par exemple, un utilisateur donne toujours des notes élevées et un autre donne des notes basses) ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 2

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Section 3. Chapitre 2
some-alt