Vai al contenuto principale

Cos'è la distanza coseno?

Esplora la distanza coseno e la similarità coseno. Scopri calcoli, applicazioni e confronti con altre metriche. Impara a implementarle in R e Python usando numpy.
· 8 min leggi

Scopri con l'IA

Rappresentazione della distanza coseno di Dall-E

"Distanza coseno." Immagine di Dall-E.

Misurare la similarità o dissimilarità tra punti dati è utile in molte applicazioni, dall'analisi del testo ai sistemi di raccomandazione. La distanza coseno è una metrica di distanza particolarmente efficace per dati ad alta dimensionalità o dataset sparsi, perché si concentra sull'orientamento dei vettori piuttosto che sulla loro magnitudine. 

Se vuoi rinfrescarti la memoria sui concetti comuni e importanti del machine learning, inizia con il nostro tutorial completo, Demistificare i concetti matematici per il deep learning. Prendi in considerazione anche la lettura di un altro articolo sull'apprendimento basato sulle distanze, Cos'è la distanza Manhattan? per ampliare la tua comprensione delle metriche di distanza e vedere le differenze tra distanza coseno e distanza Manhattan.

Definire la distanza coseno

Prendiamoci ora un momento per definire la distanza coseno secondo la sua formula. Per farlo, consideriamo anche la sua relazione con la similarità coseno.

Formula della distanza coseno

La distanza coseno misura la dissimilarità tra due vettori calcolando il coseno dell'angolo tra di essi. Può essere definita come uno meno la similarità coseno, come vediamo nella formula qui sotto:

Formula della distanza coseno usando la similarità coseno

In modo più dettagliato, con un'espressione matematica più formale, la distanza coseno si calcola usando la formula seguente. 

Formula della distanza coseno con espressione matematica completa

Qui, A⋅B rappresenta il prodotto scalare dei vettori A e B, e ||A|| ||B|| sono le magnitudini, o norme euclidee, dei vettori.

Con questa formula quantifichiamo la distanza coseno con un intervallo da 0 a 2. Una distanza coseno pari a 0 significa che i vettori sono perfettamente allineati (nessun angolo tra loro), indicando massima similarità, mentre un valore più vicino a 2 suggerisce che sono diametralmente opposti, indicando massima dissimilarità. 

Similarità coseno vs. distanza coseno

Come abbiamo visto, mentre la distanza coseno misura la dissimilarità tra vettori calcolando il coseno dell'angolo tra di essi, la similarità coseno quantifica quanto due vettori siano simili in base al coseno dello stesso angolo. 

La similarità coseno varia da -1 a 1. Una similarità coseno di 1 significa che i vettori sono perfettamente allineati (nessun angolo tra loro), indicando massima similarità, mentre un valore di -1 implica che sono diametralmente opposti, riflettendo massima dissimilarità. Valori vicini a zero indicano ortogonalità.

Calcolare e visualizzare la distanza coseno

Facciamo un esempio con due vettori: Vettore A (2,4) e Vettore B (4,2), e calcoliamone la distanza coseno seguendo questi passaggi:

  1. Calcola il prodotto scalare di A e B:

    A · B = (2 × 4) + (4 × 2) = 8 + 8 = 16

  2. Calcola le magnitudini di A e B:

    ||A|| = √(2² + 4²) = √20

    ||B|| = √(4² + 2²) = √20
  1. Dividi il prodotto scalare per il prodotto delle magnitudini:

    (A · B) / (||A|| × ||B||) = 16 / (√20 × √20) = 16 / 20 = 0.8
  1. Calcola la distanza coseno:

    Distanza coseno = 1 - 0.8 = 0.2

Con una distanza coseno di 0,2, il risultato è piuttosto basso sulla scala da 0 a 2. Questo suggerisce che i vettori A e B sono piuttosto simili in termini di direzione verso cui puntano. 

Distanza coseno vs. similarità coseno visualizzateDistanza coseno e similarità coseno. Immagine dell'autore.

In questa rappresentazione:

  • Il vettore A è (2, 4)
  • Il vettore B è (4, 2)
  • θ è l'angolo tra A e B

