Selbstorganisierende Karten
Selbstorganisierende Karten (SOMs) sind eine nicht überwachte Form des maschinellen Lernens, mit der Daten mit vielen Funktionen geclustert werden können. Die SOM gruppiert Ihre Daten nicht nur, sondern „ordnet“ sie auch einer niedrigeren Dimension (normalerweise zwei Dimensionen) zu, damit Sie die Cluster leichter visualisieren können.
Traditionell werden SOMs als eine Art künstliches neuronales Netzwerk erklärt, bei dem Merkmale Eingaben und Cluster Ausgaben sind. Aber so ziemlich alles darüber, wie ein SOM trainiert und strukturiert ist anders von traditionellen neuronalen Feedforward-Netzen, obwohl einige der Begriffe gleich sind. Wenn Sie also in Bezug auf das neurale Netzwerk mit einer leeren Tafel beginnen, können Sie dies immer noch verfolgen. 
Um die Dinge einfacher zu machen, werde ich einige Begriffe und ihre Bedeutung im Voraus definieren:
Knoten . Wir nennen sie Knoten, weil wir Begriffe von neuronalen Netzwerken ausleihen, aber die Knoten in SOMs repräsentieren die Zentren jedes unserer Cluster. Die Anzahl der Knoten, die Sie haben, ist die Anzahl der Cluster, die Sie haben werden.
Gewicht . Wir leihen uns auch den Begriff Gewichtung von Neural Networks, aber die Gewichtungen in SOMs sind anders. Gewichtungen stellen die räumliche Position des Knotens dar (so wie wir in K-Means Clusterzentren haben). Die Gewichte haben dieselbe Dimension wie unsere Datenvektoren.
Gegend . Die Nachbarschaft eines Knotens sind alle Knoten, die nahe genug bei ihm liegen. Wie nah „ausreichend“ nah ist, ändert sich, wenn wir unsere SOM trainieren.
Lernrate . Die Lernrate spiegelt wider, wie stark wir unsere Knotengewichte bei jeder Iteration ändern. Große Lernraten bedeuten, dass unsere Gewichte stark schwanken können. Sehr kleine Lernraten bedeuten, dass sich unsere Gewichte nicht wesentlich von ihren Anfangswerten ändern.
Gitter/Karte. Die Anordnung/Gitter der Knoten in unserer Karte.

Inkrementelles Lernen SOM
Um Ihnen eine bessere allgemeine Vorstellung davon zu geben, was SOMs tun, beginnen wir mit einem Blick auf trainierte SOMs iterativ, Dadurch können wir jeden Schritt bei der SOM-Erstellung einzeln sehen. Dies ist nicht die Methode, die JMP implementiert. Um rechnerisch effizient zu sein, trainiert JMP seine SOMs mit dem Batch-Methode, die wir unten sehen werden.
Überblick . Es gibt fünf Hauptschritte, um eine SOM iterativ zu trainieren:
- Initialisieren die Gewichte der SOM-Knoten. Dies kann entweder zufällig erfolgen, oder es können bestimmte Anfangsgewichtungen gewählt werden, damit sie effizient über alle möglichen Eingabewerte verteilt werden (was JMP tut).
- Wählen ein zufälliger Datenpunkt aus Ihrem Datensatz.
- Berechnen Sie, welchem Knoten der Datenpunkt am nächsten ist . Wir können dies tun, indem wir den Abstand zwischen unserem Datenpunkt und jedem Knotengewicht berechnen. Der Knoten, der am nächsten ist, wird als der bezeichnet Beste passende Einheit ( BMU kurz).
- Sobald wir das BMU kennen, berechnen wir, welche Knoten in der Nachbarschaft der BMU liegen . Mit anderen Worten, welche Knoten sind in der Karte ausreichend nah an der BMU.
- Wir Aktualisieren Sie das Gewicht der BMU und alle seine Nachbarn, damit ihre Gewichte unserem Datenpunkt ähnlicher sind. Im Wesentlichen passen wir unsere Cluster besser an unsere Daten an. Knoten, die weiter von der BMU entfernt sind, werden weniger geändert als Knoten in der Nähe der BMU (und der BMU selbst).
Wir wiederholen die Schritte 2–5, bis wir unsere maximale Anzahl an Iterationen erreicht haben oder unsere Knotengewichte sich nicht mehr ändern.
In die Tiefe . Schauen wir uns die Schritte 3-5 genauer an, um intuitiver zu verstehen, was vor sich geht.
Bevor wir anfangen, Lassen Sie sich nicht von der Mathematik davon abhalten, diesen Abschnitt zu lesen . Ich werde Ihnen Formeln zeigen, aber es ist in Ordnung, wenn Sie die ganze Mathematik nicht verstehen, solange Sie die allgemeine Idee dahinter kennen warum Wir verwenden diese Mathematik.
BMU finden . Es gibt viele Möglichkeiten, den Abstand zwischen zwei n-dimensionalen Vektoren zu berechnen; In der Regel werden bei SOMs Maßeinheiten wie die euklidische Distanz oder die Kosinusdistanz angezeigt.


