Cours

« Distance cosinus. » Image par Dall‑E.
Mesurer la similarité ou la dissimilarité entre des points de données est utile dans de nombreuses applications, de l'analyse de texte aux systèmes de recommandation. La distance cosinus est une métrique particulièrement efficace pour les données de grande dimension ou les jeux de données clairsemés, car elle s'intéresse à l'orientation des vecteurs plutôt qu'à leur magnitude.
Si vous souhaitez revoir les notions clés et courantes en apprentissage automatique, commencez par notre tutoriel complet, Demystifying Mathematical Concepts for Deep Learning. Lisez aussi notre article sur l'apprentissage basé sur les distances, What is Manhattan Distance?, pour élargir votre compréhension des métriques de distance et voir les différences entre la distance cosinus et la distance de Manhattan.
Définir la distance cosinus
Prenons le temps de définir la distance cosinus à partir de sa formule. Pour cela, considérons également sa relation avec la similarité cosinus.
Formule de la distance cosinus
La distance cosinus mesure la dissimilarité entre deux vecteurs en calculant le cosinus de l'angle qui les sépare. Elle peut se définir comme un moins la similarité cosinus, comme on le voit dans la formule ci‑dessous :
![]()
De façon plus détaillée, avec une expression mathématique formelle, la distance cosinus se calcule comme suit.

