Cartes auto-organisées
Cartes auto-organisées (SOM) sont une forme non supervisée d'apprentissage automatique qui peut être utilisée pour regrouper des données présentant de nombreuses fonctionnalités. Le SOM regroupe non seulement vos données, mais les « mappe » également sur une dimension inférieure (généralement deux dimensions) afin que vous puissiez visualiser plus facilement les clusters.
Traditionnellement, les SOM sont expliqués comme une forme de réseau de neurones artificiels où les caractéristiques sont des entrées et les clusters sont des sorties. Mais à peu près tout sur la façon dont un SOM est formé et structuré est différent des réseaux de neurones feedforward traditionnels, même si certains des termes sont les mêmes. Donc, si vous commencez avec une ardoise vierge en ce qui concerne le réseau de neurones, vous pourrez toujours suivre cela. 
Pour faciliter les choses, je vais définir certains termes et ce qu'ils signifient dès le départ :
Nœud . Nous les appelons nœuds parce que nous empruntons des termes aux réseaux de neurones, mais les nœuds des SOM représentent les centres de chacun de nos clusters. Le nombre de nœuds que vous avez est le nombre de clusters que vous aurez.
Lester . Nous empruntons également le terme poids aux réseaux de neurones, mais les poids dans les SOM sont différents. Les poids représentent la position spatiale du nœud (comme dans K-Means, nous avons des centres de cluster). Les poids seront de la même dimension que nos vecteurs de données.
Quartier . Le voisinage d'un nœud est l'ensemble des nœuds qui en sont suffisamment proches. Le degré de proximité "suffisamment" changera au fur et à mesure que nous entraînerons notre SOM.
Taux d'apprentissage . Le taux d'apprentissage reflète à quel point nous modifierons le poids de nos nœuds à chaque itération. Des taux d'apprentissage élevés signifient que nos poids peuvent fluctuer énormément. Des taux d'apprentissage très faibles signifient que nos poids ne changeront pas beaucoup par rapport à leurs valeurs initiales.
Treillis/Carte. La disposition/grille des nœuds dans notre carte.

SOM d'apprentissage incrémentiel
Pour vous donner une meilleure idée générale de ce que font les SOM, nous commencerons par examiner les SOM formés itérativement, qui nous permettra de voir chaque étape de la création des SOM une par une. Ce n'est pas la méthode qui JMP met en oeuvre. Pour être efficace en termes de calcul, JMP entraîne ses SOM avec les méthode par lots, que nous verrons ci-dessous.
Aperçu . Il y a cinq étapes principales pour former un SOM de manière itérative :
- Initialiser les poids des nœuds SOM. Cela peut être fait de manière aléatoire, ou des pondérations de départ particulières peuvent être choisies afin qu'elles soient réparties efficacement sur toutes les valeurs d'entrée possibles (ce que fait JMP).
- Choisir un point de données aléatoire à partir de votre ensemble de données.
- Calculez de quel nœud le point de données est le plus proche . Nous pouvons le faire en calculant la distance entre notre point de données et chaque poids de nœud. Le nœud le plus proche est appelé le Meilleure unité correspondante ( BMU pour faire court).
- Une fois que nous connaissons le BMU, nous calculons quels nœuds se trouvent dans le voisinage du BMU . En d'autres termes, quels nœuds sont suffisamment proches dans la carte de la BMU.
- Nous mettre à jour le poids du BMU et tous ses voisins afin que leurs poids soient plus similaires à notre point de données. Essentiellement, nous faisons en sorte que nos clusters correspondent mieux à nos données. Les nœuds plus éloignés du BMU sont moins modifiés que les nœuds proches du BMU (et le BMU lui-même).
Nous répétons les étapes 2 à 5 jusqu'à ce que nous ayons atteint notre nombre maximum d'itérations, ou que nos poids de nœuds cessent de changer.
En profondeur . Examinons plus en détail les étapes 3 à 5 pour comprendre ce qui se passe de manière plus intuitive.
Avant de commencer, ne laissez pas les maths vous empêcher de lire cette section . Je vais vous montrer des formules, mais ce n'est pas grave si vous ne comprenez pas tous les calculs, tant que vous connaissez l'idée générale derrière Pourquoi nous utilisons ce calcul.
Trouver le BMU . Il existe de nombreuses façons de calculer la distance entre deux vecteurs à n dimensions ; généralement avec les SOM, vous pouvez voir des mesures telles que la distance euclidienne ou la distance cosinus.


