L’apprentissage automatique (ML) est un sujet brûlant à l’heure actuelle.
Et le ML supervisé retient beaucoup l’attention. Ils disposent de réseaux neuronaux flashy, du classificateur Naive Bayes et de nombreuses autres méthodes intéressantes (dont certaines ont été abordées dans notre blog JMP ici ).
Mais le ML supervisé nécessite des étiquettes ou des données de vérité. Nous ne pouvons pas demander à un ordinateur de savoir ce qu'est un chat si nous ne pouvons pas lui dire quand il est correct ou incorrect. Malheureusement, les étiquettes sont difficiles à trouver dans certains ensembles de données. Les gens ont trouvé des moyens ingénieux d'obtenir des données étiquetées à moindre coût, comme les CAPTCHA, qui vous demandent de cliquer sur chaque photo comportant un panneau d'arrêt, ou la célèbre application Quick Draw de Google ; mais il peut s’avérer coûteux d’étiqueter de grands ensembles de données.
Souvent, nous n’avons ni étiquettes ni vérité, mais nous disposons de données. Dans ces cas, nous devons utiliser ONU apprentissage automatique supervisé. Le ML non supervisé est ainsi nommé parce que nous ne pouvons pas lui dire ce qui est bien ou mal. Tout comme une nouvelle baby-sitter qui ne connaît pas les règles de la maison, les algorithmes de ML non supervisés n'ont pas les bonnes réponses. Nous ne pouvons pas « corriger » l’algorithme lorsqu’il y a quelque chose qui ne va pas, car il n’y a pas de bonne ou de mauvaise réponse claire.
Bien qu'il ne s'agisse pas du seul type de ML non supervisé, le clustering est très populaire. Lorsque nous ne disposons pas de groupes préétablis pour nos données, notre instinct naturel est souvent de créer nous-mêmes ces groupes. En général, le clustering vise à regrouper les points de données proches les uns des autres dans un même groupe, et les points de données éloignés les uns des autres dans des groupes différents. C'est appelé cohésion (les points similaires sont ensemble) et séparation (les points différents ne le sont pas). Parce que nous n'avons pas d'étiquettes de comparaison, nous jugeons souvent le « succès » de nos clusters/groupes en fonction de leur cohésion et de leur séparation.
K-moyennes
Jetons un coup d'œil à ce petit ensemble de données provenant d'un grand magasin appelé RA Le pêcheur . Fisher's envisage de mettre en œuvre un nouveau programme de récompenses à trois niveaux, mais le personnel doit savoir quels types d'offres faire pour chacun des trois niveaux.
Ils ont collecté des données pilotes sur le nombre moyen d'achats et le nombre moyen d'articles dans chaque achat pour 30 clients. Les données sont graphiques ci-dessous.
Nous souhaitons séparer nos clients en trois groupes afin de pouvoir disposer d'un niveau adapté à chaque client. Nous décidons donc d'utiliser des k-means afin de diviser les clients en trois groupes en fonction du nombre moyen de voyages qu'ils effectuent par an et du nombre d'articles qu'ils achètent en moyenne par voyage.
La première étape des k-moyennes consiste à choisir k. Nous en avons choisi trois. Ensuite, nous sélectionnons k points aléatoires dans nos données. Nous allons traiter ces points de données comme les centres de nos trois clusters.
Ensuite, nous attribuons à chaque point de données le groupe du point dont il est le plus proche. Par exemple, ce point en haut est le plus proche du point bleu, il sera donc dans le cluster bleu.
Nous attribuons ainsi chacun de nos points à un cluster.
Maintenant que nous avons trois clusters, nous pouvons recalculer les nouveaux centres de chaque cluster.
Et puis réattribuez chaque point à son nouveau cluster le plus proche.
Nous répétons ensuite ces étapes jusqu'à ce que l'appartenance au cluster (ou les centres) ne change pas :
- Calculer les centres
- Réaffecter des points
Une fois cet état atteint, notre modèle a convergé , et nous utilisons ces appartenances au cluster comme affectations finales du cluster.
Nous pouvons désormais utiliser nos clusters pour créer nos trois niveaux de clients pour Fisher's. Il semble que nous ayons un groupe clair en rouge qui effectue peu de voyages et n'achète pas beaucoup d'articles. Pour les obtenir plus souvent en magasin, nous offrons 15 % de réduction le mardi.
Le groupe vert effectue un nombre modéré de déplacements, mais achète une grande quantité d’articles lorsqu’il le fait. Pour répondre à leurs besoins, notre niveau Argent comprendra des coupons de 60 % sur un article chaque semaine pour attirer ces clients plus souvent.
Et enfin, notre niveau Or s'adressera au groupe bleu, qui vient régulièrement au magasin, mais n'achète que quelques articles. Ce niveau comprend des événements semestriels proposant d'en acheter un, d'en obtenir un à 50 % de réduction pour tenter d'inciter ces clients à acheter plus d'articles.
K-means est un excellent moyen de séparer vos données en groupes. Et même si notre exemple n’avait que deux dimensions (voyages et objets), les k-moyennes peuvent bien fonctionner pour des données de dimension supérieure. Il est tout simplement plus difficile de tracer les résultats dans un article de blog….
J'ai mentionné plus tôt que l'apprentissage non supervisé ne donne pas de réponses « correctes » avec lesquelles comparer nos résultats. Nous ne pouvons pas calculer la précision ou la sensibilité. Mais nous pouvons calculer une mesure de cohésion et de séparation. Le plus courant est un score de silhouette . Les scores de silhouette varient entre -1 et 1, les scores les plus élevés étant meilleurs. un(je) est la distance moyenne entre un point de données, et tous les autres points de données de son cluster. Cela mesure la cohésion, la proximité des points de données d'un cluster les uns par rapport aux autres. Les grappes étroitement tricotées auront de petites un(i)s .
bi) est la plus petite distance moyenne entre je et chaque point dans un cluster différent. Cela mesure la séparation, à quel point les clusters sont séparés les uns des autres. Les clusters bien définis auront des valeurs élevées pour bi) .
Dans l’ensemble, le score silhouette d’un point éloigné des points d’autres clusters, mais proche des points de son propre cluster aura un score silhouette élevé et positif. Les points qui sont plus proches des points d’autres clusters que des points du propre groupe auront des scores de silhouette faibles, voire négatifs.
Nous pouvons avoir une idée de la « bonne » adaptation de nos clusters aux données en prenant la moyenne des scores de silhouette pour chaque point de données. Le score de silhouette de nos clusters de clients (disons que 10 fois plus vite…) est de 0,614, ce qui signifie que nos clusters sont relativement cohérents et séparés.
Lorsque nous obtenons des scores de silhouette moyens élevés, nous pensons avoir découvert une sorte de structure latente dans les données. Si les clusters sont similaires à eux-mêmes et différents des autres, il semble que ces groupes se produisent naturellement et non comme quelque chose que nous avons imposé aux données.
Maximisation des attentes (avec des mélanges de gaussiennes)
K-means est un algorithme relativement rapide et sale pour regrouper des données. C’est rapide à apprendre et souvent rapide à mettre en œuvre. Mais cette méthode présente deux inconvénients potentiels : premièrement, elle suppose une sphéricité, ce qui signifie que les clusters ont la forme de sphères multidimensionnelles. En pratique, cela signifie en gros que nous supposons que toutes nos caractéristiques ont une variance égale, ce qui est souvent faux. Pensez au regroupement des chats en fonction du nombre moyen de fois où ils miaulent par jour et de leur longueur en centimètres. Il est très peu probable que ces deux choses aient une variance égale.
Le deuxième problème est que k-means donne dur affectations de cluster. Chaque point appartient exactement à un cluster. Parfois, surtout aux limites de nos clusters, nous aimerions tenir compte du fait qu'un point peut faire partie de l'un ou l'autre de deux clusters. Comme ce point ici. Ça pourrait être bleu ou vert.
Ainsi, lorsque nous pensons... ou savons... que nos différentes caractéristiques n'ont pas la même variance, ou que nous voulons doux Pour les affectations de clusters, nous pouvons nous tourner vers une généralisation populaire des k-moyennes : la maximisation des attentes ou EM en abrégé.
La maximisation des attentes est souvent mise en œuvre avec des mélanges de gaussiennes, c'est-à-dire des distributions normales multidimensionnelles. Parce que c'est un peu long, nous appellerons cette technique Mélanges normaux, car c'est ainsi que JMP l'appelle. Nous supposons que toutes les données que nous observons proviennent k distributions normales multidimensionnelles, et nous voulons comprendre quelles sont ces distributions.
Tout comme avec les k-moyennes, les mélanges normaux utilisent des points de départ aléatoires, mais au lieu de sélectionner uniquement des centres, ils choisissent une moyenne et une covariance aléatoires pour chacune des k distributions. Au début, cela peut paraître un peu farfelu, mais restez fidèle à nous.
Il s’agit de l’étape Attente, ou E. Ensuite, nous calculons la probabilité que chaque point appartienne à chaque distribution. Au lieu d'attribuer à chaque point de données une affectation stricte à un cluster, nous disons qu'il appartient à chaque cluster avec certaines probabilités.
Vient ensuite l’étape M. Nous recalculons les paramètres de distribution, tout comme nous avons calculé les nouveaux centres en k-moyennes. Étant donné que chaque point de données appartient à chaque cluster avec une certaine probabilité, nous utilisons chaque point pour calculer les nouveaux paramètres de distribution et les pondérons en fonction de leurs probabilités respectives d'appartenir à ce groupe. Un point qui n'a que 0,01 % de chance d'appartenir au cluster A n'affectera pas beaucoup le calcul de la moyenne et de la covariance du cluster A. Du moins pas comparé à un point qui a 75 % de chances d’appartenir au Cluster A.
Si vous aimez les mathématiques, la formule pour la nouvelle moyenne et la nouvelle covariance se trouve ci-dessous.



