MATLAB: Self-Organizing Map (SOM) - clustering
Ich versuche, cluster einige Bilder je nach Winkel zwischen den Körperteilen.
Features extrahiert aus jedem Bild sind:
angle1 : torso - torso
angle2 : torso - upper left arm
..
angle10: torso - lower right foot
Daher den input-Daten wird eine matrix der Größe 1057x10, wo 1057 steht für die Anzahl der Bilder, und 10 steht für die Winkel der Körperteile mit dem Oberkörper.
Ähnlich einem testSet ist 821x10 matrix.
Möchte ich alle Zeilen in input-Daten geclustert werden mit 88 Clustern.
Dann verwende ich diese Cluster zu finden, welche Cluster hat TestData fallen in?
In einer früheren Arbeit, die ich verwendet, K-Means-clustering das ist sehr einfach. Wir bitten die K-Mittel-cluster die Daten in 88 Clustern. Und implementieren Sie eine weitere Methode berechnet den Abstand zwischen den einzelnen Zeilen in der test-Daten und die Zentren der einzelnen cluster haben, dann Holen Sie die kleinsten Werte. Dies ist die cluster der entsprechenden input-Daten Zeile.
Habe ich zwei Fragen:
-
Ist es möglich, dies zu tun mit SOM in MATLAB?
AFAIK SOM ' s sind für visual clustering. Aber ich muss wissen, die tatsächliche Klasse der einzelnen cluster, so dass ich später mein label test-Daten durch Berechnungen, welche cluster er gehört. -
Habt Ihr eine bessere Lösung?
- Warum wollen Sie genau 88 Cluster? Was ist SOM? Was ist dein problem - ist es das finden der Winkel zwischen den Körperteilen aus dem Bild, oder ist es der clustering-Algorithmus?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Self-Organizing Map (SOM) ist ein clustering-Methode als eine unüberwachte Variante des Künstliches Neuronales Netz (ANN). Es nutzt kompetitives lernen Techniken, die zum trainieren des Netzes (Knoten untereinander zu konkurrieren zum anzeigen der stärkste Aktivierung an bestimmten Daten)
Können Sie denken, SOM, als ob es besteht aus einem Netz von miteinander verbundenen Knoten (quadratische Form, hexagonal, ..), wobei jeder Knoten ist eine N-dim Vektor der GEWICHTE (gleiche dimension Größe der Daten, die Punkte wollen wir cluster).
Die Idee ist einfach: gegeben ein Vektor als Eingabe für SOM, die wir den Knoten finden, der Schrank zu, dann aktualisieren Sie Ihre GEWICHTE und die GEWICHTE der benachbarten Knoten, so dass Sie Ansatz, der von den input-Vektor (daher der name self-organizing). Dieser Vorgang wiederholt sich für alle input-Daten.
Dem Cluster gebildet werden, implizit definiert, wie die Knoten organisieren sich selbst und bilden eine Gruppe von Knoten mit ähnlichen gewichten. Sie können problemlos visuell.
SOM sind in einer Art und Weise ähnlich zu der K-Means-Algorithmus aber unterschiedlich, dass wir nicht verhängen eine Feste Anzahl von Clustern, sondern wir geben Sie die Zahl und Form der Knoten im Netz, wir wollen es anpassen, um unsere Daten.
Grundsätzlich, wenn Sie haben eine trainierte SOM, und Sie klassifizieren wollen Sie einen neuen test-input-Vektor, weisen Sie einfach die nächstgelegene (Entfernung als eine ähnlichkeit Maßnahme) Knoten auf dem Gitter (Besten Passende Gerät BMU), und als die Vorhersage das [Mehrheit] Klasse der Vektoren die Zugehörigkeit zu dieser BMU-Knoten.
MATLAB, finden Sie eine Reihe von Toolboxen, die Implementierung der SOM:
nctool
clustering-tool).