L'indice de Jaccard, pas qu'une histoire de mailles…

J'ai uti­li­sé der­niè­re­ment l'indice de Jac­card pour com­pa­rer des ensembles de mots. Comme c'est une mesure assez clas­sique et plu­tôt utile, j'ai déci­dé de vous en par­ler un peu. Donc voi­ci une intro­duc­tion à l'indice de Jac­card, à ne pas confondre avec le pull Jac­quard, ce n'est pas du tout la même chose.

Pull Jaquard by wildmary (CC BY-NC-SA 2.0)
Pull Jac­quard by wild­ma­ry (CC BY-NC-SA 2.0)

L'indice de Jac­card est une mesure simple de simi­la­ri­té entre deux ensembles d'objets pro­po­sée par Paul Jac­card en 1901 [1,2]. Il consiste à divi­ser le nombre d'objets en com­mun par le nombre d'objets dis­tincts dans les deux ensembles, autre­ment dit le car­di­nal de l'intersection divi­sé par le car­di­nal de l'union ou encore :

Formule de Jaccard
For­mule de Jac­card

"Pour­quoi je vous parle de ce truc là sur un blog de bio­in­for­ma­tique ?" me deman­de­rez-vous. Et je vous répon­drai : "Parce que cela m'a ser­vi dans mon bou­lot de bio­in­for­ma­ti­cien." Je vous explique…

En ce moment, je fais de la recons­truc­tion auto­ma­tique de réseaux méta­bo­liques. Cela consiste, à par­tir d'un génome anno­té, à retrou­ver les réac­tions bio­chi­miques qui cor­res­pondent aux gènes. Pour cela, j'utilise le logi­ciel Path­way Tools, qui uti­lise lui-même trois types d'annotations pour asso­cier une réac­tion bio­chi­mique à un gène : le numé­ro EC (clas­si­fi­ca­tion des enzymes), les termes Gene Onto­lo­gy, et la des­crip­tion de la fonc­tion.

Pour les numé­ros EC, l'association est assez simple : si un gène est anno­té par un EC et qu'une réac­tion chi­mique pos­sède ce même EC, alors on asso­cie la réac­tion au gène concer­né. Pour les termes GO, cela peut être un peu plus com­pli­qué, les termes GO un peu trop géné­riques sont igno­rés. Enfin, pour les des­crip­tions de fonc­tion, Path­way Tools semble uti­li­ser un com­pa­ra­teur exact. Si la des­crip­tion de la fonc­tion dif­fère d'un seul carac­tère, elle est reje­tée.

Ce com­pa­ra­teur exact est un peu frus­trant car cer­taines des­crip­tions de fonc­tions sont géné­rées auto­ma­ti­que­ment et peuvent donc être proches mais dif­fé­rentes. Par exemple : "3‑ke­toa­cyl-acyl car­rier pro­tein syn­thase," "β‑ketoacyl acyl car­rier pro­tein syn­thase," "β‑ketoacyl-[acyl car­rier pro­tein] syn­thase." Tous ces termes sont équi­va­lents (même numé­ro EC) mais ne passent pas le com­pa­ra­teur exact.

Je me suis alors sou­ve­nu de l'indice de Jac­card, qui per­met de com­pa­rer des ensembles de mots (un ami l'avait uti­li­sé pour ça). Appli­quons donc l'indice de Jac­card sur ce der­nier exemple pour voir com­ment ça marche.

J'ai com­men­cé par enle­ver tous les signes de ponc­tua­tion, on a donc les deux ensembles de mots sui­vants :

  • "3‑ke­toa­cyl-acyl car­rier pro­tein syn­thase" devient {"3", "ketoa­cyl", "acyl", "car­rier", "pro­tein", "syn­thase"}
  • "β‑ketoacyl acyl car­rier pro­tein syn­thase" devient {"β", "ketoa­cyl", "acyl", "car­rier", "pro­tein", "syn­thase"}
  • "β‑ketoacyl-[acyl car­rier pro­tein] syn­thase" devient {"β", "ketoa­cyl", "acyl", "car­rier", "pro­tein", "syn­thase"}

