Interpretar la similitud negativa del coseno

17

Mi pregunta puede ser tonta. Así que me disculparé de antemano.

Estaba tratando de usar el modelo GLOVE pre-entrenado por el grupo Stanford NLP ( enlace ). Sin embargo, noté que mis resultados de similitud mostraron algunos números negativos.

Eso inmediatamente me llevó a mirar el archivo de datos de vectores de palabras. Aparentemente, se permitió que los valores en la palabra vectores fueran negativos. Eso explicaba por qué veía similitudes negativas de coseno.

Estoy acostumbrado al concepto de similitud coseno de los vectores de frecuencia, cuyos valores están delimitados en [0, 1]. Sé con certeza que el producto de puntos y la función coseno pueden ser positivos o negativos, dependiendo del ángulo entre vectores. Pero realmente me cuesta entender e interpretar esta semejanza negativa del coseno.

Por ejemplo, si tengo un par de palabras que dan una similitud de -0.1, ¿son menos similares que otro par cuya similitud es 0.05? ¿Qué hay de comparar la similitud de -0.9 a 0.8?

¿O debería mirar el valor absoluto de la diferencia de ángulo mínima de ? ¿Valor absoluto de las puntuaciones?nπ

Muchas muchas gracias.

Mai
fuente
1
La etiqueta de similitud de coseno dice: An angular-type similarity coefficient between two vectors. It is like correlation, only without centering the vectors.La única diferencia entre los dos es que en las desviaciones de correlación (momentos), que se multiplican cruzada, son de la media, mientras que en las desviaciones de coseno son del 0 original, es decir, son los valores tal como son. .
ttnphns
2
(cont.) La comprensión del coeficiente positivo o negativo es la misma en ambos casos. Coeficiente negativo significa que las desviaciones / valores positivos de un vector tienden a emparejarse con las desviaciones / valores negativos del otro. Si esto significa que los vectores son "similares" o, por el contrario, "muy diferentes" depende de cuál sea el significado de las desviaciones / valores positivos y negativos en los datos, para usted.
ttnphns
@ttnphns ¡Muchas gracias por tu comentario! Me inspira pensar en la similitud de coseno de una nueva manera. En mi caso de uso, tal vez pueda pensar en ello como una diferencia en los resultados finales: si la correlación de Doc A y B es negativa, y una revista X no tópica incluye Doc A, entonces es menos probable que X incluya B como bueno, de alguna probabilidad media. ¿Te parece válida esta interpretación?
Mai
No me atrevo a decirlo porque no conozco sus datos, el significado de los valores y su estudio.
ttnphns

Respuestas:

2

Deje dos vectores y , el ángulo se obtiene por el producto escalar y la norma de los vectores:abθ

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

Como el valor está en el rango :cos(θ)[1,1]

  • 1 valor indicará vectores fuertemente opuestos
  • 0 vectores independientes (ortogonales)
  • 1 vectores similares (co-lineales positivos). Los valores intermedios se utilizan para evaluar el grado de similitud.

Ejemplo : permita que dos usuarios y , y la similitud entre estos dos usuarios según su gusto por las películas:U1U2sim(U1,U2)

  • sim(U1,U2)=1 si los dos usuarios tienen exactamente el mismo gusto (o si )U1=U2
  • sim(U1,U2)=0 si no encontramos ninguna correlación entre los dos usuarios, por ejemplo, si no han visto ninguna película común
  • sim(U1,U2)=1 si los usuarios tienen gustos opuestos, por ejemplo, si calificaron las mismas películas de manera opuesta
Thomas FEL
fuente
0

No utilice los valores absolutos, ya que el signo negativo no es arbitrario. Para adquirir un valor de coseno entre 0 y 1, debe usar la siguiente función de coseno:

(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 de 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
fuente
¿Dónde configuras minx y maxx? Puede aplicar esta normalización min-max a las dimensiones del vector, en lugar de la distancia calculada.
Emre puede el
0

La similitud de coseno es como la correlación de Pearson, pero sin restar los medios. Por lo tanto, puede comparar la fuerza relativa de 2 similitudes de coseno observando los valores absolutos, tal como compararía los valores absolutos de 2 correlaciones de Pearson.

Dave
fuente
0

Es cierto que la similitud de coseno entre los vectores de frecuencia no puede ser negativa, ya que los recuentos de palabras no pueden ser negativos, pero con las incorporaciones de palabras (como el guante) puede tener valores negativos.

Una vista simplificada de la construcción de incrustación de palabras es la siguiente: Usted asigna cada palabra a un vector aleatorio en R ^ d. A continuación, ejecute un optimizador que intente empujar dos vectores similares v1 y v2 cerca uno del otro o conducir dos vectores diferentes v3 y v4 más separados (según cierta distancia, por ejemplo, coseno). Ejecuta esta optimización para suficientes iteraciones y, al final, tiene incrustaciones de palabras con el único criterio de que palabras similares tienen vectores más cercanos y los vectores diferentes están más separados. El resultado final podría dejarlo con algunos valores de dimensión negativos y algunos pares con coseno negativo similar, simplemente porque el proceso de optimización no se preocupó por este criterio. Puede haber empujado algunos vectores bien en los valores negativos. Las dimensiones de los vectores no corresponden a conteos de palabras,

correo npcmail
fuente