Semelhança de cosseno versus produto pontual como métricas de distância

41

Parece que a semelhança de cosseno de dois recursos é apenas o produto escalar escalonado pelo produto de suas magnitudes. Quando a semelhança de cosseno produz uma métrica de distância melhor que o produto escalar? Ou seja, o produto escalar e a semelhança de cosseno têm diferentes pontos fortes ou fracos em diferentes situações?

ahoffer
fonte
Observe que nenhuma dessas métricas de distância é adequada, mesmo se você as transformar em um valor pequeno quando os pontos forem "semelhantes". Pode ou não ser importante para o seu caso de uso.
18714 Sean

Respostas:

41

Pense geometricamente. A similaridade do cosseno se importa apenas com a diferença de ângulo, enquanto o produto escalar se importa com o ângulo e a magnitude. Se você normalizar seus dados com a mesma magnitude, os dois serão indistinguíveis. Às vezes é desejável ignorar a magnitude, portanto a semelhança de cosseno é boa, mas se a magnitude desempenhar um papel, o produto escalar seria melhor como medida de similaridade. Observe que nenhum deles é uma "métrica de distância".

Memming
fonte
3
"métrica à distância" é comumente usada como oposto à "similaridade" na literatura: quanto maior a distância, menor a similaridade, mas basicamente elas representam a mesma idéia.
ffriend
11
@ffriend Você quer dizer 'dissimilaridade'. Métrica tem uma definição precisa.
Memming 29/03/16
8

Você está certo, a semelhança de cosseno tem muito em comum com o produto escalar de vetores. Na verdade, é um produto escalonado, dimensionado por magnitude. E por causa do dimensionamento, é normalizado entre 0 e 1. O CS é preferível porque leva em consideração a variabilidade das frequências relativas dos dados e dos recursos. Por outro lado, o produto de ponto simples é um pouco "mais barato" (em termos de complexidade e implementação).

sobach
fonte
Por que o produto escalar sozinho (equivalente a não normalizar) não é responsável pelos dados e pela frequência dos recursos? Não sei se essa é a diferença.
Sean Owen
2
Talvez eu não estivesse clara. Eu estava falando sobre diversidade de dados. Por exemplo, temos dois pares de documentos. Em cada par, os documentos são idênticos, mas os documentos do par 1 são mais curtos que os do par 2. E calculamos a similaridade dentro de cada par. O produto escalar produziria números diferentes, embora em ambos os casos seja esperada uma estimativa máxima de similaridade.
Sobach
5

Gostaria de acrescentar mais uma dimensão às respostas dadas acima. Geralmente usamos semelhança de cosseno com texto grande, porque o uso de matriz de distância em parágrafos de dados não é recomendado. E também, se você pretende que seu cluster seja amplo, tende a usar a semelhança de cosseno, pois captura a similaridade em geral.

Por exemplo, se você tiver textos com duas ou três palavras no máximo, sinto que a similaridade do cosseno não alcança a precisão alcançada pela métrica de distância.

chandra vimal Gorijala
fonte
4

Há uma excelente comparação das métricas de similaridade comuns baseadas em produtos internos aqui .

Em particular, a Similaridade Cosina é normalizada para ficar dentro de [0,1], diferentemente do produto escalar, que pode ser qualquer número real, mas, como todo mundo está dizendo, isso exigirá ignorar a magnitude dos vetores. Pessoalmente, acho que é uma coisa boa. Penso na magnitude como uma estrutura interna (dentro do vetor) e no ângulo entre os vetores como estrutura externa (entre os vetores). São coisas diferentes e (na minha opinião) são frequentemente melhor analisadas separadamente. Não consigo imaginar uma situação em que prefiro calcular produtos internos do que calcular semelhanças de cosseno e apenas comparar as magnitudes posteriormente.

shadowtalker
fonte
"A similaridade do cosseno é normalizada para ficar dentro de [0,1]" Ele ainda possui um produto escalarado no numerador, acho que o intervalo deveria ser [-1, 1]?
Kari
2

x,||x||2=x,x=1ϕx,y=cosϕϕ=arccosx,y

Visualmente, todos os seus dados vivem em uma esfera unitária. Usar um produto de ponto como distância fornecerá uma distância cordal, mas se você usar essa distância de cosseno, ela corresponderá ao comprimento do caminho entre os dois pontos na esfera. Isso significa que, se você deseja obter uma média dos dois pontos, escolha o ponto intermediário nesse caminho (geodésico) em vez do ponto médio obtido da 'média aritmética / produto pontual / geometria euclidiana', pois esse ponto não não vive na esfera (portanto, essencialmente, não é o mesmo objeto)!

microfone
fonte
1

Como outros já apontaram, essas não são "métricas" de distância, porque não atendem aos critérios de métrica. Em vez disso, diga "medida de distância".

Enfim, o que você está medindo e por quê? Essas informações nos ajudarão a dar uma resposta mais útil para sua situação.

sintax
fonte
Eu sempre me perguntei sobre a diferença entre medidas e métricas. Segundo o governo (NIST): "... Usamos a medida para atributos mais concretos ou objetivos e métricas para atributos mais abstratos, de nível superior ou algo subjetivo. ... Robustez, qualidade (como em" alta qualidade "), e eficácia são atributos importantes que sentimos consistentemente, mas são difíceis de definir objetivamente. Portanto, essas são métricas ". Mas o contexto é engenharia de software, não matemática. Qual é a sua opinião?
ahoffer
11
A Wikipedia foi mais útil. a distância (x, y) é deve ser não negativa; d (x, y) = 0 somente se x = y; d (x, y) = d (y, x); e satisfazer triângulo d Desigualdade (x, z) ≤ d (x, y) + d (y, z)
ahoffer
11
É isso mesmo: uma métrica precisa atender a certos axiomas e uma medida é menos estritamente definida.
Sintaxe