Tight Clustering: A Resampling-Based Approach for Identifying Stable and Tight Patterns in Data - G. C. Tseng Etude d’article Emmanuel Attia MVA 2007 1 Introduction La classification des données des puces à ADN consiste à trouver des aggrégats de n points -correspondants à chaque gènes- dans un espace à d dimensions correpondants aux patients. Etant donné qu’on ne connait pas a priori la forme de ces aggrégats, on se dirige plutôt vers des méthodes de classification nonsupervisée comme la méthode des K-means. De plus on ne sait pas forcément à l’avance combien d’aggrégats il y aura (d’où l’inopérabilité des K-means dans ce cas là). Enfin les méthodes classiques ne permettent pas d’éliminer les points qui n’appartiennent à aucune catégorie; elles ont tendance à les attribuer à tord à des aggrégats et donc à augmenter la distortion. L’article étudié propose une méthode pour classifier les données en aggrégats resserés (les TightClusters), tout en ignorant les points dispersés et sans connaître forcément le nombre exact de ces aggrégats. Pour ce faire, il consiste à rechercher les aggregats les plus resserés, à les mettre de côté et à continuer sur les données restantes. 2 Algorithme K-means Comme nous l’avons dit précédemment, l’article cherche à trouver un algorithme dans l’esprit du K-means mais le but est d’en détourner l’utilisation. Le problème majeur de cette méthode est qu’il permet de trouver un minimum local de la fonction de distortion, et que ce minimum dépend très fortement de l’initialisation. Il convient donc d’étudier quelle est la meilleure façon de l’initialiser pour trouver au moins un aggrégats sans en y associer de points éparses. Les auteurs présentent donc des comparatifs de plusieurs méthodes d’initialisation, dont principalement par Hierarical clustering avec liaisons simples (Single-linkage, pour être associé à un aggrégat il faut avoir au moins un éléments commum) et liaisons complètes (Complete-linkage, pour être associé à un aggrégat il faut avoir tous les éléments en commums) testés sur des données générés (des distributions gaussiennes plus des points éparses aléatoires). Ce type d’initialisation marche bien lorsque les aggrégats sont bien séparés, mais 1 Emmanuel Attia Master MVA - Traitement de l'Information en Biotechnologie 2007 ne donne pas des résultats très concluants avec des points éparses en plus des aggrégats. Pour surmonter cette difficulté, s’ils recherchent à classifier k aggrégats, ils coupent l’arbre hierarchique pour avoir p × k aggrégats (p ∈ {1, 3, 6}), puis ils gardent les k les plus peuplés et effectuent le K-means dessus. La méthode fonctionne le mieux en prenant p = 3. 3 Algorithme A En seconde partie, les auteurs présent cet algorithme, qui sachant k permet de trouver des aggrégats stables. Pour cela, on applique le K-means sur B souséchantillons des données à étudier (par exemple 70%). Ensuite, on applique la classification aux données et pour chaque sous-échantillons on établit des matrices de co-appartenance. La moyenne de ces matrices donne une estimation de la probabilité de deux candidats d’appartenir au même aggrégats. A partir de cette matrice, dont on seuille les valeurs à une valeur proche de 1, on obtient des candidats d’aggregats resserés, les TightClusters, soit par recherche de composante connexe (analogique au Single-linkage), soit par recherche des cliques maximales (analogique au Complete-linkage). Le sous-échantillonage permet de vérifier que les aggregats formés ne contiennent pas de points éparpillés. 4 Recherche des TightClusters On applique sur les données l’algorithme avec des valeurs successives de k partant de k0 . On compare les q meilleurs clusters de deux k successifs et si on trouve deux clusters de la série k et k + 1 donc la similarités est proche de 1 alors on identifie un TightClusters et on recommence sur les données restantes, en diminuant k0 de 1. On s’arrête lorsque k0 atteind une valeur seuil -par exemple 5- ou bien lorsqu’on obtient le nombre de clusters désirés. Comme la philosophie de la méthode est de sélectionner les aggrégats au fur et à mesure, il est logique qu’on cherche à faire un algorithme dépendant le moins possible du paramètre k, d’où la recherche de stabilité sur au moins deux k successifs. 5 Implémentation Nous avons codé une implémentation complète en C++ (basée sur le K-means, comme dans l’article). Seulement, les auteurs n’indiquent pas de méthode calcul pour le passage de la matrice de coappartenance aux candidats. Nous avons tenté d’implémenter les deux méthodes, mais la lenteur de la recherche des cliques la rend inexploitable. Peut-être qu’une méthode génétique ou plus avancée qu’un simple Backtracking récursif l’aurait rendu plus rapide. Autant le fait d’incrémenter k semble fondamental pour avoir un critère de stabilité des aggrégats, autant le fait de décrémenter k0 n’est pas forcément justifié. On a donc rajouté dans notre implémentation un paramètre nk qui désigne le nombre de fois qu’on peut repartir de k0 avant de le décrémenter. Ainsi le nombre d’aggrégats à trouver n’est plus forcément relié aux valeurs initiales et finales de k0 . 2 Emmanuel Attia Master MVA - Traitement de l'Information en Biotechnologie 2007 6 Analyse sur un cas synthétique Nous avons synthétisé un mélange de 4 distributions uniformes de 30 points et de largeur 1 en dimension 2 auxquels on a rajouté des points éparses sur tous le domaines, puis analysé la façon dont les TightClusters sont déterminés. On a pris B = 70%, 10 sous-échantillons, α = 0.1, β = 0.9, nk = 10, k0 minimum de 3. On remarque sur la figure 1 que les aggrégats synthétiques sont très rapidements séparés entre plusieurs TightClusters. Car dès que k croît, sont considérés comme des aggrégats stable, ceux qui sont très resserrés par rapport aux reste, et comme on recherche à ce moment un certain nombre d’aggrégats, ils sont forcément petits. 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 −1 −1 0 1 2 3 4 5 6 7 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 −1 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 0 1 2 3 4 5 6 −1 7 Figure 1: Classifications de la distribution synthétique en partant de k0 = 3 (en haut à gauche), k0 = 6 (en haut à droite), k0 = 10 (en bas à gauche) et k0 = 20 (en bas à droite). Les points non classifiés à la fin de l’algorithme sont barrés et la ligne de point en bas de chaque image, indique dans quel ordre la classification s’est faite. Si on relache α (voir figure 2), qui joue sur le resserement des aggrégats, si des points sont très proches les uns des autres, au sein d’un aggrégats, ils sont considérés comme un TightClusters à part entière. On remarque d’ailleurs que les valeurs de α peuvent être assez élevées sans que trop de points éparses soient pris par erreurs dans les aggrégats. Cet algorithme permet donc de détecter des aggrégats resserrés relativements les uns par rapport aux autre. C’est principalement dû au fait que la méthode est basée sur un algorithme de classification non-supervisée. Si on voulait séparer correctement ces aggrégats, il faudrait passer à une méthode supervisée en imposant une loi de probabilité (par exemple un mélange de gaussienne), non pas pour faire coller les points à une distribution bien particulière (on choisirait plutôt une loi passe-partout, comme la loi normale), mais pour imposer des 3 Emmanuel Attia Master MVA - Traitement de l'Information en Biotechnologie 2007 7 7 7 6 6 6 5 5 5 4 4 4 3 3 3 2 2 2 1 1 0 0 0 −1 −1 −1 0 1 2 3 4 5 6 7 1 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 Figure 2: Classifications de la distribution synthétique en partant de k0 = 3 pour α = 0.1 (à gauche), α = 0.3 (au centre) et α = 0.5 (à droite). relations d’échelles entre les aggrégats. 7 Analyse sur des données microarray Nous avons appliqués l’algorithme de TightClustering au seul jeu de données qui nous était disponible, le jeu de test de la boîte à outils de bioinformatique de MATLAB (467 gènes, 7 patients). Nous avons utilisés les mêmes paramètres que précedemment, avec comme seul changement un k0 fixé à 5, (et donc nk = ∞). On a bien les premiers aggrégats resserés trouvés pour k > 30, ce qui montre bien l’indépendance de l’algorithme par rapport aux fourchettes de k0 choisis. Par contre, nous avons fait varier les valeurs de α, afin d’observer des sélections d’aggrégats de différentes échelles de sensibilité. Figure 3: Classification des données pour α = 0.1 (à gauche), α = 0.3 (au centre), α = 0.5 (à droite). Sont représentés en couple les données ordonnées de microarray (rouge-vert) et leurs attributions de TightClusters respectifs (en couleurs multiples). 4 Emmanuel Attia Master MVA - Traitement de l'Information en Biotechnologie 2007