Che cos'è la similarità del coseno?

Vista dall'alto di pedoni a Paternoster Square, Londra, Regno Unito

Autori

Tom Krantz

Staff Writer

IBM Think

Alexandra Jonker

Staff Editor

IBM Think

Che cos'è la similarità del coseno?

La similarità del coseno è una metrica di somiglianza ampiamente utilizzata che determina la somiglianza di due punti dati in base alla direzione in cui puntano anziché alla loro lunghezza o dimensione. È particolarmente efficace in spazi ad alta dimensionalità in cui le metriche tradizionali basate sulla distanza possono non funzionare bene.

 

Il calcolo della similarità del coseno richiede la misurazione del coseno dell'angolo (teta) tra due vettori diversi da zero in uno spazio di prodotto interno. Questa misurazione produce un punteggio di somiglianza del coseno. I valori di similarità del coseno variano da -1 a 1:

  • Un punteggio di similarità del coseno pari a 1 indica che i vettori puntano esattamente nella stessa direzione.
  • Un punteggio di similarità del coseno pari a 0 indica che i vettori sono ortogonali, ossia non hanno alcuna somiglianza direzionale.
  • Un punteggio di similarità del coseno di -1 indica che i vettori puntano in direzioni esattamente opposte.

Pensalo come a un confronto fra frecce: se puntano nella stessa direzione, sono molto simili. Quelle perpendicolari non sono correlate, mentre due frecce che puntano in direzioni opposte sono diverse.

Questo approccio angolare è fondamentale per molti sistemi di machine learning (ML), elaborazione del linguaggio naturale (NLP) e intelligenza artificiale (AI). Queste tecnologie si basano su rappresentazioni vettoriali dei dati, il che significa che i dati vengono convertiti in forma numerica per acquisirne il significato e la similarità con altri.

Ad esempio, un chatbot può utilizzare tecniche di embedding di parole per convertire il testo in forma vettoriale, modelli di deep learning per comprendere algoritmi di ricerca di intenti e somiglianze per recuperare la risposta più pertinente da un database. La similarità del coseno abilita ciascuno di questi passaggi.

Le ultime notizie nel campo della tecnologia, supportate dalle analisi degli esperti

Resta al passo con le tendenze più importanti e interessanti del settore relative ad AI, automazione, dati e altro con la newsletter Think. Leggi l'Informativa sulla privacy IBM.

Grazie per aver effettuato l'iscrizione!

L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.

Perché la similarità del coseno è importante?

Che si tratti di prevedere la parola successiva in una frase o di suggerire un posto vicino dove mangiare, molti dei sistemi che modellano la nostra vita digitale si basano sulla misurazione della similarità. Tecnologie come i motori di raccomandazione e i modelli linguistici di grandi dimensioni (LLM) utilizzano la similarità del coseno per identificare quali contenuti sono più pertinenti e quali risposte hanno più "senso".

Queste decisioni vengono prese analizzando le relazioni tra i punti dati in set di dati ad alta dimensione o sparsi. Nell'analisi del testo classica, i documenti vengono spesso convertiti in rappresentazioni numeriche utilizzando tecniche come Term Frequency-Inverse Document Frequency (tf-idf), una forma avanzata di bag of words (BoW). Mentre il BoW valuta la frequenza con cui un termine appare in un documento, il tf-idf aggiusta quel punteggio in base alla frequenza o alla rarità della parola in un set di dati più ampio.

I sistemi più avanzati utilizzano reti neurali per generare embedding, cioè rappresentazioni numeriche di punti dati che esprimono diversi tipi di dati come una matrice di numeri. Ad esempio, parole come "medico" e "infermiere" possono apparire vicine l'una all'altra nello spazio vettoriale, il che significa che il modello le vede come correlate. Questi embedding spesso richiedono passaggi aggiuntivi, come l'analisi delle componenti (PCA), per rendere i confronti su larga scala più rapidi ed efficienti.

In entrambi gli approcci, la similarità del coseno misura il grado di allineamento dei vettori risultanti, aiutando i sistemi a identificare modelli e relazioni attraverso set di dati complessi. Nell'NLP, nell'AI e nella data science la similarità del coseno gioca un ruolo centrale per:

Classifica di rilevanza

I motori di ricerca utilizzano la similarità del coseno per abbinare le query degli utenti ai documenti pertinenti, migliorando sia la precisione che la qualità del posizionamento.

Confronto semantico

Le reti neurali e gli LLM confrontano gli embedding vettoriali utilizzando la similarità del coseno per valutare la vicinanza semantica tra gli input.

Consigli personalizzati

I sistemi di raccomandazione applicano tecniche di ricerca per similarità per suggerire prodotti, media o contenuti in linea con il comportamento e le preferenze degli utenti.

Modellazione degli argomenti

La similarità del coseno supporta la modellazione degli argomenti raggruppando i documenti con temi simili. Queste distribuzioni di argomenti vengono in genere generate utilizzando metodi come l'allocazione latente di Dirichlet (LDA).

Oltre ai casi d'uso del testo, la similarità del coseno supporta anche qualsiasi scenario in cui i modelli multidimensionali devono essere confrontati in modo rapido e accurato, come nel riconoscimento delle immagini, nel rilevamento delle frodi e nella segmentazione dei clienti.