La similarità coseno (0,8) rappresenta il coseno dell'angolo θ. Poiché i vettori sono vicini in direzione, l'angolo è piccolo, con il risultato di un'elevata similarità coseno e una bassa distanza coseno (0,2).

Poiché la distanza coseno può anche essere definita come 1 - cos(θ), dove cos(θ) è la similarità coseno, ciò implica: 

  • Quando i vettori sono identici in direzione (θ = 0°), cos(θ) = 1, quindi la distanza coseno = 0
  • Quando i vettori sono perpendicolari (θ = 90°), cos(θ) = 0, quindi la distanza coseno = 1
  • Quando i vettori sono opposti (θ = 180°), cos(θ) = -1, quindi la distanza coseno = 2

Applicazioni della distanza coseno

Diamo un'occhiata ad alcune applicazioni importanti.

Elaborazione del linguaggio naturale (NLP)

La distanza coseno svolge un ruolo cruciale in varie attività di elaborazione del linguaggio naturale misurando in modo efficace le relazioni semantiche tra rappresentazioni testuali come word2vec. Per una breve panoramica di questi concetti, potresti trovare utile il nostro tutorial Capire la classificazione del testo in Python. 

Classificazione e similarità tra documenti

Nella classificazione dei documenti, la distanza coseno misura la similarità dei contenuti confrontando gli angoli tra i vettori dei documenti. Ogni documento viene convertito in un vettore, con dimensioni che riflettono i punteggi TF-IDF delle parole. I documenti simili puntano in direzioni simili, risultando in distanze coseno più piccole. 

Clustering e raggruppamento semantico

La distanza coseno eccelle in compiti di clustering come il clustering K-means, raggruppando documenti semanticamente correlati anche se non usano le stesse parole. È ideale per dati ad alta dimensionalità e sparsi, comuni nell'elaborazione del testo. Catturando l'orientamento dei vettori, consente un clustering tematico più accurato. Questa tecnica è spesso utilizzata nell'apprendimento non supervisionato per scoprire raggruppamenti naturali all'interno di insiemi di documenti, come l'aggregazione di articoli di cronaca per argomenti.

Information retrieval e motori di ricerca

Nell'information retrieval, la distanza coseno mette in corrispondenza le query di ricerca con i documenti tramite il confronto dei vettori. I motori di ricerca trovano quindi i documenti più vicini al vettore della query in termini di distanza coseno, posizionando più in alto per rilevanza quelli con le distanze minori. 

Word embedding e similarità tra parole 

Oltre l'analisi a livello di documento, la distanza coseno è fondamentale nei word embedding come Word2Vec o GloVe, dove le parole sono rappresentate come vettori ad alta dimensionalità. Questi embedding catturano il significato semantico in modo che parole con significati simili siano collocate vicine nello spazio vettoriale. La distanza coseno può essere usata per trovare le parole più simili a una data parola, supportare il rilevamento di sinonimi o persino alimentare funzionalità in modelli più complessi come quelli usati per l'analisi del sentiment o la traduzione automatica.

Riconoscimento delle immagini 

Nel riconoscimento delle immagini, la distanza coseno entra in gioco per confrontare i vettori di caratteristiche estratti dalle immagini. Che si tratti di individuare volti in una folla o di classificare foto naturalistiche, osserva quanto siano simili i vettori nell'orientamento, non solo nella grandezza. Questo focus aiuta a inquadrare le categorie giuste per le immagini, migliorando sia l'accuratezza sia l'efficacia dei sistemi basati su immagini.

Sistemi di raccomandazione 

Immagina la distanza coseno come un sensale nel mondo digitale, che abbina utenti a film o prodotti in linea con i loro gusti passati. Esaminando quanto strettamente i profili di utenti e item si allineano nei rispettivi spazi vettoriali, i sistemi di raccomandazione prevedono con sorprendente accuratezza ciò che probabilmente ti piacerà dopo.

Proprietà matematiche della distanza coseno

La distanza coseno ha proprietà matematiche uniche che la differenziano da altre misure di distanza. Comprendere queste proprietà è importante per interpretarla e applicarla correttamente in contesti diversi.

Proprietà di spazio metrico

