Clustering

Préambule : Le "clustering" correspond à la "classification automatique" en français. Mais, aujourd’hui, il semble préférable d'utiliser "clustering" pour éviter la confusion avec le terme anglais "classification", qui se réfère au "classement" en réalité c.-à-d. l’apprentissage supervisé avec une variable cible catégorielle. D’autres appellations se retrouvent également dans la littérature : "apprentissage non-supervisé" pour mettre l’accent sur l’absence d’une variable à prédire dans la littérature "machine learning" ; "analyse typologique" est aussi utilisée dans les publications en langue française de l’analyse des données. De manière indifférenciée, les groupes obtenus à l'issue d'un processus de clustering seront appelés groupes, clusters, ou classes.

Cette page recense les supports que j’utilise pour mon cours optionnel de "Clustering" en Master 1 Informatique, préparatoire notamment à l’accès au Master SISE - Data Science.

Rappelons que la classification automatique consiste à catégoriser des objets à partir de leurs propriétés de similarité, l’objectif étant de constituer en groupes homogènes les objets à partir de leurs caractéristiques. Les algorithmes usuels qui cherchent à regrouper des individus décrits dans un tableau individus-variables seront étudiés dans un premier temps (CAH, K-Means, Arbres de classification, Cartes de Kohonen,...). Nous irons plus loin par la suite en travaillant également sur la classification des variables, moins usitée dans la littérature et pourtant particulièrement intéressante lorsque nous traitons des problèmes à forte dimensionnalité (regroupement des variables pour les variables quantitatives, des modalités des variables pour les qualitatives).

Un soin particulier sera apporté aux aspects opérationnels de la classification automatique, notamment (sans être exhaustif) : la validation des classes, avec l’étude des indices d’évaluation internes et externes ; l’interprétation des groupes à l’aide de techniques descriptives (valeurs tests, rapports de corrélation, etc.) ; les méthodes combinées qui consiste à associer des approches factorielles et de classification, leur combinaison est très enrichissante lors l’exploration des données ; le traitement des données hétérogènes (données mixtes, mélange de variables quantitatives et qualitatives) ; le travail à partir d’objets décrits par une matrice de proximité (qui ouvre la porte aux traitements de problèmes plus vastes comme le clustering des noeuds d’un graphe social) ; les techniques spécifiques au traitement des données massives (très grandes bases de données) ; etc.

Les logiciels Python et R seront utilisés durant la partie applicative (travaux dirigés sur machine), l’un et/ou l’autre en fonction des sujets traités et de la qualité des packages disponibles (scikit-learn, caret, yellowbrick, cluster, e1071, ...). Des sessions de remise à niveau sont prévues durant les premiers travaux dirigés pour que tout un chacun puisse s’approprier ces outils. Le préalable nécessaire est d’avoir au moins des bases solides en programmation (codage) informatique. De bonnes connaissances concernant les techniques factorielles (ACP, ACM) seraient pas mal également.

A l’issue de cet enseignement, l’étudiant doit savoir mener une étude complète en partant de la description des données jusqu’au déploiement des solutions (validation, interprétation, déploiement dans un système d’information le classement d’individus supplémentaires), en passant bien évidemment par la mise en œuvre des algorithmes de machine learning sur des données qu’il aura préalablement judicieusement préparées.

Ressources en ligne

Ressources

Supports

Principaux slides pour le cours