Mixture of Experts | 28 agosto, episodio 70

Decoding AI: Weekly News Roundup

Unisciti al nostro gruppo di livello mondiale di ingegneri, ricercatori, leader di prodotto e molti altri mentre si fanno strada nell'enorme quantità di informazioni sull'AI per darti le ultime notizie e gli ultimi insight sull'argomento.

Come funziona la similarità del coseno?

Fondamentalmente, la similarità del coseno misura l'allineamento di due vettori calcolando il coseno dell'angolo tra essi.

Nelle applicazioni del mondo reale, come il confronto di documenti, i dati sono rappresentati come vettori in uno spazio multidimensionale. Ogni dimensione può rappresentare una parola, un attributo o un'azione specifica e il valore in tale dimensione riflette l'importanza o l'importanza dell'elemento.

Per calcolare la similarità del coseno:

  1. Trova il prodotto scalare: moltiplica i valori corrispondenti in ogni vettore e somma i risultati. Questo acquisisce l'allineamento direzionale dei vettori.

  2. Determina l'entità: la magnitudine (o lunghezza) di ciascun vettore viene calcolata utilizzando la radice quadrata della somma delle sue componenti al quadrato.

  3. Calcolare la similarità del coseno: la similarità del coseno si trova dividendo il prodotto del punto (fase 1) per il prodotto delle grandezze dei vettori (fase 2). Il risultato è un punteggio di similarità del coseno compreso tra -1 e 1.

La formula può essere rappresentata come:

Similarità del coseno = (A · B) / (||A|| × ||B||)

Dove:

  • A · B è il prodotto scalare dei vettori A e B
  • ||A|| è la grandezza (lunghezza) del vettore A
  • ||B|| è la grandezza del vettore B

Il punteggio risultante varia da -1 a 1.

Per fare un ulteriore esempio, immagina due parole: " re " e " regina. "

Entrambi vengono utilizzati in contesti simili. Quando viene elaborata da un LLM, ogni parola viene tradotta in un embedding che cattura il significato semantico di un termine in base al suo utilizzo in milioni di frasi. Poiché "re" e "regina" appaiono spesso accanto a parole come "reale", "trono" e "monarca", gli embedding risultanti punteranno quasi nella stessa direzione.

Consideriamo ora una terza parola: "mela". Sebbene possa comparire in alcuni degli stessi documenti, è più spesso associata a termini come "frutta", "frutteto" o "croccante". Il suo vettore punta in una direzione quasi opposta, determinando una similarità del coseno inferiore. Se tracciate su un grafico, le frecce di "re" e "regina" viaggerebbero quasi affiancate, mentre la freccia "mela" si allontanerebbe con un angolo notevole.

Per ottimizzare le prestazioni e supportare un recupero più rapido delle corrispondenze pertinenti, molte organizzazioni memorizzano questi embedding in database vettorialispecializzati, cioè strumenti progettati per indicizzare i vettori ad elevata dimensionalità per migliorare la ricerca e restituire risultati più simili.

Similarità del coseno rispetto ad altre metriche di somiglianza

La similarità del coseno è solo un approccio in un ecosistema di metriche più ampio. Ogni metrica è progettata per valutare la similarità in modi diversi ed è più adatta a tipi specifici di dati all'interno di uno spazio multidimensionale. Ecco alcuni esempi:

Distanza euclidea

Questa metrica calcola la distanza in linea retta tra due punti in uno spazio vettoriale. È intuitiva e comunemente usata nell'analisi dei dati, soprattutto per confrontare dati numerici o caratteristiche fisiche. Tuttavia, negli spazi ad elevata dimensionalità in cui i vettori tendono a convergere a distanza, la distanza euclidea diventa meno affidabile per attività come il cluster o il recupero delle informazioni.

Similarità di Jaccard

La somiglianza di Jaccard misura la sovrapposizione tra due set di dati dividendo la dimensione dell'intersezione per la dimensione dell'unione. Viene comunemente applicata a set di dati che coinvolgono dati categorici o binari, come tag, clic o visualizzazioni di prodotti, ed è particolarmente utile per i sistemi di raccomandazione. Sebbene Jaccard si concentri su presenza o assenza, non tiene conto della frequenza o della grandezza.

Prodotto a punti

Il prodotto scalare dei vettori A e B riflette quanto da vicino puntano nella stessa direzione, ma senza normalizzare le grandezze. Questo fattore lo rende sensibile dal punto di vista scalare: i vettori con valori elevati possono apparire più simili anche se la loro direzione è diversa.

La similarità del coseno migliora questa metrica dividendo il prodotto scalare dei vettori per il prodotto delle grandezze dei vettori (la formula di similarità del coseno). La similarità del coseno è quindi più stabile per il confronto di vettori diversi dallo zero di lunghezze variabili, specialmente in set di dati ad alta dimensione.

In pratica, le organizzazioni utilizzano spesso misure di similarità del coseno insieme ad altre metriche a seconda della struttura del set di dati e del tipo di dissomiglianza che vogliono evitare.

