2

Ich habe eine Frage zu selbstorganisierenden Karten:Self-Organizing Maps

Aber zuerst, hier ist mein Ansatz eines an der Umsetzung:

Die som Neuronen in einem Grunde Array gespeichert ist. Jedes Neuron besteht aus einem Vektor (einem anderen Array der Größe der Eingangsneuronen) mit doppelten Werten, die auf einen zufälligen Wert initialisiert werden.

Soweit ich den Algorithmus zu verstehen, das ist eigentlich alles, was ich brauche, sie umzusetzen. mit der euklidischen Abstand von Werten der Probe und den Neuronengewichte

Also, für die Ausbildung wähle ich eine Probe der Trainingsdaten zufällig eine der BMU berechnen.

ich es aktualisieren Danach Gewichte und alle anderen Neuronen in das Sortiment auf der Nachbarschaftsfunktion und die Lernrate abhängig.

Dann verringere ich die Nachbarschaftsfunktion und die Lernrate.

Dies wird bis zu einer festen Anzahl von Iterationen durchgeführt.

Meine Frage ist nun: Wie kann ich die Cluster nach dem Training bestimmen? Meine bisherige Vorgehensweise besteht darin, einen neuen Eingangsvektor darzustellen und den euklidischen Mindestabstand zwischen ihm und der BMU zu berechnen. Aber das scheint mir etwas naiv zu sein. Ich bin mir sicher, dass ich etwas verpasst habe.

Antwort

3

Es gibt keinen einzigen richtigen Weg, dies zu tun. Wie Sie festgestellt haben, ist das Finden der BMU einer von ihnen und der einzige, der Sinn macht, wenn Sie nur den ähnlichsten Cluster finden wollen.

Wenn Sie Ihren Eingabevektor rekonstruieren möchten, funktioniert die Rückgabe des BMU-Prototyps ebenfalls, ist aber möglicherweise nicht sehr präzise (entspricht der Nearest Neighbor-Regel oder 1NN). Dann müssen Sie zwischen den Neuronen interpolieren, um eine bessere Rekonstruktion zu finden. Dies könnte erreicht werden, indem jedes Neuron umgekehrt proportional zu ihrer Entfernung zu dem Eingangsvektor gewichtet wird und dann der gewichtete Durchschnitt berechnet wird (dies ist äquivalent zu dem gewichteten KNN). Sie können diese Interpolation auch auf die Nachbarn des BMU beschränken, da diese schneller arbeiten und bessere Ergebnisse liefern (dies würde mit 5NN gewichtet werden). Diese Technik wurde hier verwendet: The Continuous Interpolating Self-organizing Map.

Sie können sehen und experimentieren mit diesen verschiedenen Optionen hier: http://www.inf.ufrgs.br/~rcpinto/itm/ (kein SOM, aber ein enger Cousin). Klicken Sie auf "Anwenden", um eine Regression auf einer Kurve mit den rekonstruierten Vektoren durchzuführen. Aktivieren Sie dann "Regression zeichnen" und probieren Sie die verschiedenen Optionen aus.

BTW, die Beschreibung Ihrer Implementierung ist korrekt.

+0

Vielen Dank für Ihre ausführliche Antwort und die von Ihnen angegebenen Links! –

1

Ein ziemlich gemeinsames Konzept ist heute der weiche Unterraum Clustering, wo Feature Gewichte hinzugefügt werden, um die wichtigsten Funktionen zu finden. Sie können diese Gewichte verwenden, um die Leistung zu erhöhen und die BMU-Berechnung mit euklidischer Distanz zu verbessern.

+0

Danke für Ihre Antwort! Wie ist dieser Ansatz nützlich, um die Cluster zu bestimmen, nachdem ein Som trainiert wurde? Könnten Sie bitte detaillierte Informationen dazu geben? –

+1

Definitiv ein gutes Beispiel für Sie wäre diese Arbeit: Bassani, H. F .; Araujo, AFR, "Dimension Selective Self-Organizing Karten mit zeitveränderlichen Struktur für Subraum und Projected Clustering," Neuronale Netze und Lernsysteme, IEEE Transactions on, vol.PP, no.99, pp.1,1 [link] (http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=6803941). –

+0

Ihr Ansatz ist ähnlich wie Ihr (min euklidian distance), aber anscheinend wollen Sie mehr Robustheit in Ihre Anwendung, so .. es könnte die Mühe wert sein. –