Ces formules sont à peu près les mêmes que celles que nous utilisons habituellement pour calculer les moyennes et la covariance – mais avec l'ajout d'un qui pondère la contribution d'un point de données au calcul en fonction de la probabilité que le point de données appartienne à la kième distribution.
Une fois que nous avons les nouveaux paramètres pour chacune de nos k distributions, nous effectuons à nouveau notre étape E et recalculons la probabilité que chaque point appartienne à chaque distribution.
Ensuite, bien sûr, vient l’étape M, puis une autre étape E… encore et encore jusqu’à ce que nos distributions « convergent ». Cela signifie soit qu'à chaque itération d'une étape E et M, RIEN ne change, ou du moins les choses ne changent pas trop. Habituellement, nous examinons la probabilité logarithmique et nous assurons qu'elle est relativement stable.
Nous avons maintenant la probabilité que chaque point de données appartienne à chaque cluster. Si nous avons besoin d'affectations de clusters strictes, nous pouvons simplement choisir que chaque point de données appartienne au cluster avec la probabilité la plus élevée. Mais ce qu’il y a de bien avec la SE, c’est que nous pouvons accepter le flou de l’appartenance à un cluster. Nous pouvons examiner un point de données et considérer le fait que même s'il appartient très probablement au cluster B, il est également très probable qu'il appartienne au cluster D. Cela prend également en compte le fait qu'il peut ne pas y avoir de frontières claires entre nos clusters. Ces groupes sont constitués de distributions multidimensionnelles qui se chevauchent, donc tracer des lignes claires n'est pas toujours la meilleure solution.
Clustering dans JMP
JMP a rendu le clustering incroyablement simple. Il vous suffit d'aller dans le menu Analyser > Clustering. Les K-means et EM avec des mélanges de gaussiennes (appelés mélanges normaux dans le menu) sont tous deux proposés.