Ici, A⋅B représente le produit scalaire des vecteurs A et B, et ||A|| ||B|| sont les normes, ou normes euclidiennes, des vecteurs.
Avec cette formule, on quantifie la distance cosinus sur un intervalle de 0 à 2. Une distance cosinus de 0 signifie que les vecteurs sont parfaitement alignés (aucun angle entre eux), indiquant une similarité maximale, tandis qu'une valeur proche de 2 suggère qu'ils sont diamétralement opposés, indiquant une dissimilarité maximale.
Similarité cosinus vs distance cosinus
Comme nous l'avons vu, la distance cosinus mesure la dissimilarité entre des vecteurs via le cosinus de l'angle qui les sépare, tandis que la similarité cosinus quantifie leur ressemblance à partir du cosinus de ce même angle.
La similarité cosinus varie de -1 à 1. Une similarité de 1 signifie que les vecteurs sont parfaitement alignés (aucun angle), ce qui indique une similarité maximale, tandis qu'une valeur de -1 implique qu'ils sont diamétralement opposés, reflétant une dissimilarité maximale. Des valeurs proches de zéro indiquent une orthogonalité.
Calculer et visualiser la distance cosinus
Prenons un exemple avec deux vecteurs : vecteur A (2,4) et vecteur B (4,2), et calculons leur distance cosinus en suivant ces étapes :
- Calculez le produit scalaire de A et B :
A · B = (2 × 4) + (4 × 2) = 8 + 8 = 16 - Calculez les normes de A et B :
||A|| = √(2² + 4²) = √20
||B|| = √(4² + 2²) = √20
- Divisez le produit scalaire par le produit des normes :
(A · B) / (||A|| × ||B||) = 16 / (√20 × √20) = 16 / 20 = 0,8
- Calculez la distance cosinus :
Distance cosinus = 1 - 0,8 = 0,2
Avec une distance cosinus de 0,2, le résultat est assez faible sur l'échelle de 0 à 2. Cela suggère que les vecteurs A et B sont assez proches en termes de direction.
Distance cosinus et similarité cosinus. Image par l'auteur.
Dans cette représentation :
- Le vecteur A est (2, 4)
- Le vecteur B est (4, 2)
- θ est l'angle entre A et B
La similarité cosinus (0,8) représente le cosinus de l'angle θ. Comme les vecteurs sont proches en direction, l'angle est petit, ce qui donne une similarité cosinus élevée et une distance cosinus faible (0,2).
Puisque la distance cosinus peut aussi se définir comme 1 - cos(θ), où cos(θ) est la similarité cosinus, cela implique :
- Lorsque les vecteurs sont identiques en direction (θ = 0°), cos(θ) = 1, donc distance cosinus = 0
- Lorsque les vecteurs sont perpendiculaires (θ = 90°), cos(θ) = 0, donc distance cosinus = 1
- Lorsque les vecteurs sont opposés (θ = 180°), cos(θ) = -1, donc distance cosinus = 2
Applications de la distance cosinus
Passons en revue quelques applications clés.
Traitement du langage naturel (NLP)
La distance cosinus joue un rôle crucial dans diverses tâches de traitement du langage naturel en mesurant efficacement les relations sémantiques entre des représentations textuelles telles que word2vec. Pour une vue d'ensemble rapide de ces concepts, vous pouvez consulter notre tutoriel Understanding Text Classification in Python.
Classification et similarité de documents
En classification de documents, la distance cosinus mesure la similarité de contenu en comparant les angles entre les vecteurs de documents. Chaque document est converti en vecteur, avec des dimensions reflétant les scores TF‑IDF des mots. Des documents similaires pointent dans des directions proches, ce qui se traduit par des distances cosinus plus petites.
Clustering et regroupements sémantiques
La distance cosinus excelle dans des tâches de clustering comme le clustering K-means, en regroupant des documents sémantiquement proches même s'ils n'emploient pas les mêmes mots. Elle est idéale pour les données de grande dimension et clairsemées, fréquentes en traitement de texte. En capturant l'orientation des vecteurs, elle permet un regroupement thématique plus précis. Cette technique est souvent utilisée en apprentissage non supervisé pour découvrir des groupements naturels au sein de corpus, comme le regroupement d'articles d'actualité par thématique.
Recherche d'information et moteurs de recherche
En recherche d'information, la distance cosinus met en correspondance des requêtes et des documents par comparaison de vecteurs. Les moteurs trouvent les documents les plus proches du vecteur de requête en termes de distance cosinus, en classant plus haut les distances les plus faibles pour la pertinence.
Word embeddings et similarité entre mots
Au‑delà de l'analyse au niveau des documents, la distance cosinus est essentielle avec des embeddings de mots comme Word2Vec ou GloVe, où les mots sont représentés par des vecteurs de grande dimension. Ces embeddings capturent la sémantique de sorte que des mots de sens proche soient placés à proximité dans l'espace vectoriel. La distance cosinus sert à trouver les mots les plus similaires à un mot donné, à détecter des synonymes, ou encore à alimenter des fonctionnalités dans des modèles plus complexes utilisés pour l'analyse de sentiment ou la traduction automatique.
Reconnaissance d'images
En reconnaissance d'images, la distance cosinus compare les vecteurs de caractéristiques extraites des images. Qu'il s'agisse d'identifier des visages dans une foule ou de classer des photos de nature, elle examine la similarité d'orientation des vecteurs, et pas seulement leur taille. Cet angle d'approche aide à assigner les bonnes catégories aux images, améliorant la précision et l'efficacité des systèmes basés sur l'image.
Systèmes de recommandation
Imaginez la distance cosinus comme un entremetteur numérique, associant des utilisateurs à des films ou des produits en phase avec leurs préférences passées. En observant à quel point les profils d'utilisateurs et d'items s'alignent dans leurs espaces vectoriels, les systèmes de recommandation prédisent avec une grande justesse ce que vous avez de fortes chances d'apprécier ensuite.
Propriétés mathématiques de la distance cosinus
La distance cosinus possède des propriétés mathématiques spécifiques qui la distinguent d'autres mesures de distance. Les comprendre est important pour l'interpréter et l'appliquer correctement selon les contextes.
Propriétés d'espace métrique
En mathématiques, une métrique ou fonction de distance définit la distance entre chaque paire d'éléments d'un ensemble. Pour être une véritable métrique, une fonction doit satisfaire quatre conditions :
-
Non‑négativité : d(x, y) ≥ 0
-
Identité des indiscernables : d(x, y) = 0 si et seulement si x = y
-
Symétrie : d(x, y) = d(y, x)
-
Inegalité triangulaire : d(x, z) ≤ d(x, y) + d(y, z)
La distance cosinus satisfait les trois premières conditions, mais ne respecte pas toujours l'inégalité triangulaire. Cela signifie que, dans certains cas, la somme des distances cosinus entre les points A et B puis entre B et C peut être inférieure à la distance cosinus entre A et C.
Invariance d'échelle
Une propriété notable de la distance cosinus est son invariance d'échelle. La distance cosinus entre deux vecteurs reste la même même si vous multipliez l'un ou l'autre (ou les deux) vecteurs par un scalaire non nul. Mathématiquement, pour tout scalaire non nul a et b, et pour des vecteurs x et y :
Distance cosinus(ax, by) = Distance cosinus(x, y)
Cette invariance d'échelle distingue la distance cosinus de nombreuses autres mesures de distance.
Distance cosinus en Python et R
Voyons comment calculer la distance cosinus en Python et en R.
Exemple Python
En Python, nous pouvons utiliser NumPy pour calculer la distance et la similarité cosinus, en utilisant le produit scalaire et la norme de nos vecteurs.
import numpy as np
# Define the vectors
A = np.array([2, 4])
B = np.array([4, 2])
# Calculate cosine similarity
cos_similarity = np.dot(A, B) / (np.linalg.norm(A) * np.linalg.norm(B))
# Calculate cosine distance
cos_distance = 1 - cos_similarity
print("Cosine Similarity: {:.2f}".format(cos_similarity))
print("Cosine Distance: {:.2f}".format(cos_distance))
Sortie :
Cosine Similarity: 0.80
Cosine Distance: 0.20
Autre option : utiliser le paquet SciPy et la fonction cosine().
import numpy as np
from scipy.spatial.distance import cosine
# Define the vectors
A = np.array([2, 4])
B = np.array([4, 2])
# Calculate cosine distance
cos_distance = cosine(A, B) # Uses scipy's cosine for cosine distance
print("Cosine Distance: {:.2f}".format(cos_distance))
Sortie :
Cosine Distance: 0.20
Exemple R
En R, vous pouvez calculer la similarité et la distance cosinus avec des opérations vectorielles de base. Voici comment procéder :
# Define the vectors
A <- c(2, 4)
B <- c(4, 2)
# Calculate cosine similarity
cos_similarity <- sum(A * B) / (sqrt(sum(A^2)) * sqrt(sum(B^2)))
# Note: We can also use %*% operator for matrix multiplication.
# %*%, when applied to two vectors, calculates the dot product.
# For example: cos_similarity <- A %*% B / (sqrt(sum(A^2)) * sqrt(sum(B^2)))
# Calculate cosine distance
cos_distance <- 1 - cos_similarity
# Print the result
print(paste("Cosine Similarity:", cos_similarity))
print(paste("Cosine Distance:", cos_distance))
Sortie :
“Cosine Similarity: 0.80”
“Cosine Distance: 0.20”
Dans l'exemple R, la similarité cosinus est calculée à l'aide d'opérations manuelles pour le produit scalaire et les normes, comme dans l'exemple Python, mais entièrement avec les fonctionnalités de base de R. Notez que la distance cosinus est obtenue en soustrayant la similarité cosinus de 1.
Similarité cosinus vs distance euclidienne et autres métriques
La visualisation ci‑dessous prolonge notre exemple initial, mais cette fois, elle utilise des couleurs différentes pour représenter trois types de mesures de distance en utilisant les mêmes vecteurs :
- Distance de Manhattan : somme des différences absolues de leurs coordonnées.
- Distance euclidienne : distance en ligne droite entre deux points.
- Distance cosinus : dérivée du cosinus de l'angle entre deux vecteurs.