In diesem Fall verwenden wir die euklidische Distanz. Um die BMU zu berechnen, berechnen wir den euklidischen Abstand zwischen unserem ausgewählten Datenvektor und jedem der Gewichtsvektoren für unsere Knoten. Das BMU hat den geringsten Abstand.
Nachbarschaften berechnen . Das Aktualisieren mehrerer Knoten/Clusterzentren trennt SOMs von einfacheren Methoden wie K-Means. Wir werden nicht nur die Gewichtung unserer BMU ändern, um näher am Datenvektor zu sein, sondern wir werden auch Knoten ändern, von denen wir glauben, dass sie ausreichend nahe an der BMU liegen.
Knoten werden in der Nachbarschaft einer BMU betrachtet, wenn sie sich innerhalb eines bestimmten Radius der BMU befinden. Mit anderen Worten, wenn ein Knoten innerhalb eines Kreises mit Radius liegt, r , zentriert am BMU, gilt es als Nachbar.
Zuerst wollen wir eine große Nachbarschaft verwenden und viele Knoten ändern. Aber im Laufe der Zeit möchten wir, dass unsere Nachbarschaften kleiner werden, damit wir unsere SOM weiter „feintunen“ können. Denken Sie darüber nach, wie wir beim Schleifen oft mit Schleifpapier mit großer Körnung beginnen und uns zu Schleifpapier mit feinerer Körnung vorarbeiten.
Mathematisch können wir dies erreichen, indem wir eine Formel für unseren Nachbarschaftsradius verwenden, r , das hängt von der Zeit ab und wird kleiner, wenn wir unseren SOM weiter trainieren. Irgendwann wird die Nachbarschaft so klein sein, dass sie nur noch das BMU enthält.
Knotengewichte aktualisieren . Sobald wir wissen, welche Knotengewichte wir aktualisieren möchten, berechnen wir, um wie viel sie geändert werden müssen. Die Gewichte der Knoten, die der BMU am nächsten sind, ändern sich am *am meisten*, und die Knoten, die sich am äußersten Rand unserer Nachbarschaft befinden, werden sich nur sehr wenig ändern. Aber alle Knotengewichte werden näher an den aktuellen Datenvektor gezogen.
Wir verwenden dazu diese Formel (keine Sorge, ich werde Sie gleich durch die verschiedenen Teile führen):

Die Ws repräsentieren das Knotengewicht. W(t+1) ist unser Aktualisiert Gewicht, W(t) ist unser aktuell Gewicht. Wenn wir den letzten Teil der rechten Seite für einen Moment vereinfachen, können wir sehen, dass das neue, aktualisierte Gewicht unser altes Gewicht multipliziert mit etwas ist Einstellung .

(V(t) - W(t)) ist der Abstand zwischen unserem Datenvektor und dem aktuellen Knotengewicht. Dies zeigt, dass unsere Anpassung davon abhängen wird, wie weit der Datenvektor und der Knoten voneinander entfernt sind.