Ad esempio, la ricerca per similarità nelle applicazioni di NLP o LLM spesso combina la distanza del coseno con l'embedding di modelli addestrati su deep learning. I calcoli della similarità del coseno sono integrati anche in strumenti open source come Scikit-Learn, TensorFlow e PyTorch, rendendo più facile per i data scientist calcolare la similarità del coseno su set di dati di grandi dimensioni.

Benefici della similarità del coseno

Dato il suo ruolo in una miriade di sistemi, la similarità del coseno offre diversi vantaggi rispetto alle metriche di somiglianza tradizionali:

  • Robusta in uno spazio ad elevata dimensionalità: la similarità del coseno risulta affidabile in ambienti ad elevata dimensionalità in cui altre metriche basate sulla distanza possono peggiorare.
  • Insensibile alla grandezza: la similarità del coseno ignora la grandezza dei vettori, cosa che la rende particolarmente utile quando i documenti o i punti dati variano per scala o lunghezza.
  • Implementazione efficiente: la similarità del coseno è leggera dal punto di vista computazionale e può essere implementata utilizzando le librerie di linguaggi di programmazione più diffuse, come NumPy e SciPy.
  • Applicabile a tutti i domini: la similarità del coseno è abbastanza flessibile da supportare un'ampia gamma di casi d'uso, tra cui text mining, recupero di informazioni, ricerca di similarità e consigli in tempo reale.

Sfide legate all'uso della similarità del coseno

Nonostante i suoi vantaggi, la similarità del coseno non è priva di limiti, tra cui:

  • Limitazione del vettore zero: la similarità del coseno non può essere definita quando uno o entrambi i vettori hanno grandezza zero, il che rende essenziale la pre-elaborazione per eliminare i vettori zero.
  • Rischio di falsa similarità: la similarità del coseno può produrre punteggi elevati per vettori allineati direzionalmente ma semanticamente non correlati, specialmente in modelli di embedding poco addestrati. Se i dati di formazione sottostanti mancano di diversità o sfumature contestuali, possono portare a risultati distorti o fuorvianti.
  • Dipendenza dalla normalizzazione: richiede che tutti i vettori di input siano normalizzati e che i dati ridimensionati in modo errato possono distorcere i risultati.
  • Ambiguità nell'ortogonalità: un punteggio di somiglianza pari a 0 non significa sempre una completa dissomiglianza in un contesto reale. Questo è particolarmente vero in domini sfumati come la lingua.

Consigli pratici per l'utilizzo della similarità del coseno

Per ottenere il massimo valore dalla similarità del coseno, le organizzazioni possono seguire questi passaggi:

Pre-elaborare i dati

Le organizzazioni possono normalizzare i vettori prima del calcolo per garantire coerenza di scala e risultati validi, soprattutto quando si utilizzano input ad elevata dimensionalità.

Rimuovere i vettori zero

Le aziende devono pulire i set di dati per rimuovere o contrassegnare i vettori zero, poiché causeranno errori di "divisione per zero" durante i calcoli della similarità del coseno.

Combinare con le altre metriche

Le organizzazioni possono integrare la similarità del coseno con metriche aggiuntive come la somiglianza di Jaccard o la distanza euclidea quando sono necessarie più dimensioni di similarità.

Test in ambienti simili a quelli di produzione

Prima della distribuzione, le aziende devono valutare le prestazioni di similarità del coseno in ambienti che riflettono condizioni reali, in particolare se utilizzati in sistemi in tempo reale come le application programming interfaces (API).

Le organizzazioni possono utilizzare librerie mature e open source per eseguire in modo efficiente i calcoli di similarità del coseno su larga scala. Ad esempio, Scikit-learn fornisce una funzione di similarità del coseno pronta all'uso attraverso il percorso del modulo Python: sklearn.metriche.pairwise.

In alternativa, la formula può essere codificata direttamente in Python utilizzando NumPy:

“cosine_similarity = np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))”

Come le frecce, la similarità del coseno aiuta le organizzazioni ad allinearsi dal punto di vista direzionale. Che si tratti di abbinare i risultati di ricerca o di informare il processo decisionale basato sui dati, la similarità del coseno può fornire insight potenti e aiutare a personalizzare le esperienze in vari casi d'uso.

Soluzioni correlate
Strumenti e soluzioni per l'analytics

Per prosperare, le aziende devono utilizzare i dati per fidelizzare i clienti, automatizzare i processi aziendali e innovare con soluzioni basate sull'AI.

Esplora le soluzioni di analytics
Servizi di consulenza per dati e analytics

Sblocca il valore dei dati aziendali con IBM Consulting e crea un'organizzazione basata su insight in grado di generare vantaggi aziendali.

Esplora i servizi di analytics
IBM Cognos Analytics

Introduzione a Cognos Analytics 12.0, insight basati sull'AI per prendere decisioni migliori.

Esplora Cognos Analytics
Fasi successive

Per prosperare, le aziende devono utilizzare i dati per fidelizzare i clienti, automatizzare i processi aziendali e innovare con soluzioni basate sull'AI.

Esplora le soluzioni di analytics Esplora i servizi di analytics