Distance cosinus vs distance euclidienne vs distance de Manhattan. Image par l'auteur.
Chacune de ces distances offre des éclairages différents sur les données. Les distances euclidienne et de Manhattan sont des distances géométriques qui tiennent compte de la magnitude des composantes, ce qui les rend adaptées aux mesures physiques dans l'espace. La distance cosinus, au contraire, se concentre sur l'angle entre les vecteurs, ce qui la rend idéale pour appréhender l'orientation et la directionnalité, en particulier dans des espaces de grande dimension comme en analyse de texte et dans d'autres domaines de la data science.
Conclusion
La distance cosinus et sa contrepartie, la similarité cosinus, sont des outils puissants en data science et en apprentissage automatique. Ces métriques offrent un point de vue unique sur les relations entre vecteurs, notamment dans des espaces de grande dimension où les mesures de distance classiques montrent leurs limites.
À mesure que les données gagnent en complexité et en dimensionnalité, des métriques comme la distance cosinus joueront un rôle de plus en plus important pour révéler des schémas et relations cachés. Que vous travailliez sur du traitement du langage naturel, des systèmes de recommandation, ou tout domaine manipulant des espaces vectoriels de grande dimension, comprendre et appliquer la distance cosinus peut fournir des insights précieux et améliorer les performances de vos modèles. Pour aller plus loin, suivez notre cours interactif complet, Designing Machine Learning Workflows in Python, qui consacre un chapitre entier à l'apprentissage basé sur les distances et aux workflows non supervisés.
Vinod Chugani a débuté sa carrière à Tokyo comme plus jeune responsable du desk ventes hedge funds de JPMorgan, puis a signé un record de ventes individuel chez Lehman Brothers, avant de développer une activité de distribution d’électronique présente dans 30 pays, dépassant les 100 millions SG$ de chiffre d’affaires, puis de se tourner vers la data. Diplômé en économie de Duke et ancien élève de la NYC Data Science Academy, il a fait partie des trois lauréats de bourse sur plus de 100 candidatures pour le cours Building AI Applications de Hugo Bowne-Anderson sur Maven. Aujourd’hui, il écrit pour DataCamp, KDnuggets, Machine Learning Mastery et Statology, sur des sujets allant des statistiques à l’IA agentique, et accompagne des professionnels de la data à la NYC Data Science Academy, avec plus de 1 000 séances individuelles à son actif.
Questions fréquentes
Qu'est-ce que la similarité cosinus ?
La similarité cosinus est une métrique utilisée pour mesurer à quel point deux vecteurs sont proches en orientation, indépendamment de leur magnitude.
Quelle est l'étendue de la similarité cosinus ?
La similarité cosinus varie de -1 à 1.
Quelle est la formule de la similarité cosinus ?
La formule de similarité cosinus calcule le cosinus de l'angle entre deux vecteurs, défini comme le produit scalaire des vecteurs divisé par le produit de leurs normes.
Quelle différence entre produit scalaire et similarité cosinus ?
Le produit scalaire est la somme des produits des éléments correspondants de deux vecteurs, reflétant à la fois leur magnitude et leur orientation. La similarité cosinus, elle, normalise le produit scalaire par le produit des normes des vecteurs et se concentre uniquement sur leur alignement directionnel.
En quoi la distance cosinus diffère-t-elle de la similarité cosinus ?
La distance cosinus et la similarité cosinus sont complémentaires. La similarité cosinus mesure à quel point deux vecteurs se ressemblent, de -1 (opposés) à 1 (identiques). La distance cosinus, elle, mesure leur différence et se calcule comme 1 moins la similarité cosinus. Elle varie de 0 (vecteurs identiques) à 2 (vecteurs opposés).
Quelle est la formule de la distance cosinus ?
La formule de la distance cosinus mesure l'angle entre deux vecteurs dans un espace multidimensionnel, calculée comme 1 moins le cosinus de l'angle entre les vecteurs.
Que signifie une distance cosinus de 1 ?
Une distance cosinus de 1 indique que les deux vecteurs comparés sont perpendiculaires (orthogonaux), formant un angle de 90 degrés. Cela signifie qu'ils n'ont aucune similarité directionnelle, ce qui, en pratique, suggère des thèmes totalement différents en analyse de texte, des éléments non liés dans les systèmes de recommandation, ou des caractéristiques distinctes dans des vecteurs de features en apprentissage automatique.
Quelle différence entre distance cosinus et distance angulaire ?
La distance cosinus et la distance angulaire sont proches mais distinctes. La distance cosinus est définie comme 1 moins la similarité cosinus, tandis que la distance angulaire est l'angle entre deux vecteurs en radians, calculé comme l'arccosinus de la similarité cosinus. La distance angulaire est proportionnelle à la distance cosinus mais offre une interprétation géométrique plus intuitive.
Quelle différence entre distance cosinus et distance euclidienne ?
Bien que toutes deux mesurent une dissimilarité, la distance cosinus se concentre sur l'angle entre les vecteurs, en ignorant la magnitude. La distance euclidienne se concentre sur la magnitude, en mesurant la distance en ligne droite entre deux points dans l'espace.
Pourquoi la distance cosinus est-elle utile en analyse de texte ?
La distance cosinus est particulièrement utile en analyse de texte car elle met l'accent sur la proportion des mots (représentés comme dimensions du vecteur) plutôt que sur leurs fréquences absolues. Elle est donc efficace pour comparer des documents de tailles différentes et identifier des similarités thématiques indépendamment de la longueur.