Dans ce cas, nous allons utiliser la distance euclidienne. Pour calculer le BMU, nous calculons la distance euclidienne entre notre vecteur de données sélectionné et chacun des vecteurs de poids pour nos nœuds. Le BMU a la plus petite distance.
Calcul des quartiers . La mise à jour de plusieurs nœuds/centres de cluster sépare les SOM des méthodes plus simples telles que K-Means. Non seulement allons-nous changer le poids de notre BMU pour être plus proche du vecteur de données, mais nous allons également changer les nœuds que nous pensons être suffisamment proches du BMU.
Les nœuds sont considérés dans le voisinage d'un BMU s'ils se trouvent dans un certain rayon du BMU. En d'autres termes, si un nœud est à l'intérieur d'un cercle de rayon, r , centré au BMU, il est considéré comme un voisin.
Au début, nous voulons utiliser un voisinage plutôt large et changer de nombreux nœuds. Mais, au fil du temps, nous voulons que nos quartiers deviennent plus petits afin de pouvoir « peaufiner » davantage notre SOM. Pensez à la façon dont, lors du ponçage de quelque chose, nous commençons souvent avec du papier de verre à gros grain et progressons vers du papier de verre à grain plus fin.
Mathématiquement, nous pouvons y parvenir en utilisant une formule pour notre rayon de voisinage, r , cela dépend du temps et devient plus petit au fur et à mesure que nous continuons à former notre SOM. Finalement, le quartier sera si petit qu'il ne contiendra que le BMU.
Mise à jour des poids des nœuds . Une fois que nous savons quels poids de nœud nous voulons mettre à jour, nous calculons de combien les changer. Les poids des nœuds les plus proches de la BMU changeront *le plus*, et les nœuds qui se trouvent à la limite de notre voisinage changeront très peu. Mais tous les poids des nœuds seront rapprochés du vecteur de données actuel.
Nous le faisons en utilisant cette formule (ne vous inquiétez pas, je vais vous guider à travers les différentes parties dans un instant) :

Les W représentent le poids du nœud. W(t+1) est notre actualisé poids, W(t) est notre courant lester. Si nous simplifions un instant la dernière partie du côté droit, nous pouvons voir que le nouveau poids mis à jour est notre ancien poids multiplié par quelques ajustement .

(V(t) - W(t)) est la distance entre notre vecteur de données et le poids du nœud actuel. Cela montre que notre ajustement va dépendre de la distance entre le vecteur de données et le nœud.

L(t) est le taux d'apprentissage. Tout comme notre fonction de voisinage (en fait EXACTEMENT comme notre fonction de rayon de voisinage…), notre taux d'apprentissage commence à une valeur relativement grande, , et diminue avec le temps (la partie exponentielle le fait pour nous.)

Lorsque nous commençons à former notre SOM pour la première fois, notre taux d'apprentissage est élevé, mais au fil du temps, nous voulons que nos poids de nœuds soient plus stables, nous diminuons donc notre taux d'apprentissage.

Non seulement le taux d'apprentissage diminue temps , mais la modification de nos poids de nœud diminue également à mesure que le nœud devient plus loin de notre BMU.
est un noyau gaussien, qui représente mathématiquement cette décroissance. ( distance est la distance entre le nœud que nous modifions et le BMU sur la carte.)

Pour un rayon donné, r(t), le noyau gaussien aura cette forme :
Lorsque la distance entre le nœud que nous mettons à jour et le BMU est grande, sera petit. Inversement, lorsque le nœud que nous mettons à jour est proche du BMU, sera plus grand.
Nous avons enfin déconstruit toute la formule !

Réviser:
W(t) est le poids actuel d'un nœud.