Sélectionnez simplement soit K-moyennes ou Mélanges normaux , sélectionnez les colonnes sur lesquelles vous souhaitez effectuer un clustering et choisissez le nombre de clusters que vous souhaitez rechercher. Cliquez sur Aller , et vous aurez votre sortie ! Si vous souhaitez enregistrer les affectations de cluster, cliquez simplement sur le triangle rouge à côté de votre analyse de cluster et choisissez Enregistrer les clusters !
Pour voir un tracé de vos clusters, cliquez sur le triangle rouge et sélectionnez Biplot .
Si vous souhaitez essayer plusieurs k à la fois, ajoutez simplement au Gamme dans la plateforme K-means ou Normal Mixtures. Votre sortie vous montrera maintenant les informations pour chaque k ! JMP sélectionnera le meilleur k pour vous. Affiché sous le Comparaison des clusters menu.
Pour les k-means, JMP (comme SAS) utilise le critère de cluster cubique (c'est ce que signifie CCC) pour sélectionner le k qui correspond le mieux à vos données. Des valeurs CCC plus élevées sont meilleures et indiquent que vos clusters s'ajustent bien aux données, de la même manière que les scores de silhouette. JMP sélectionnera le k qui a la valeur CCC la plus élevée comme cluster optimal. Pour en savoir plus sur CCC, voir ici .

Pour les mélanges normaux, JMP utilise l'AICc (Corriged Akaike Information Criterion) et le BIC (Bayesian Information Criterion) pour choisir le meilleur k. AIC et BIC (comme les scores silhouette et CCC) mesurent dans quelle mesure un modèle (vos clusters, ici) s'adapte aux données. De petites valeurs AIC et BIC indiquent un bon ajustement du modèle. JMP choisira donc le k qui donne le le plus bas Valeurs AIC/BIC (notez que certaines valeurs AICc sont manquantes car l'ensemble de données est petit).
Conclusion
Vous savez maintenant comment utiliser JMP pour regrouper vos données à l'aide de k-means et de modèles de mélanges gaussiens (ou mélanges normaux dans JMP) ! Ainsi, lorsque vous obtenez un ensemble de données super cool qui ne contient pas d'étiquettes ni de données de vérité, vous pouvez toujours créer des informations plutôt intéressantes en utilisant le ML non supervisé.