{"id":593,"date":"2016-10-14T10:22:43","date_gmt":"2016-10-14T08:22:43","guid":{"rendered":"http:\/\/perso.ens-lyon.fr\/lise.vaudor\/?p=593"},"modified":"2018-12-11T09:20:49","modified_gmt":"2018-12-11T08:20:49","slug":"classification-ascendante-hierarchique","status":"publish","type":"post","link":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/classification-ascendante-hierarchique\/","title":{"rendered":"Classification ascendante hi\u00e9rarchique"},"content":{"rendered":"<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/Classif_hierarchique_ascendante\/Lise_Vaudor_headband-1.png\" alt=\"\" \/><\/p>\n<p>La classification ascendante hi\u00e9rarchique (CAH) sert \u00e0 <strong>d\u00e9finir des classes d&rsquo;individus<\/strong> \u00e0 partir d&rsquo;une ou plusieurs <strong>variables quantitatives<\/strong>.<\/p>\n<p>La CAH s&rsquo;accompagne de la construction d&rsquo;un <strong>arbre de classification<\/strong>.<\/p>\n<h1>Un exemple: caract\u00e9ristiques de 7 personnages<\/h1>\n<p>Consid\u00e9rons <a href=\"..\/..\/lise.vaudor\/Rdata\/Classif_hierarchique_ascendante\/data_orphan.csv\">ce petit jeu de donn\u00e9es<\/a>:<\/p>\n<pre><code>data_orphan=read.table(paste(dat.path,\"data_orphan.csv\",sep=\"\"),\n                       sep=\";\",row.names=1,header=T)\nprint(data_orphan)\n\n##        Sante Sante_Mentale Intellect Sociabilite Decision\n## Sarah      8             8         7           4        6\n## Alison     7             6         6           8        8\n## Cosima     4             5         8           6        4\n## Helena     8             2         5           3        6\n## Rachel     8             5         6           2        6\n## Katja      2             5         5           7        7\n## Beth       8             4         7           5        7\n<\/code><\/pre>\n<p>Il renseigne des caract\u00e9ristiques physiques et mentales de 7 personnages de la s\u00e9rie \u00ab\u00a0Orphan Black\u00a0\u00bb (que je vous recommande). Pour ceux qui s&rsquo;\u00e9tonneraient de l&rsquo;existence d&rsquo;un tel jeu de donn\u00e9es ou qui ne seraient pas d&rsquo;accord avec son contenu (d&rsquo;\u00e9ventuels fans de la s\u00e9rie?) : je pr\u00e9cise que j&rsquo;ai construit ce tout petit jeu de donn\u00e9es (certes un peu subjectives) \u00e0 des fins p\u00e9dagogiques, et sp\u00e9cialement pour ce post&#8230;<\/p>\n<p>On peut essayer de r\u00e9sumer graphiquement l&rsquo;information concernant nos personnages en r\u00e9alisant une ACP:<\/p>\n<pre><code>require(ade4)\nmonacp=dudi.pca(data_orphan,scannf=F,nf=2)\nscatter(monacp)\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/Classif_hierarchique_ascendante\/ACP_personnages_CAH-1.png\" alt=\"\" \/><\/p>\n<h1>Construction d&rsquo;un arbre de classification<\/h1>\n<p>Pour rassembler les individus en construisant un arbre, on les <strong>assemble 2 \u00e0 2<\/strong> en commen\u00e7ant par les individus <strong>les plus proches<\/strong>.<\/p>\n<p>Ainsi, la construction de l&rsquo;arbre de classification repose sur les <strong>distances entre individus<\/strong>:<\/p>\n<pre><code>table_distances=dist(data_orphan)\nprint(table_distances)\n\n##           Sarah   Alison   Cosima   Helena   Rachel    Katja\n## Alison 5.099020                                             \n## Cosima 5.830952 5.830952                                    \n## Helena 6.403124 6.855655 6.855655                           \n## Rachel 3.741657 6.480741 6.324555 3.316625                  \n## Katja  7.681146 5.385165 4.795832 7.874008 7.937254         \n## Beth   4.242641 4.000000 5.291503 3.605551 3.464102 6.708204\n<\/code><\/pre>\n<p>Par d\u00e9faut, la m\u00e9thode utilis\u00e9e pour calculer des distances entre les individus correspond \u00e0 une distance euclidienne. Pour <em>n<\/em> variables <em>X<\/em><sub>1<\/sub>, <em>X<\/em><sub>2<\/sub>, <em>X<\/em><sub>3<\/sub>, &#8230;,<em>X<\/em><sub><em>n<\/em><\/sub> la distance euclidienne entre les individus <em>i<\/em> et <em>j<\/em> est:<\/p>\n<pre><code>    $$ d_{i,j}=\\sqrt{\\sum_{k=1}^n (X_{k,i}-X_{k,j})^2}$$\n<\/code><\/pre>\n<p>Ainsi, la distance entre (par exemple) Sarah et Alison peut se recalculer \u00ab\u00a0\u00e0 la main\u00a0\u00bb de la mani\u00e8re suivante:<\/p>\n<pre><code>diffs_par_variable=data_orphan[\"Sarah\",]-data_orphan[\"Alison\",]\nsqrt(sum(diffs_par_variable^2))\n\n## [1] 5.09902\n<\/code><\/pre>\n<p>La construction de l&rsquo;arbre de classification \u00e0 partir du tableau des distances se fait de la mani\u00e8re suivante:<\/p>\n<pre><code>mon_arbre=hclust(table_distances,method=\"ward\")\nmon_arbre\n\n## \n## Call:\n## hclust(d = table_distances, method = \"ward\")\n## \n## Cluster method   : ward.D \n## Distance         : euclidean \n## Number of objects: 7\n\nplot(mon_arbre)\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/Classif_hierarchique_ascendante\/arbre_classification_hclust-1.png\" alt=\"\" \/><\/p>\n<h1>Construction d&rsquo;un arbre de classification: explication<\/h1>\n<p>Pour vous expliquer comment se contruit, it\u00e9rativement, un arbre de classification ascendante hi\u00e9rarchique, je vais consid\u00e9rer non pas les donn\u00e9es brutes, mais les <strong>scores<\/strong> issus de l&rsquo;ACP r\u00e9alis\u00e9e plus haut (d&rsquo;ailleurs, vous remarquerez que l&rsquo;arbre en sortie n&rsquo;est pas le m\u00eame!). Cela va simplement me permettre de <strong>repr\u00e9senter graphiquement<\/strong> (en deux dimensions) les individus et \u00e0 bien voir \u00e0 quoi correspondent les distances entre deux individus.<\/p>\n<p>Commen\u00e7ons avec l&rsquo;ensemble des individus (ci-dessous).<\/p>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/Classif_hierarchique_ascendante\/construction_arbre_step1-1.png\" alt=\"\" \/><\/p>\n<p>On repr\u00e9sente ces individus dans l&rsquo;espace factoriel (a). Si l&rsquo;on calcule les <strong>distances deux-\u00e0-deux<\/strong> entre les individus (b), on se rend compte que les deux individus les plus proches sont Katja et Alison, puisqu&rsquo;elles sont s\u00e9par\u00e9es de 0.51 seulement. On <strong>regroupe donc ces deux individus en un cluster<\/strong> (c), sobrement baptis\u00e9 <code>1<\/code>. On calcule des <strong>coordonn\u00e9es<\/strong> pour ce cluster: elles correspondent en fait aux coordonn\u00e9es de son <strong>barycentre<\/strong>. On peut en outre commencer \u00e0 <strong>construire l&rsquo;arbre de classification<\/strong> (d) en regroupant ces deux individus par une <strong>branche dont le noeud se situe \u00e0 une hauteur correspondant \u00e0 la distance entre les deux individus<\/strong>.<\/p>\n<p>Poursuivons le processus:<\/p>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/Classif_hierarchique_ascendante\/construction_arbre_step2-1.png\" alt=\"\" \/><\/p>\n<p>On a maintenant 6 individus (5 personnes et un cluster). Ces individus sont tous associ\u00e9s \u00e0 des coordonn\u00e9es dans l&rsquo;espace, on peut donc sans difficult\u00e9 calculer les distances deux-\u00e0-deux les s\u00e9parant (b). Ici Rachel et Beth sont les deux individus les plus proches, on les regroupe donc en un cluster <code>2<\/code>. On calcule les coordonn\u00e9es de ce cluster, et on continue \u00e0 construire l&rsquo;arbre de classification (d). La hauteur du noeud correspond, encore une fois, \u00e0 la distance entre Rachel et Beth, i.e. 1.12.<\/p>\n<p>Poursuivons le processus:<\/p>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/Classif_hierarchique_ascendante\/construction_arbre_step3-1.png\" alt=\"\" \/><\/p>\n<p>On consid\u00e8re maintenant 5 individus (3 personnes, 2 clusters). Ici, les deux individus les plus proches sont Cosima et Sarah, on les regroupe donc en un cluster <code>3<\/code>, dont on calcule les coordonn\u00e9es. On continue \u00e0 construire l&rsquo;arbre de classification en rajoutant le troisi\u00e8me noeud (d).<\/p>\n<p>Poursuivons le processus:<\/p>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/Classif_hierarchique_ascendante\/construction_arbre_step4-1.png\" alt=\"\" \/><\/p>\n<p>D\u00e9sormais, on consid\u00e8re 4 individus (1 personne et 3 clusters). Les deux individus les plus proches sont Helena, et le cluster 2. On regroupe ces deux individus en un cluster <code>4<\/code>. On calcule les nouvelles coordonn\u00e9es de ce cluster. Remarquez que le barycentre n&rsquo;est pas \u00e0 mi-chemin entre Helena et le cluster 2 (c). En effet, il y a deux personnes dans le cluster 2, et Helena est seule: l&rsquo;utilisation du barycentre retranscrit le \u00ab\u00a0poids\u00a0\u00bb plus important du cluster 2 dans l&rsquo;\u00e9tablissement des coordonn\u00e9es du cluster. On poursuit la construction de l&rsquo;arbre (d).<\/p>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/Classif_hierarchique_ascendante\/construction_arbre_step5-1.png\" alt=\"\" \/><\/p>\n<p>On consid\u00e8re maintenant 3 individus (3 clusters). Les deux clusters les plus proches sont le cluster <code>3<\/code> et le cluster <code>4<\/code>. On cr\u00e9e donc un cluster <code>5<\/code> qui les r\u00e9unit, et on calcule ses coordonn\u00e9es. Le cluster <code>4<\/code> comptant un individu de plus que le cluster <code>3<\/code>, le barycentre est plus proche de <code>4<\/code> que de <code>3<\/code>!<\/p>\n<p>Poursuivons le processus:<\/p>\n<p><img decoding=\"async\" src=\"..\/..\/lise.vaudor\/Rfigures\/Classif_hierarchique_ascendante\/construction_arbre_step6-1.png\" alt=\"\" \/><\/p>\n<p>Ouf! on arrive \u00e0 la fin (vous avez d\u00fb comprendre, \u00e0 ce stade, l&rsquo;int\u00e9r\u00eat de n&rsquo;avoir que 7 individus dans mon jeu de donn\u00e9es d&rsquo;exemple&#8230;). On regroupe les deux clusters qui restent en pla\u00e7ant un noeud \u00e0 une hauteur qui correspond \u00e0 leur distance. Et notre arbre est fini!<\/p>\n<p>Ici, j&rsquo;ai calcul\u00e9 une <strong>distance euclidienne<\/strong>, et j&rsquo;ai calcul\u00e9 les nouvelles coordonn\u00e9es par la <strong>m\u00e9thode de Ward<\/strong> (les deux sont choisis <strong>par d\u00e9faut<\/strong> lorsque l&rsquo;on fait appel \u00e0 la fonction <code>hclust<\/code>). N\u00e9anmoins, d&rsquo;autres possibilit\u00e9s existent! Pour en prendre connaissance, je vous invite \u00e0 consulter le fichier d&rsquo;aide associ\u00e9 \u00e0 la fonction <code>hclust<\/code>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La classification ascendante hi\u00e9rarchique (CAH) sert \u00e0 d\u00e9finir des classes d&rsquo;individus \u00e0 partir d&rsquo;une ou plusieurs variables quantitatives. La CAH s&rsquo;accompagne de la construction d&rsquo;un arbre de classification. Un exemple: caract\u00e9ristiques de 7 personnages Consid\u00e9rons ce petit jeu de donn\u00e9es: data_orphan=read.table(paste(dat.path,\u00a0\u00bbdata_orphan.csv\u00a0\u00bb,sep=\u00a0\u00bb\u00a0\u00bb), sep=\u00a0\u00bb;\u00a0\u00bb,row.names=1,header=T) print(data_orphan) ## Sante Sante_Mentale Intellect Sociabilite Decision ## Sarah 8 8 7 4 6 ## Alison 7 6 6 8 8 ## Cosima 4 5 8 6 4.. <a href=\"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/classification-ascendante-hierarchique\/\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-593","post","type-post","status-publish","format-standard","hentry","category-tous-les-posts"],"_links":{"self":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts\/593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/comments?post=593"}],"version-history":[{"count":10,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts\/593\/revisions"}],"predecessor-version":[{"id":1058,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/posts\/593\/revisions\/1058"}],"wp:attachment":[{"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/media?parent=593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/categories?post=593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/perso.ens-lyon.fr\/lise.vaudor\/wp-json\/wp\/v2\/tags?post=593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}