Aplicações e diferenças para similaridade de Jaccard e similaridade de cosseno


27

A semelhança de Jaccard e a cosseno são duas medidas muito comuns ao comparar semelhanças de itens. No entanto, não sou muito claro em que situação qual deve ser preferível a outra.

Alguém pode ajudar a esclarecer as diferenças dessas duas medidas (a diferença de conceito ou princípio, não a definição ou computação) e suas aplicações preferidas?

Respostas:


19

A similaridade de Jaccard é dada por sij=pp+q+r

Onde,

p = número de atributos positivos para ambos os objetos
q = número de atributos 1 para ie 0 para j
r = número de atributos 0 para ie 1 para j

Considerando que, semelhança de cosseno = onde A e B são vetores de objetos.ABAB

Simplificando, em semelhança de cosseno, o número de atributos comuns é dividido pelo número total de atributos possíveis. Enquanto em Jaccard Similarity, o número de atributos comuns é dividido pelo número de atributos que existem em pelo menos um dos dois objetos.

E há muitas outras medidas de similaridade, cada uma com suas próprias excentricidades. Ao decidir qual usar, tente pensar em alguns casos representativos e descobrir qual índice daria os resultados mais úteis para alcançar seu objetivo.

O índice Cosine poderia ser usado para identificar plágio, mas não será um bom índice para identificar sites-espelho na Internet. Considerando que o índice Jaccard, será um bom índice para identificar sites espelhos, mas não tão bom em captar plágio de massas de cópia (dentro de um documento maior).

Ao aplicar esses índices, você deve pensar bem no seu problema e descobrir como definir semelhança. Depois de ter uma definição em mente, você poderá comprar um índice.

Edit: Anteriormente, eu tinha um exemplo incluído nesta resposta, que estava incorreto. Graças aos vários usuários que apontaram isso, removi o exemplo incorreto.


2
você poderia explicar por que o índice Cosine é melhor para identificar plágio e não é bom para identificar sites-espelho?
Dharm0us

Sinto que algumas partes desta resposta não são intuitivas. "Por exemplo, se você tiver dois objetos, ambos com 10 atributos, de um possível 100 atributos. Além disso, eles têm todos os 10 atributos em comum. Nesse caso, o índice Jaccard será 1 e o índice cosseno será 0,001". Isso se traduziria em algo como cosine_similarity(10*[1]+90*[0], 10*[1]+90*[0]). Obviamente, a semelhança de cosseno também seria 1 aqui, pois as duas medidas ignoram os elementos que são zero nos dois vetores.
Fsociety

11
Esta resposta está errada sobre semelhança de cosseno, por favor considere a resposta de user18596
Robin

"Simplificando, em semelhança de cosseno, o número de atributos comuns é dividido pelo número total de atributos possíveis" -> isso é totalmente incorreto. A notação define produtos e normas de pontos vetoriais.
Sean Owen

22

Não posso comentar porque não tenho nenhum status, mas a resposta marcada está errada e também não respondi a pergunta. ∥A∥ significa a norma L2 de A, ou seja, o comprimento do vetor no espaço euclidiano, não a dimensionalidade do vetor A. Em outras palavras, você não conta os 0 bits, soma os 1 bits e pega o raiz quadrada. Portanto, o exemplo de 10 atributos de um vetor de 100 comprimentos também está errado. Desculpe, não tenho uma resposta real sobre quando você deve usar qual métrica, mas não posso deixar a resposta incorreta sem contestação.


2
Você está totalmente certo. É uma pena que tantas pessoas estejam votando em uma resposta incorreta. A semelhança de cossenos, conforme descrito no artigo da wikipedia, não leva em consideração 0 bits. en.wikipedia.org/wiki/Cosine_similarity
neelshiv

11

A semelhança de Jaccard é usada para dois tipos de casos binários:

  1. Simétrico, onde 1 e 0 têm igual importância (sexo, estado civil, etc.)
  2. Assimétrico, em que 1 e 0 têm diferentes níveis de importância (teste positivo para uma doença)

A similaridade do cosseno é geralmente usada no contexto da mineração de texto para comparar documentos ou e-mails. Se a semelhança de cosseno entre dois vetores de termo do documento for maior, os dois documentos terão mais número de palavras em comum

Outra diferença é 1 - o coeficiente de Jaccard pode ser usado como uma medida de dissimilaridade ou distância, enquanto a semelhança de cosseno não possui essas construções. Uma coisa semelhante é a distância de Tonimoto, usada em taxonomia.


Por que apenas Jaccard pode ser usado como medida de dissimilaridade? Entendo que cosineé uma medida diferente, mas não inválida.
Javadba 30/03/19

3

Como observado acima, a resposta marcada está errada.

Onde e são binários vetores, eles podem ser interpretados como conjuntos de índices com valor 1. portanto, vamos considerar conjuntos e .ab A BAB

A similaridade do Jaccard é dada por

J(A,B)=|AB||AB|=|AB||AB|+|AB|+|BA|

A similaridade do cosseno é dada por

C(A,B)=|AB||A||B|=|AB|(|AB|+|AB|)(|AB|+|BA|)

Algumas comparações:

  • Os numeradores aqui são os mesmos.
  • O denominador cresce aritmeticamente com o tamanho deeem jaccard, mas geometricamente em cosseno.|A||B|
  • O denominador de cosseno depende apenas do número de itens eme o número de itens em. Não depende de sua interseção.|A||B|

Ainda não tenho uma intuição clara de onde um deve ser preferido em relação ao outro, exceto que, como Vikram Venkat observou, 1 - Jaccard corresponde a uma métrica verdadeira, diferente do cosseno; e o cosseno se estende naturalmente a vetores com valor real.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.