Applications et différences pour la similitude Jaccard et la similitude cosinus

27

La similitude Jaccard et la similitude cosinus sont deux mesures très courantes lors de la comparaison des similitudes des éléments. Cependant, je ne sais pas très bien dans quelle situation l’un devrait être préférable à l’autre.

Quelqu'un peut-il aider à clarifier les différences de ces deux mesures (la différence de concept ou de principe, pas la définition ou le calcul) et leurs applications préférées?

shihpeng
la source

Réponses:

19

La similitude de Jaccard est donnée par sij=pp+q+r

où,

p = # d'attributs positifs pour les deux objets
q = # d'attributs 1 pour i et 0 pour j
r = # d'attributs 0 pour i et 1 pour j

ABAB

Autrement dit, en similitude cosinus, le nombre d'attributs communs est divisé par le nombre total d'attributs possibles. Alors que dans la similitude Jaccard, le nombre d'attributs communs est divisé par le nombre d'attributs qui existent dans au moins l'un des deux objets.

Et il existe de nombreuses autres mesures de similitude, chacune avec ses propres excentricités. Lorsque vous décidez lequel utiliser, essayez de penser à quelques cas représentatifs et déterminez quel indice donnerait les résultats les plus utilisables pour atteindre votre objectif.

L'indice de cosinus pourrait être utilisé pour identifier le plagiat, mais ne sera pas un bon indice pour identifier les sites miroirs sur Internet. Alors que l'indice Jaccard, sera un bon indice pour identifier les sites miroirs, mais pas si bon pour attraper le plagiat des pâtes de copie (dans un document plus grand).

Lors de l'application de ces indices, vous devez bien réfléchir à votre problème et trouver comment définir la similitude. Une fois que vous avez une définition en tête, vous pouvez acheter un index.

Edit: Plus tôt, j'avais un exemple inclus dans cette réponse, qui était finalement incorrect. Merci aux nombreux utilisateurs qui l'ont souligné, j'ai supprimé l'exemple erroné.

saq7
la source
2
pourriez-vous expliquer pourquoi l'indice de cosinus est meilleur pour identifier le plagiat et pas bon pour identifier les sites miroirs?
dharm0us
J'ai l'impression que certaines parties de cette réponse ne sont pas intuitives. "Par exemple, si vous avez deux objets avec 10 attributs, sur 100 possibles. En outre, ils ont tous les 10 attributs en commun. Dans ce cas, l'index Jaccard sera 1 et l'indice cosinus sera 0,001." Cela se traduirait par quelque chose comme cosine_similarity(10*[1]+90*[0], 10*[1]+90*[0]). Bien sûr, la similitude du cosinus serait également de 1 ici, car les deux mesures ignorent les éléments qui sont nuls dans les deux vecteurs.
fsociety
1
Cette réponse est erronée sur la similitude du cosinus, veuillez considérer la réponse de user18596
Robin
"Autrement dit, en similitude cosinus, le nombre d'attributs communs est divisé par le nombre total d'attributs possibles" -> c'est tout à fait incorrect. La notation définit les produits vectoriels scalaires et les normes.
Sean Owen
23

Je ne peux pas commenter car je n'ai aucun statut, mais la réponse cochée est fausse, ainsi que de ne pas répondre à la question. ∥A∥ signifie la norme L2 de A, c'est-à-dire la longueur du vecteur dans l'espace euclidien, pas la dimensionnalité du vecteur A. En d'autres termes, vous ne comptez pas les 0 bits, vous additionnez les 1 bits et prenez le racine carrée. Ainsi, l'exemple de 10 attributs d'un vecteur de 100 longueurs est également faux. Désolé, je n'ai pas de vraie réponse quant au moment où vous devez utiliser quelle métrique, mais je ne peux pas laisser la réponse incorrecte sans contestation.

user18596
la source
2
Vous avez tout à fait raison. C'est dommage que tant de gens votent contre une réponse incorrecte. La similitude de cosinus, comme décrit dans l'article de wikipedia, ne prend pas en compte 0 bits. en.wikipedia.org/wiki/Cosine_similarity
neelshiv
11

La similitude Jaccard est utilisée pour deux types de cas binaires:

  1. Symétrique, où 1 et 0 ont une importance égale (sexe, état civil, etc.)
  2. Asymétrique, où 1 et 0 ont des niveaux d'importance différents (test positif pour une maladie)

La similitude cosinus est généralement utilisée dans le contexte de l'exploration de texte pour comparer des documents ou des e-mails. Si la similitude en cosinus entre deux vecteurs de termes de document est plus élevée, alors les deux documents ont plus de nombre de mots en commun

Une autre différence est 1 - le coefficient de Jaccard peut être utilisé comme mesure de dissimilarité ou de distance, tandis que la similitude en cosinus n'a pas de telles constructions. Une chose similaire est la distance Tonimoto, qui est utilisée en taxonomie.

Vikram Venkat
la source
Pourquoi est-ce que seul Jaccard peut être utilisé comme mesure de dissimilarité? Je crois comprendre que cosinec'est une mesure différente mais non invalide.
javadba
3

Comme indiqué ci-dessus, la réponse cochée est incorrecte.

Où et sont binaires vecteurs, ils peuvent être interprétés comme des ensembles d'indices avec la valeur 1. Soit donc de considérer des ensembles et .ab A BAB

La similitude Jaccard est alors donnée par

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

La similitude en cosinus est alors donnée par

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

Quelques comparaisons:

  • Les numérateurs ici sont les mêmes.
  • Le dénominateur croît arithmétiquement avec la taille deeten jaccard, mais géométriquement en cosinus.|A||B|
  • Le dénominateur du cosinus ne dépend que du nombre d'articles danset le nombre d'éléments dans. Cela ne dépend pas de leur intersection.|A||B|

Je n'ai pas encore une intuition claire sur l'endroit où l'un devrait être préféré à l'autre, sauf que, comme Vikram Venkat l'a noté, 1 - Jaccard correspond à une vraie métrique, contrairement au cosinus; et le cosinus s'étend naturellement aux vecteurs à valeur réelle.

joeln
la source