Interpretazione della somiglianza del coseno negativo


17

La mia domanda potrebbe essere sciocca. Quindi mi scuserò in anticipo.

Stavo cercando di utilizzare il modello GLOVE pre-addestrato dal gruppo Stanford NLP ( link ). Tuttavia, ho notato che i miei risultati di somiglianza hanno mostrato alcuni numeri negativi.

Ciò mi ha immediatamente spinto a guardare il file di dati vettoriali. Apparentemente, i valori nelle parole vettori potevano essere negativi. Ciò ha spiegato perché ho visto somiglianze al coseno negative.

Sono abituato al concetto di somiglianza del coseno dei vettori di frequenza, i cui valori sono limitati in [0, 1]. So per certo che il punto prodotto e la funzione del coseno possono essere positivi o negativi, a seconda dell'angolo tra il vettore. Ma ho davvero difficoltà a comprendere e interpretare questa somiglianza negativa del coseno.

Ad esempio, se ho una coppia di parole che danno somiglianza di -0,1, sono meno simili di un'altra coppia la cui somiglianza è 0,05? Che ne dici di confrontare la somiglianza tra -0,9 e 0,8?

O dovrei solo guardare il valore assoluto della minima differenza di angolo da ? Valore assoluto dei punteggi?nπ

Molte molte grazie.


1
Il tag di somiglianza del coseno dice: An angular-type similarity coefficient between two vectors. It is like correlation, only without centering the vectors.L'unica differenza tra i due è che nelle deviazioni di correlazione (i momenti) - che vengono moltiplicati in modo incrociato - provengono dalla media, mentre nelle deviazioni del coseno sono dallo 0 originale - cioè sono i valori così come sono .
ttnphns,

2
(seguito) La comprensione del coefficiente positivo o negativo è la stessa in entrambi i casi. Coef negativo significa che le deviazioni / i valori positivi di un vettore tendono ad accoppiarsi con le deviazioni / i valori negativi dell'altro. Se questo significa che i vettori sono "simili" o al contrario "altamente dissimili" dipende dal significato delle deviazioni / valori positivi e negativi nei dati, per te.
ttnphns,

@ttnphns Grazie mille per il tuo commento! Mi ispira a pensare alla somiglianza del coseno in un modo nuovo. Nel mio caso d'uso, forse posso considerarlo una differenza nei risultati finali: se la correlazione di Doc A e B è negativa e un giornale univoco X include Doc A, allora è meno probabile che X includa B come bene, con una probabilità media. Questa interpretazione ti sembra valida?
Mai

Non oso dirlo perché non conosco i tuoi dati, il significato dei valori in essi contenuti e il tuo studio.
ttnphns,

Risposte:


2

Lasciare due vettori un' e B , l'angolo è ottenuta dal prodotto scalare e la norma dei vettori:θ

coS(θ)=un'B||un'||||B||

Poiché il valore è compreso nell'intervallo :coS(θ)[-1,1]

  • -1 valore indicherà vettori fortemente opposti
  • 0 vettori indipendenti (ortogonali)
  • 1 vettori simili (co-lineare positivo). I valori intermedi vengono utilizzati per valutare il grado di somiglianza.

Esempio : Consenti a due utenti e e la somiglianza tra questi due utenti in base al loro gusto per i film:U1U2Siom(U1,U2)

  • Siom(U1,U2)=1 se i due utenti hanno esattamente lo stesso gusto (o se )U1=U2
  • Siom(U1,U2)=0 se non troviamo alcuna correlazione tra i due utenti, ad esempio se non hanno visto film comuni
  • Siom(U1,U2)=-1 se gli utenti hanno gusti opposti, ad esempio se hanno valutato gli stessi film in modo opposto

0

Non utilizzare i valori assoluti, poiché il segno negativo non è arbitrario. Per acquisire un valore del coseno compreso tra 0 e 1, è necessario utilizzare la seguente funzione di coseno:

(Codice R)

cos.sim <- function(a,b) 
{
  dot_product = sum(a*b)
  anorm = sqrt(sum((a)^2))
  bnorm = sqrt(sum((b)^2))
  minx =-1
  maxx = 1
  return(((dot_product/anorm*bnorm)-minx)/(maxx-minx))
} 

(Codice Python)

def cos_sim(a, b):
    """Takes 2 vectors a, b and returns the cosine similarity according 
to the definition of the dot product"""
    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)

minx = -1 
maxx = 1

cos_sim(row1, row2)- minx)/(maxx-minx)
```

Dove imposti minx e maxx? È possibile applicare questa normalizzazione min-max alle quote vettoriali, anziché alla distanza calcolata.
Emre può

0

La somiglianza del coseno è proprio come la correlazione di Pearson, ma senza sottrarre i mezzi. Quindi puoi confrontare la forza relativa di 2 somiglianze di coseno osservando i valori assoluti, proprio come faresti per confrontare i valori assoluti di 2 correlazioni di Pearson.


0

È giusto che la somiglianza del coseno tra i vettori di frequenza non possa essere negativa poiché il conteggio delle parole non può essere negativo, ma con gli incorporamenti di parole (come il guanto) si possono avere valori negativi.

Una vista semplificata della costruzione che incorpora le parole è la seguente: Assegni ogni parola a un vettore casuale in R ^ d. Quindi esegui un ottimizzatore che tenti di avvicinare due vettori simili v1 e v2 l'uno vicino all'altro o di allontanare due vettori dissimili v3 e v4 (come per una certa distanza, diciamo coseno). Esegui questa ottimizzazione per un numero sufficiente di iterazioni e alla fine hai incorporamenti di parole con il solo criterio che parole simili hanno vettori più vicini e vettori diversi sono più distanti. Il risultato finale potrebbe lasciarti con alcuni valori-dimensione negativi e alcune coppie con somiglianza al coseno negativa - semplicemente perché al processo di ottimizzazione non importava questo criterio. Potrebbe aver spinto bene alcuni vettori nei valori negativi. Le dimensioni dei vettori non corrispondono al conteggio delle parole,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.