Cassification Ascendante Hiérarchique - CAH. Classification automatique. Construire une typologie (des groupes "similaires" d'individus) en utilisant la classification ascendante hiérarchique. Détection du nombre de classes. Tandem analysis (classification sur axes factoriels). Classification mixte - Traitement des grands fichiers.

Méthode des centres mobiles - K-Means. Classification automatique. Construire une typologie (des groupes "similaires" d'individus) en utilisant la méthode des K-Means. Détection du bon nombre de classes. K-Means pour variables qualitatives et mixtes (qualitatives et quantitatives). Classification floue - Fuzzy C-Means. Classification de variables - Classification autour des variables latentes.

Méthode des K-médoïdes. Classification automatique. Technique de réallocation basée sur la notion de médoïde, point représentatif d'un ensemble d'observations associées à un groupe, autreent plus fiable que le barycentre pour les clusters non-convexes ou en présence de points atypiques. Algorithme PAM (partition around medoid). Algorithme CLARA (clustering large application), plus adapté au traitement des grandes bases de données. Critère silhouette, graphique silhouette, utilisable pour l'identification du nombre de classes.

Caractérisation des classes. Interprétation des groupes issus de la classification automatique. Caractérisation univariée et multivariée. Utilisation des variables actives et illustratives. Rapport de corrélation, v de Cramer, valeur-test. Prototypes des classes. Pourcentage d'inertie expliquée par la partition. Distances entre centres de classes. Couplage de la classification automatique avec l'analyse factorielle. Déploiement avec une technique supervisée.

Mesures d'évaluation des partitions. Mesures externes : v de Cramer ; information mutuelle, information mutuelle normalisée, ajustée ; indice de Rand et ses variantes ; mesures d'homogénéité et de complétude, combinaison sous forme de v-mesure. Mesures internes : inerties inter et intra-classes ; indice de Calinski-Harabasz ; critère silhouette par individu, par classe, et par partition ; indice de Davies-Bouldin.

Caractérisation des classes - Taille d'effet (effect size). Utilisation de la taille d'effet (effect size) dans le contexte de l'interprétation des clusters issus d'un processus de classification automatique. La taille d'effet permet de rendre compte de l'intensite d'un phénomène statistique (écarts entre moyennes et proportions, liaisons entre variables), tout en étant insensible à la taille des échantillons.

Cartes topologiques de Kohonen. Cartes auto-organisatrices de Kohonen. Réseaux de neurones. Réduction de dimensionalité. Représentations graphiques. Interprétation des résultats. Couplage avec la CAH (classification ascendante hiérarchique).

Arbres de classification. Construire une typologie (des groupes "similaires" d'individus) en utilisant les arbres de classification. Classification automatique. Clustering en anglais. La méthode s'apparente à une généralisation des arbres de décision - arbres de régression.

Classification de variables. Classification de variables autour des composantes latentes (VARCLUS). L'idée toujours est de découvrir les principales "dimensions" que recèlent les données. La différence ici est que l'on regroupe les variables (selon leur redondance) plutôt que les individus. Les applications vont au delà de la structuration des données.

Classification de variables qualitatives - Classification de modalités. CAH de variables qualitatives basée sur une matrice des dissimilarités déduite du v de Cramer. Approches fondées sur la notion de variables latentes. Insuffisances de la classification de variables qualitatives. Classification de modalités de variables qualitatives. Indice de Dice. Tandem clustering via la projection des modalités dans un espace issu de l'analyse des correspondances multiples.

Autres slides concernant la data science. Couvre les principales méthodes de machine learning (analyse prédictive, classification automatique), de l'analyse des données (analyse factorielle, etc.), de l'économétrie (régression linéaire simple et multiple) et des statistiques (comparaison des populations, tests paramétriques et tests non paramétriques).

Tutoriels vidéos (Playlist + quelques vidéos de référence)

Playlist "Clustering". Tutoriels vidéos en relation avec la classification automatique. Utilisation de plusieurs outils (R et Python, mais d'autres également : Tanagra, Knime, ...).

Python -- Jupyter Notebook + Google Colab. (1) Lancement de l'outil Jupyter Notebook. Création d'un projet de machine learning (ipynb). Saisie et exécution des instructions Python. Accès aux résultats. Introduction des commentaires Markdown. Exportation d'un projet (instruction et résultats) au format PDF vie l'impression. (2) Création et manipulation des notebooks Python dans le cloud avec Google Colab. Une adresse Gmail est nécessaire. Avantages de la solution, notamment pour le traitement des grandes volumétries.

Projet R Notebook avec RStudio (Markdown). Installation de R et RStudio. Création d'un projet "R Notebook". Intérêt par rapport aux projets "R Markdown". Sorties HTML en temps réel. "Knit" des documents pour obtenir d'autres formats de sorties, Word (.docx) notamment.

Introduction au clustering - K-Means avec Tanagra + tableur Excel. Réalisation d'une analyse typologique en mixant les logiciels Tanagra et Excel. Description des données, la question de la standardisation, réalisation d'un K-Means dans Tanagra, récupération des groupes d'appartenance dans le tableur Excel. Post-traitement, interprétation des résultats : rapport de corrélation et valeurs-test pour les variables qualitatives, v de Cramer et valeurs-test pour les qualitatives. Déploiement, affectation d'un individu supplémentaire à l'un des groupes.

Introduction au clustering - K-Means sous Knime - Fichier Iris. Importation et description des données. Standardisation des variables. K-means, interprétation des résultats, prototypes des classes. Variable illustrative qualitative. Classement d'un individu supplémentaire avec prise en compte de la transformation de variables. Lecture, interprétation et positionnement dans le premier plan factoriel de l'ACP (analyse en composantes principales).

Méthode des k-means avec Python - Packages scikit-learn + yellowbrick. Notebook Jupyter. Importation des données, représentations graphiques, préparation (standardisation) des variables, courbe de décroissance de l'inertie intra-classes, utilisation de la librairie "yellowbrick".

Clustering - Gap statistic - Détermination du nombre de groupes (K-Means : Python + Scikit-learn). Présentation et calcul de la statistique "gap" (gap-statistic) basé sur une méthode de Monte-Carlo. Son utilisation dans une stratégie d'identification du "bon" nombre de groupes dans une démarche de clustering (classification automatique). Définition des données de référence sous H0 où les relations entre les individus et les variables sont perturbées aléatoirement. Comparaison des critères de qualité de partitionnement (inertie intra-classe dans le cas des K-Means) entre les données observées et la situation de référence. Règle(s) de détermination de la meilleure solution à partir de la courbe des "gap statistic". Traitements sont Python avec la librairie "scikit-learn".

Clustering / KMeans - Accélérer les traitements sous Scikit-learn / Python. Comment réduire les temps de traitements d'un projet de machine learning / clustering développé avec Scikit-Learn sous Python avec une modification très mineure de votre code, via l'utilisation du package "Intel Extension for Scikit-learn" (scikit-learn-intelex). Le système des patches avec la substitution des classes de calcul optimisées d'Intel à celles de Scikit-learn. Gains en temps de traitements pour les K-Means en entraînement et en inférence sur une base de 500.000 observations et 21 variables. Outils : Python ; packages Scikit-learn, Scikit-learn-intelex.

Méthode des k-means avec R. Démarrage de RStudio et création d'un notebook. Importation et inspection des données. Représentations graphiques. Préparation des données. Approche pour identifier le "bon" nombre de clusters. Interprétation des résultats.

Clustering de données pré-classées. Variante de la CAH Mixte. Mise en oeuvre d'un algorithme de clustering (la classification ascendante hiérarchique) lorsqu'il existe déjà un premier niveau de regroupement endémique aux données, et non pas fourni par le calcul. Cohérences des regroupements des classes en clusters, recodage des observations originelles. Tutoriel sous R / RStudio.

Mesures d'évaluation des partitions issues d'un clustering. Mesures externes et internes pour évaluer la partition induite par un algorithme de classification automatique. Focus sur les mesures proposées par la librairie Scikit-Learn pour Python. v de Cramer, information mutuelle, indice de Rand, homogénéité et complétude, v-Measure. Inertie expliquée, indice de Calinski-Harabasz, critère silhouette, indice de Davies-Bouldin.

Clustering Mixte - Combinaison K-Means et CAH. Combiner les avantages de la méthode des K-Means et de la CAH (classification ascendante hiérarchique) pour le traitement des grosses volumétries en clustering. Construction de pré-clusters dans une première étape avec les K-Means ; agrégation des pré-clusters avec la CAH pour aboutir à la partition finale. Focus sur le processus d'association des individus aux groupes finaux. Utilisation du logiciel R, avec les procédures kmeans (package "historique" stats) et hclust (stats).

Clustering Mixte - Combinaison Carte de Kohonen et CAH. Combiner les avantages des Cartes de Kohonen (SOM - Self Organization Map) et de la CAH (classification ascendante hiérarchique) dans le traitement des grandes bases en classification automatique (clustering, apprentissage non-supervisé). SOM permet de construire des pré-clusters qui sont regroupés par la CAH ensuite. L'avantage ici est que SOM est aussi un algorithme de réduction de dimension et de visualisation des données. Dans notre processus, ses outils d'interprétation visuelle permettent d'identifier relativement aisément les caractéristiques des groupes finaux. Utilisation du logiciel R, avec les procédures som (package "kohonen") et hclust (stats).

Clustering de variables quantitatives. Regroupement / structuration de variables à l'aide d'un algorithme de clustering (cah - classification ascendante hiérarchique). Mesure de similarité entre les variables, coefficient de corrélation vs. carré du coefficient de corrélation. Dérivation d'une mesure de dissimilarité / distance entre les variables. Mise en oeuvre de la méthode de machine learning. Identification des groupes. Lecture des résultats. Enfin, exploitation des variables supplémentaires pour renforcer l'interprétation. Traitements sous Python avec les librairies Pandas, Numpy et Scipy.

ACP + Rotation Quartimax vs. Clustering de variables - Python - Package "statsmodels". ACP (analyse en composantes principales) avec la rotation de facteurs "quartimax" (rotation orthogonale). Son utilisation dans le cadre d'un regroupement des variables (clustering de variables) pour comprendre les structures sous-jacentes aux données. Présentation des résultats sous la forme d'un graphique "heatmap", permettant de disposer d'une lecture plus limpide à la fois des appartenances aux groupes, mais aussi des relations entre les variables à l'intérieur des groupes. Les résultats sont mis en relation avec ceux obtenus à l'aide d'une approche plus classique fondée sur une CAH (classification ascendante hiérarchique) et une distance déduite des carrés des corrélations entre les variables. Traitements sous Python avec les packages statsmodels et seaborn.

Clustering de variables qualitatives - Classification de modalités. Principe du clustering des variables qualitatives. Structuration / regroupement des modalités après un codage disjonctif complet. Indice de Dice entre les indicatrices. Matrice de distance. CAH, classification ascendante hiérarchique, algorithme non-supervisé de machine learning. Identification des groupes. Lecture des résultats. Utilisation des variables (modalités) illustratives pour renforcer les interprétations. Traitements sous Python avec les packages Pandas, Numpy et Scipy.

Clustering des modalités de variables qualitatives via leur représentation factorielle (Python). Structuration de l'information à l'aide du clustering de modalités, lorsque les observations sont décrites par exclusivement des variables qualitatives. Exploitation de la représentation factorielle des points-modalités issue d'une ACM (analyse des correspondances multiples). K-Means des points-modalités dans l'espace factoriel en tenant compte de leur pondération (une modalité correspond à un ensemble d'individus). Traitements sous Python avec les packages 'fanalysis' et 'scikit-learn'.

Tandem Clustering - Classification sur données mixtes. Solution pour le clustering sur données hétérogènes composées de variables quantitatives et qualitatives en machine learning : (1) plonger les individus dans un espace factoriel à l'aide d'un algorithme qui permet de traiter le mix de variables (l'analyse factorielle des données mixtes - AFDM - en l'occurrence) ; (2) puis appliquer un algorithme de classification (classification ascendante hiérarchique CAH ici) à partir de la représentation factorielle des individus. Au passage, nous opérons une réduction de dimension en n'exploitant qu'une partie des composantes principales, une forme de nettoyage des données. Utilisation du langage et logiciel R, avec les fonctions FAMD (package FactoMineR) et hclust (stats).

Clustering - Pipeline Python et Déploiement (packages scikit-learn + fanalysis). Clustering (k-means) sur données décrites par des variables catégorielles. Tandem clustering : projection des individus dans un espace factoriel à l'aide de l'analyse des correspondances multiples (ACM avec le package fanalysis) ; puis classification à partir de la représentation factorielle. Choix de nombre de facteurs, réduction de dimension. Identification du nombre de classes via la librairie Yellowbrick. Encapsulation des traitements dans une structure "pipeline" de scikit-learn. Sauvegarde du "modèle" (pipeline) d'affectation dans un fichier à l'aide de la librairie "pickle". Ecriture d'un programme permettant de déployer le "modèle" sur un ficher d'individus supplémentaires.

Clustering flou - La méthode Fuzzy C-Means. Principe et intérêt de la partition floue dans une démarche de classification automatique. Différences par rapport au K-Means usuel. La notion de degré d'appartenance aux classes. Rôle du paramètre "fuzzifier" dans l'algorithme de la méthode de machine learning. Illustration de la plan. Relativiser l'affectation à un cluster pour les observations situées à la limite de différents clusters. Lecture des résultats dans un jeu de données plus réaliste. Notebook sous Python avec les packages scikit-learn et scikit-fda.

Clustering de documents textuels (NLP) avec PyCaret (Python). NLP (Natural Language Processing) / Text Mining. Création automatique et simplifiée d'un pipeline de clustering de documents textuels sous Python à l'aide du package 'PyCaret'. Traitements et résultats dans une première approche. Puis, dans un deuxième temps, analyse approfondie des étapes de calculs mis en place par PyCaret, qui utilise en interne la classe de calcul TfidfVectorizer du package 'scikit-learn' pour créer la matrice documents-termes présentée à la méthode des K-Means. Possibilité de combiner les traitements avec une réduction de dimension (ACP - analyse des correspondances multiples), soit dans une phase illustrative (pour simplement représenter les groupes), soit dans une phase active (ce sont les composantes de l'ACP qui sont présentées à l'algorithme des K-Means).

Segmentation d'image avec les K-Means (Python / OpenCV vs. Scipy). Application d'une méthode de clustering pour la segmentation d'image. Conversion d'une image (en tableau de pixels) en une matrice 2D individus (pixels) x variables (3 couleurs RGB). Mise en oeuvre de la méthode des K-Means. Labélisation des pixels à l'aide des groupes d'appartenance. Reconstitution de l'image avec les "codebooks" (vecteur des moyennes conditionnelles représentant chaque groupe) pour obtenir une représentation en bichromie, quadrichromie, ... , K-chromie. Traitements sous Python avec les librairies PIL, matplotlib et Scipy. Il n'a pas été nécessaire d'utiliser OpenCV.

Clustering de graphes - Détection des communautés (Python / igraph). Recherche des communautés dans un graphe représentant un réseau social via les techniques de clustering. Matrice d'adjacence. Transformation en matrice de distances cosinus. Application de la CAH (classification ascendante hiérarchique). Identification des individus caractéristiques des clusters avec la notion de médoïde. Traitements sous Python avec les packages igraph, scipy, scikit-learn.

Tutoriels rédigés

Archive des tutoriels. Site regroupant de nombreux tutoriels (PDF) en français et en anglais relatifs à la pratique du machine learning / science des données. Nombre d'entre eux ont trait à la classification automatique. Utilisation de différents outils.

CAH et K-Means avec Python. Exploration des packages scipy et scikit-learn dans une démarche de clustering. Etude des algorithmes CAH (classification ascendante hiérarchique) et k-means (méthode des centres mobiles) proposés par ces outils.

Classification automatique sous R. Guide montrant les principales commandes sous R (package "stats") pour réaliser une CAH et un k-means. Utilisation des techniques univariées (rapport de corrélation, valeur-test) et multivariées (acp - analyse en composantes principales) pour l'interprétation des groupes.

Interpréter la valeur-test. Détail des calculs de la valeur-test pour la caractérisation des classes en classification automatique. Comparaison de moyennes, comparaison de proportions. Exemple de mise en oeuvre sous Tanagra.

La méthode TwoStep Cluster (SPSS). Approche TwoStep Cluster de SPSS pour la classification automatique. Approche mixte (combinée), création de pré-clusters, fusionnés itérativement à l'aide d'un algorithme hiérarchique. Détection automatique du nombre de classes. Traitement indifférenciée des variables actives quantitatives et qualitatives. Capacité à traiter les grandes bases de données. Comparaison avec une programmation ad hoc de la stratégie combinée sous R.

Les cartes de Kohonen avec R. Représentation des données dans un espace 2 dimensions. Couplage avec une méthode de classification automatique permettant d'associer la représentation topologique à l'interprétation des classes issus du clustering.

Traitement de gros volumes - CAH Mixte (avec R). Combinaison d'un K-Means et d'une CAH pour le traitement des grosses volumétries, avec un double avantage : la capcité du K-Means à appréhender les gros fichiers, l'aide du dendrogramme de la CAH pour identifier au mieux le "bon" nombre de clusters. Traitements sous les logiciels R et Tanagra.


Ricco Rakotomalala