In matematica, una metrica o funzione distanza è una funzione che definisce la distanza tra ogni coppia di elementi in un insieme. Per essere considerata una vera metrica, una funzione deve soddisfare quattro condizioni:

  1. Non negatività: d(x, y) ≥ 0

  2. Identità degli indiscernibili: d(x, y) = 0 se e solo se x = y

  3. Simmetria: d(x, y) = d(y, x)

  4. Disuguaglianza triangolare: d(x, z) ≤ d(x, y) + d(y, z)

La distanza coseno soddisfa le prime tre condizioni ma non sempre soddisfa la disuguaglianza triangolare. Ciò significa che in alcuni casi la somma delle distanze coseno tra i punti A e B e tra B e C potrebbe essere inferiore alla distanza coseno tra A e C.

Invarianza di scala

Una proprietà notevole della distanza coseno è la sua invarianza di scala. Ciò significa che la distanza coseno tra due vettori rimane la stessa anche se moltiplichi uno o entrambi i vettori per uno scalare (costante non nulla). Matematicamente, per qualsiasi scalare non nullo a e b, e per vettori x e y:

Distanza coseno(ax, by) = Distanza coseno(x, y)

Questa proprietà di invarianza di scala distingue la distanza coseno da molte altre misure di distanza.

Distanza coseno in Python e R

Qui esploreremo come calcolare la distanza coseno usando Python e R. 

Esempio in Python

In Python, possiamo usare NumPy per calcolare distanza coseno e similarità coseno. Lo facciamo trovando il prodotto scalare e la norma dei nostri vettori.

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

Output: 

Cosine Similarity: 0.80
Cosine Distance: 0.20

In alternativa, potremmo trovare la distanza coseno usando il pacchetto SciPy e la funzione 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))

Output: 

Cosine Distance: 0.20

Esempio in R

In R, puoi calcolare similarità e distanza coseno usando operazioni vettoriali di base. Ecco come:

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

Output:

“Cosine Similarity: 0.80”
“Cosine Distance: 0.20”

Nell'esempio R, la similarità coseno è calcolata usando operazioni manuali per prodotto scalare e norme, in modo simile all'esempio in Python, ma interamente con le funzionalità base di R. Nota come la distanza coseno sia derivata sottraendo la similarità coseno da 1.

Similarità coseno vs. distanza euclidea e altre metriche di distanza

L'immagine qui sotto amplia il nostro esempio iniziale, ma questa volta usa colori diversi per rappresentare tre tipi di misurazioni di distanza usando gli stessi vettori:

  • Distanza Manhattan misura la somma delle differenze assolute delle loro coordinate. 
  • Distanza euclidea calcola la distanza in linea retta tra due punti. 
  • Distanza coseno è derivata dal coseno dell'angolo tra due vettori. 

Distanza coseno vs. distanza euclidea vs. distanza Manhattan

Distanza coseno vs. distanza euclidea vs. distanza Manhattan. Immagine dell'autore.

Ciascuna di queste distanze fornisce intuizioni uniche sui dati. Le distanze euclidea e Manhattan sono distanze geometriche che tengono conto della magnitudine delle componenti del vettore, il che le rende adatte per misurazioni fisiche nello spazio. La distanza coseno, al contrario, si concentra sull'angolo tra i vettori, rendendola ideale per comprendere orientamento e direzionalità, soprattutto in spazi ad alta dimensionalità come quelli usati nell'analisi del testo e in altre aree della data science.

Conclusione

La distanza coseno e la sua complementare, la similarità coseno, sono strumenti potenti nella data science e nel machine learning. Queste metriche offrono prospettive uniche sulle relazioni tra vettori, in particolare in spazi ad alta dimensionalità dove le misure di distanza tradizionali possono risultare carenti.

Man mano che i dati continuano a crescere in complessità e dimensionalità, metriche come la distanza coseno probabilmente giocheranno un ruolo sempre più importante nello scoprire pattern e relazioni nascoste. Che tu stia lavorando su elaborazione del linguaggio naturale, sistemi di raccomandazione o qualsiasi ambito che tratti spazi vettoriali ad alta dimensionalità, comprendere e applicare la distanza coseno può offrire preziose intuizioni e migliorare le prestazioni dei tuoi modelli. Come passo successivo, segui il nostro corso interattivo completo, Progettare workflow di machine learning in Python, che include un intero capitolo sull'apprendimento basato sulle distanze e sui workflow non supervisionati. 