provoque le changement des nœuds les plus éloignés du BMU moins que les nœuds proches de la BMU (et de la BMU elle-même).
L(t) est notre taux d'apprentissage décroissant. Au fil du temps, nous « peaufinons » et apportons de plus petits changements qu'au début de la formation.
V(t) - W(t) est la distance entre le vecteur de données et le poids du nœud (les deux n-dimensionnels). Plus la distance est grande, plus les choses changeront.
Si vous êtes arrivé jusqu'ici, vous méritez une pause ! Nous avons examiné la façon dont les SOM sont formés de manière itérative. Cela nous a montré les idées générales qui rendent les SOM uniques : à savoir la façon dont nous mettons à jour plusieurs poids de nœud en fonction de le temps, la distance de la BMU et la distance entre le vecteur de données et le poids du nœud.
Si vous avez déjà lu sur les SOM ailleurs, ce qui enthousiasme les gens, c'est que les SOM "préservent la topologie", ce qui est juste une façon élégante de dire que les nœuds qui sont proches les uns des autres dans un espace multidimensionnel seront proches les uns des autres dans notre SOM. grille une fois que nous l'avons formé. Cela nous aide à visualiser nos données à l'aide de la grille SOM car il est facile de représenter graphiquement des choses en deux dimensions... mais beaucoup plus difficile en plusieurs dimensions.
L'apprentissage de la formation SOM itérative est utile pour comprendre ces propriétés, mais ce n'est pas efficace en termes de calcul. C'est pourquoi JMP utilise le lot méthode de formation pour effectuer réellement les calculs SOM.
SOM d'apprentissage par lots
Cet algorithme est celui décrit sur le site JMP. Au lieu de former notre SOM un vecteur de données à la fois, nous pouvons utiliser tous les vecteurs de données à la fois !
Voici les étapes :
- Initialiser les poids des noeuds SOM (c'est pareil dans la méthode itérative)
- Tout à la fois, calculer les BMU pour chaque vecteur de données dans notre ensemble de formation.
- Calculer les poids des nouveaux nœuds en utilisant cette formule :

est le nombre de vecteurs de données dont la BMU est le nœud j,
est la moyenne de tous ces vecteurs de données et est la fonction de voisinage qui décide quels nœuds sont modifiés et de combien. C'est semblable au
dans notre algorithme d'entraînement incrémental.
4. Répétez 2 et 3 jusqu'à ce que notre SOM ait convergé.
Les calculs peuvent être plus difficiles à suivre lorsqu'ils se produisent tous en même temps, mais le principe de base de l'algorithme d'apprentissage par lots est qu'au lieu de mettre à jour nos nœuds en réponse à une vecteur de données, nous les mettons à jour en réponse à tout les vecteurs de données à la fois (un peu comme K-Means…). Et heureusement pour vous, cette méthode accélère souvent le temps nécessaire à JMP pour former votre SOM.
Dans JMP
Dans JMP, l'option SOM se trouve dans le menu K-Means. Utilisons un SOM pour regrouper des hamburgers de restauration rapide de divers restaurants américains. Aller à Analyse > Regroupement > K-Means . La fenêtre K-Means Cluster apparaîtra. Cliquez et faites glisser toutes les variables que vous souhaitez utiliser vers le Oui case et cliquez D'ACCORD .
À l'intérieur du panneau de configuration, il y a un menu déroulant pour la méthode. Choisir Carte auto-organisée . De là, vous pouvez choisir la taille de votre grille. Nous allons faire 2x2, ce qui nous donne quatre nœuds disposés en forme rectangulaire. Cliquez sur ALLER .
Notre sortie nous montre automatiquement les moyennes de chacun de nos quatre clusters. Nous pouvons enregistrer ces affectations de cluster en allant dans le triangle rouge sous notre menu SOM Grid et en sélectionnant " Enregistrer les clusters ”. Dans ce même menu, nous pouvons également sélectionner " Biplot ” pour voir une représentation visuelle de notre SOM. JMP tracera les nœuds/clusters en fonction des deux premiers composants principaux. Ici, il semble que le cluster 1 (en haut) soit assez éloigné des trois autres. Nous pouvons vérifier cela plus tard dans Graph Builder.

Même en examinant quelques-unes de nos variables, nous pouvons commencer à comprendre pourquoi le groupe 1 était si différent. Il n'a absolument AUCUNE protéine. Si nous regardons notre ensemble de données, nous pouvons voir que les éléments du groupe 1 ont tendance à être des desserts. 
Le groupe 2, en revanche, est riche en calories, en protéines et en matières grasses ! Vous voudrez peut-être faire attention à ces articles si vous cherchez à rester éveillé longtemps après les avoir mangés.
Conclusion
Les cartes auto-organisées sont un outil utile pour regrouper vos données en créant une carte qui prend des données potentiellement très dimensionnelles et en les mappant sous une forme 2D beaucoup plus gérable. Dans JMP , les SOM sont tout aussi faciles à mettre en œuvre que les K-Means (même si les calculs sous-jacents sont beaucoup plus compliqués), alors qu'avez-vous à perdre en les essayant ?
Cartes auto-organisées (SOM) sont une forme non supervisée d'apprentissage automatique qui peut être utilisée pour regrouper des données présentant de nombreuses fonctionnalités. Le SOM regroupe non seulement vos données, mais les « mappe » également sur une dimension inférieure (généralement deux dimensions) afin que vous puissiez visualiser plus facilement les clusters.
Re : Cartes auto-organiséesSalut Chelsea
avez-vous un exemple d'utilisation du SOM dans JMP pour réduire la dimensionnalité ?
J'utilise généralement SOM pour le clustering, mais je sais qu'il peut également être utilisé pour réduire le nombre de prédicteurs.
Merci
Félix