A similaridade de Jaccard é dada por
seu j= 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.A ⋅ B∥ A ∥ ∥ B ∥
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.
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.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.
fonte
A semelhança de Jaccard é usada para dois tipos de casos binários:
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.
fonte
cosine
é uma medida diferente, mas não inválida.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 .a b A BA B
A similaridade do Jaccard é dada porJ(A,B)=|A∩B||A∪B|=|A∩B||A∩B|+|A−B|+|B−A|
A similaridade do cosseno é dada porC(A,B)=|A∩B||A||B|−−−−−√=|A∩B|(|A∩B|+|A−B|)(|A∩B|+|B−A|)−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−√
Algumas comparações:
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.
fonte