Interpretando a similaridade negativa do cosseno

17

Minha pergunta pode ser tola. Então, peço desculpas antecipadamente.

Eu estava tentando usar o modelo GLOVE pré-treinado pelo grupo da PNL de Stanford ( link ). No entanto, notei que meus resultados de similaridade mostraram alguns números negativos.

Isso imediatamente me levou a olhar para o arquivo de dados vetoriais de palavras. Aparentemente, os valores nos vetores de palavras foram negativos. Isso explicava por que vi semelhanças negativas no cosseno.

Estou acostumado ao conceito de similaridade de cosseno de vetores de frequência, cujos valores são delimitados em [0, 1]. Eu sei que o produto escalar e a função cosseno podem ser positivos ou negativos, dependendo do ângulo entre os vetores. Mas eu realmente tenho dificuldade em entender e interpretar essa similaridade negativa do cosseno.

Por exemplo, se eu tenho um par de palavras que dão similaridade de -0,1, elas são menos semelhantes que outro par cuja similaridade é 0,05? Que tal comparar semelhança de -0,9 a 0,8?

Ou devo apenas olhar para o valor absoluto da diferença mínima de ângulo de ? Valor absoluto das pontuações?nπ

Muitíssimo obrigado.

Mai
fonte
1
A etiqueta de similaridade de cosseno diz: An angular-type similarity coefficient between two vectors. It is like correlation, only without centering the vectors.A única diferença entre os dois é que os desvios de correlação (momentos) - que estão sendo multiplicados cruzadamente - são da média, enquanto que os desvios de cosseno são do 0 original - ou seja, são os valores como são. .
ttnphns
2
(cont.) O entendimento do coeficiente positivo ou negativo é o mesmo nos dois casos. Coef negativo. significa que os desvios / valores positivos de um vetor tendem a emparelhar com os desvios / valores negativos do outro. Se isso significa que os vetores são "semelhantes" ou, pelo contrário, "altamente diferentes" depende do significado de desvios / valores positivos e negativos nos dados para você.
ttnphns
@ttnphns Muito obrigado pelo seu comentário! Isso me inspira a pensar na semelhança do cosseno de uma nova maneira. No meu caso de uso, talvez eu possa pensar nisso como uma diferença nos resultados finais: se a correlação do Doc A e B for negativa e um diário uni-topical X incluir o Doc A, será menos provável que X inclua B como bem, de alguma probabilidade média. Essa interpretação parece válida para você?
Mai
Não me atrevo a dizer, porque não conheço seus dados, o significado dos valores neles e seu estudo.
ttnphns

Respostas:

2

Deixe dois vectores de e , o ângulo é obtida pelo produto escalar e a norma dos vectores:abθ

cos(θ)=ab||a||||b||

Como o valor de está no intervalo :cos(θ)[1,1]

  • 1 valor indicará vetores fortemente opostos
  • 0 vetores independentes (ortogonais)
  • 1 vetores semelhantes (co-lineares positivos). Valores intermediários são usados ​​para avaliar o grau de similaridade.

Exemplo : dois usuários e e a semelhança entre esses dois usuários de acordo com seu gosto por filmes:U1U2sim(U1,U2)

  • sim(U1,U2)=1 se os dois usuários tiverem exatamente o mesmo gosto (ou se )U1=U2
  • sim(U1,U2)=0 se não encontrarmos correlação entre os dois usuários
  • sim(U1,U2)=1 se os usuários tiverem gostos opostos
Thomas FEL
fonte
0

Não use os valores absolutos, pois o sinal negativo não é arbitrário. Para adquirir um valor de cosseno entre 0 e 1, você deve usar a seguinte função de cosseno:

(Código 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))
} 

(Código 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)
```
unicoder
fonte
Onde você define minx e maxx? Você pode aplicar essa normalização mín-máx às dimensões do vetor, em vez da distância calculada.
Emre pode
0

A semelhança de cossenos é como a correlação de Pearson, mas sem subtrair os meios. Portanto, você pode comparar a força relativa de 2 semelhanças de cosseno observando os valores absolutos, assim como você compararia os valores absolutos de 2 correlações de Pearson.

Dave
fonte
0

É certo que a semelhança de cosseno entre vetores de frequência não pode ser negativa, pois a contagem de palavras não pode ser negativa, mas com a incorporação de palavras (como luvas), você pode ter valores negativos.

Uma visão simplificada da construção de incorporação do Word é a seguinte: Você atribui cada palavra a um vetor aleatório em R ^ d. Em seguida, execute um otimizador que tente deslocar dois vetores semelhantes v1 e v2 um para o outro ou afaste dois vetores diferentes v3 e v4 (como em alguma distância, por exemplo, cosseno). Você executa essa otimização para iterações suficientes e, no final, possui incorporação de palavras com o único critério de que palavras semelhantes tenham vetores mais próximos e vetores diferentes estejam mais distantes. O resultado final pode deixar você com alguns valores de dimensão negativos e alguns pares com similaridade negativa de cosseno - simplesmente porque o processo de otimização não se importava com esse critério. Pode ter introduzido alguns vetores nos valores negativos. As dimensões dos vetores não correspondem à contagem de palavras,

correio npcmail
fonte