L(t) ist die Lernrate. Genau wie unsere Nachbarschaftsfunktion (eigentlich GENAU wie unsere Nachbarschaftsradiusfunktion…) beginnt unsere Lernrate bei einem relativ großen Wert, , und wird mit der Zeit kleiner (der exponentielle Teil erledigt das für uns.)

Wenn wir zum ersten Mal mit dem Training unserer SOM beginnen, ist unsere Lernrate hoch, aber im Laufe der Zeit möchten wir, dass unsere Knotengewichte stabiler werden, also verringern wir unsere Lernrate.

Nicht nur die Lerngeschwindigkeit sinkt über Zeit , aber die Änderung unserer Knotengewichte nimmt auch ab, wenn der Knoten wird des Weiteren von unserem BMU.
ist ein Gaußscher Kern, der diesen Zerfall mathematisch darstellt. ( Abstand ist die Entfernung zwischen dem Knoten, den wir ändern, und der BMU in der Karte.)

Für einen gegebenen Radius r(t) hat der Gaußsche Kern diese Form:
Wenn die Entfernung zwischen dem Knoten, den wir aktualisieren, und der BMU groß ist, wird klein sein. Umgekehrt, wenn sich der Knoten, den wir aktualisieren, in der Nähe der BMU befindet, wird größer sein.
Wir haben endlich die ganze Formel dekonstruiert!

Zur Überprüfung:
W(t) ist das aktuelle Gewicht eines Knotens.

bewirkt, dass Knoten, die weiter von der BMU entfernt sind, geändert werden weniger als Knoten in der Nähe der BMU (und der BMU selbst).
L(t) ist unsere abnehmende Lernrate. Im Laufe der Zeit machen wir „Feintuning“ und nehmen kleinere Änderungen vor, als wir es zu Beginn des Trainings sind.
V(t) - W(t) ist der Abstand zwischen dem Datenvektor und dem Knotengewicht (beide n-dimensional). Je größer die Entfernung, desto mehr werden sich die Dinge ändern.
Wenn Sie es bis hierhin geschafft haben, haben Sie sich eine Pause verdient! Wir haben die Art und Weise überprüft, wie SOMs iterativ trainiert werden. Dies zeigte uns die allgemeinen Ideen, die SOMs einzigartig machen: nämlich die Art und Weise, wie wir mehrere Knotengewichte abhängig von aktualisieren Zeit, Entfernung von der BMU und Entfernung zwischen dem Datenvektor und dem Knotengewicht.
Wenn Sie jemals irgendwo anders über SOMs gelesen haben, regen sich die Leute darüber auf, dass SOMs „die Topologie bewahren“, was nur eine schicke Art zu sagen ist, dass Knoten, die im multidimensionalen Raum dicht beieinander liegen, in unserem SOM dicht beieinander liegen werden Raster, sobald wir es trainiert haben. Dies hilft uns, unsere Daten mithilfe des SOM-Rasters zu visualisieren, da es einfach ist, Dinge in zwei Dimensionen grafisch darzustellen ... aber viel schwieriger in mehreren Dimensionen.
Das Erlernen des iterativen SOM-Trainings ist hilfreich, um diese Eigenschaften zu verstehen, aber es ist nicht recheneffizient. Aus diesem Grund verwendet JMP die Charge Trainingsmethode, um die SOM-Berechnungen tatsächlich durchzuführen.
Batch-Lern-SOM
Dieser Algorithmus wird auf der JMP-Website beschrieben. Anstatt unsere SOM jeweils mit einem Datenvektor zu trainieren, können wir alle Datenvektoren auf einmal verwenden!
Hier sind die Schritte:
- Initialisieren die Gewichte der SOM-Knoten (dasselbe gilt für das iterative Verfahren)
- Alles auf einmal, Berechnen Sie die BMUs für jeden Datenvektor in unserem Trainingssatz.
- Berechnen Sie die neuen Knotengewichte mit dieser Formel:

ist die Anzahl der Datenvektoren, deren BMU der Knoten j ist,
ist der Mittelwert all dieser Datenvektoren und ist die Nachbarschaftsfunktion, die entscheidet, welche Knoten geändert werden und um wie viel. Es ist ähnlich wie bei
in unserem inkrementellen Trainingsalgorithmus.
4. Wiederholen Sie 2 und 3, bis unsere SOM konvergiert ist.
Die Mathematik kann schwieriger zu verfolgen sein, wenn sie auf einmal passiert, aber die Grundvoraussetzung des Batch-Learning-Algorithmus ist, dass anstatt unsere Knoten als Reaktion darauf zu aktualisieren eines Datenvektor, wir aktualisieren sie als Reaktion auf alle die Datenvektoren auf einmal (ähnlich wie K-Means…). Und zu Ihrem Glück verkürzt diese Methode oft die Zeit, die JMP zum Trainieren Ihres SOM benötigt.
Im JMP
In JMP befindet sich die SOM-Option im K-Means-Menü. Lassen Sie uns eine SOM verwenden, um einige Fast-Food-Hamburger aus verschiedenen amerikanischen Restaurants zu gruppieren. Gehe zu Analysieren > Clustering > K-Means . Das K-Means-Cluster-Fenster wird eingeblendet. Klicken und ziehen Sie alle Variablen, die Sie verwenden möchten, auf die Y Feld und klicken Sie auf OK .
In der Systemsteuerung gibt es ein Dropdown-Menü für Methode. Wählen Selbstorganisierende Karte . Hier können Sie die Größe Ihres Rasters auswählen. Wir machen 2x2, was uns vier Knoten gibt, die in einer rechteckigen Form angeordnet sind. Klicken GEHEN .
Unsere Ausgabe zeigt uns automatisch die Mittelwerte von jedem unserer vier Cluster. Wir können diese Cluster-Zuweisungen speichern, indem wir zum roten Dreieck in unserem SOM-Grid-Menü gehen und „ Cluster speichern “. Im selben Menü können wir auch „ Biplot “, um eine visuelle Darstellung unseres SOM zu sehen. JMP zeichnet die Knoten/Cluster nach den ersten beiden Hauptkomponenten. Hier sieht es so aus, als ob Cluster 1 (ganz oben) ziemlich weit von den anderen drei entfernt ist. Wir können das später im Graph Builder überprüfen.

Selbst wenn wir einige unserer Variablen untersuchen, können wir allmählich erkennen, warum Cluster 1 so anders war. Es hat absolut KEIN Protein. Wenn wir uns unseren Datensatz ansehen, sehen wir, dass es sich bei den Artikeln in Cluster 1 eher um Desserts handelt. 
Cluster 2 hingegen ist reich an Kalorien, Protein und Fett! Sie sollten auf diese Dinge achten, wenn Sie lange wach bleiben möchten, nachdem Sie sie gegessen haben.
Fazit
Selbstorganisierende Karten sind ein nützliches Werkzeug, um Ihre Daten zu gruppieren, indem Sie eine Karte erstellen, die potenziell hochdimensionale Daten aufnimmt und sie in eine viel besser verwaltbare 2D-Form abbildet. Im JMP , SOMs sind genauso einfach zu implementieren wie K-Means (auch wenn die Mathematik dahinter viel komplizierter ist), was haben Sie also zu verlieren, wenn Sie sie ausprobieren?
Selbstorganisierende Karten (SOMs) sind eine nicht überwachte Form des maschinellen Lernens, mit der Daten mit vielen Funktionen geclustert werden können. Die SOM gruppiert Ihre Daten nicht nur, sondern „ordnet“ sie auch einer niedrigeren Dimension (normalerweise zwei Dimensionen) zu, damit Sie die Cluster leichter visualisieren können.
Betreff: Selbstorganisierende KartenHallo Chelsea
Haben Sie ein Beispiel dafür, wie Sie die SOM in JMP zur Dimensionsreduktion verwenden?
Normalerweise verwende ich SOM für das Clustering, aber ich weiß, dass es auch verwendet werden kann, um die Anzahl der Prädiktoren zu reduzieren.
Vielen Dank
Felice