Vinod Chugani

Autore

Vinod Chugani

Vinod Chugani ha iniziato la sua carriera a Tokyo come il più giovane Head dell'Hedge Fund Sales Desk di JPMorgan e in seguito ha stabilito un record personale di vendite a Lehman Brothers, poi ha costruito un'attività di distribuzione di elettronica in 30 paesi superando i 100 milioni di SG$ di fatturato prima di passare ai dati. Laureato in Economia alla Duke e diplomato alla NYC Data Science Academy, è stato uno dei tre beneficiari di borsa di studio su oltre 100 candidati per il corso Building AI Applications di Hugo Bowne-Anderson su Maven. Oggi scrive per DataCamp, KDnuggets, Machine Learning Mastery e Statology su argomenti che vanno dalla statistica all'AI agentica, e fa da mentor a professionisti dei dati alla NYC Data Science Academy con oltre 1.000 sessioni one-to-one all'attivo.

 

Domande frequenti

Cos'è la similarità coseno?

La similarità coseno è una metrica usata per misurare quanto siano simili due vettori nella loro orientazione, a prescindere dalla magnitudine.

Qual è l'intervallo della similarità coseno?

L'intervallo della similarità coseno è da -1 a 1

Qual è la formula della similarità coseno?
 

La formula della similarità coseno calcola il coseno dell'angolo tra due vettori, definita come il prodotto scalare dei vettori diviso per il prodotto delle loro magnitudini.

Che differenza c'è tra prodotto scalare e similarità coseno?

Il prodotto scalare è la somma dei prodotti degli elementi corrispondenti di due vettori, e riflette sia magnitudine sia orientazione. La similarità coseno, invece, è il prodotto scalare normalizzato dal prodotto delle magnitudini dei vettori, concentrandosi esclusivamente sul loro allineamento direzionale.

In cosa la distanza coseno differisce dalla similarità coseno?

La distanza coseno e la similarità coseno sono misure complementari. La similarità coseno misura quanto due vettori siano simili, variando da -1 (esattamente opposti) a 1 (esattamente uguali). La distanza coseno, invece, misura quanto due vettori siano diversi ed è calcolata come 1 meno la similarità coseno. Varia da 0 (vettori identici) a 2 (vettori opposti).

Qual è la formula della distanza coseno?

La formula della distanza coseno misura l'angolo tra due vettori in uno spazio multidimensionale, calcolata come 1 meno il coseno dell'angolo tra i vettori.

Cosa indica una distanza coseno di 1?

Una distanza coseno pari a 1 indica che i due vettori confrontati sono perpendicolari (ortogonali) tra loro, formando un angolo di 90 gradi. Ciò significa che i vettori non hanno similarità direzionale, il che in pratica suggerisce temi completamente diversi nell'analisi del testo, elementi non correlati nei sistemi di raccomandazione o caratteristiche distinte nei vettori di feature del machine learning.

Qual è la differenza tra distanza coseno e distanza angolare?

La distanza coseno e la distanza angolare sono strettamente correlate ma non identiche. La distanza coseno è definita come 1 meno la similarità coseno, mentre la distanza angolare è l'angolo tra due vettori in radianti, calcolata come l'arccoseno della similarità coseno. La distanza angolare è proporzionale alla distanza coseno ma fornisce un'interpretazione geometrica più intuitiva.

Qual è la differenza tra distanza coseno e distanza euclidea?

Sebbene entrambe misurino la dissimilarità, la distanza coseno si concentra sull'angolo tra i vettori, ignorando la magnitudine. La distanza euclidea si concentra sulla magnitudine, misurando la distanza in linea retta tra due punti nello spazio.

Perché la distanza coseno è utile nell'analisi del testo?

La distanza coseno è particolarmente utile nell'analisi del testo perché si concentra sulla proporzione di parole (rappresentate come dimensioni del vettore) piuttosto che sulle loro frequenze assolute. Questo la rende efficace per confrontare documenti di lunghezze diverse e per identificare similarità tematiche indipendentemente dalla dimensione del documento.

Argomenti

Correlato