Ain­si, si on cal­cule l'indice de Jac­card entre les deux pre­miers ensembles, on obtient 5/​7 = 0,71, entre les deux der­niers : 7/​7 = 1,0. Drô­le­ment pra­tique non ? Bon par contre, tout n'est pas tou­jours aus­si facile. Ici, on ne tient pas compte de la fré­quence ou de la taille des mots, ce qui peut-être utile dans cer­tains cas.

Pour aller plus loin

C'était une illus­tra­tion super sim­pliste de cette mesure, mais voi­ci quelques liens sur l'utilisation de l'indice de Jac­card en bio­lo­gie et en bio­in­for­ma­tique qui peuvent vous ins­pi­rer :

J. M. Duarte, J. B. dos San­tos, and  L. C. Melo. Com­pa­ri­son of simi­la­ri­ty coef­fi­cients based on RAPD mar­kers in the com­mon bean. Genet. Mol. Biol. [online]. 1999, vol.22, n.3

Lewis SN, Nsoe­sie E, Weeks C, Qiao D, Zhang L (2011) Pre­dic­tion of Disease and Phe­no­type Asso­cia­tions from Genome-Wide Asso­cia­tion Stu­dies. PLoS ONE, 6(11): e27175. doi:10.1371/journal.pone.0027175

A. Basel­ga, and C. D. L. Orme, beta­part : an R package for the stu­dy of beta diver­si­ty. Methods in Eco­lo­gy and Evo­lu­tion, Vol. 3(5), pp. 808–812 (2012)

A. Rau, M. Gal­lo­pin, G. Celeux, and F. Jaf­fré­zic, Data-based fil­te­ring for repli­ca­ted high-through­put trans­crip­tome sequen­cing expe­ri­ments. Bio­in­for­ma­tics, publi­shed online on 2 July, 2013.

Références

[1] P. Jac­card, Dis­tri­bu­tion de la flore alpine dans le bas­sin des Dranses et dans quelques régions voi­sines. Bul­le­tin de la Socié­té Vau­doise des Sciences Natu­relles, Vol. 37, pp. 241–272 (1901).

[2] R. Real, and J.M. Var­gas, The Pro­ba­bi­lis­tic Basis of Jaccard's Index of Simi­la­ri­ty. Sys­teme Bio­lo­gy, Vol. 45 (3), pp. 385–390 (1996).

Mer­ci à Bu, Clem_​ et Mica pour leur relec­ture.



Pour continuer la lecture :


Commentaires

2 réponses à “L'indice de Jaccard, pas qu'une histoire de mailles…”

  1. Avatar de Olivier Dameron
    Olivier Dameron

    Les mesures comme l'indice de Jac­card ou le coef­fi­cient de Dice marchent bien à condi­tion que les élé­ments de l'ensemble soient indé­pen­dant ET équi­pro­bable. Si ce n'est pas le cas, on intro­duit un biais. Par exemple sur des ensembles de mots, les mots cou­rant ("et", "le", "la",…) comptent autant que d'autres comme "méthy­la­tion" ou "apop­tose", ce qui est dom­mage (deux texte qui ont "les" en com­mun sont peut-être moins simi­laires que deux textes qui parlent d'apoptose). Des stra­té­gies clas­siques pour contour­ner ça sont basées sur la fré­quence (les mots fré­quents en géné­ral sont moins infor­ma­tifs et sont donc péna­li­sés, cf la notion d'information content) ou sur la gra­nu­la­ri­té… mais c'est une autre his­toire

  2. Pour infor­ma­tion, l'indice de Jac­card est éga­le­ment uti­li­sé en bio­in­for­ma­tique pour la com­pa­rai­son de groupes d'orthologues obte­nus avec dif­fé­rentes méthodes. Si le sujet vous inté­resse je vous conseille éga­le­ment de vous ren­sei­gner sur le "gain d'information".
    Cécile

Laisser un commentaire