2009-11-06 3 views
9

J'essaie de regrouper certaines images en fonction des angles entre les parties du corps.MATLAB: aide nécessaire avec la mise en grappe SOM (Self-Organizing Map)

Les caractéristiques extraites à partir de chaque image sont:

angle1 : torso - torso 
angle2 : torso - upper left arm 
.. 
angle10: torso - lower right foot 

Par conséquent, les données d'entrée est une matrice de taille 1057x10, où 1057 représente le nombre d'images, et 10 représente les angles des parties du corps avec le torse. De même, un testSet est une matrice de 821 x 10.

Je souhaite que toutes les lignes des données d'entrée soient regroupées avec 88 grappes. Ensuite, je vais utiliser ces clusters pour trouver les clusters dans lesquels TestData se situe?

Dans un travail précédent, j'ai utilisé K-Means clustering ce qui est très simple. Nous demandons simplement à K-Means de regrouper les données en 88 groupes. Et implémentez une autre méthode qui calcule la distance entre chaque ligne dans les données de test et les centres de chaque cluster, puis choisissez les plus petites valeurs. C'est le cluster de la ligne de données d'entrée correspondante.

J'ai deux questions:

(1) Est-il possible de le faire en utilisant SOM dans Matlab? AFAIK SOM sont pour le regroupement visuel. Mais j'ai besoin de connaître la classe réelle de chaque grappe pour pouvoir ensuite étiqueter mes données de test en calculant à quel groupe elle appartient.

(2) Avez-vous une meilleure solution?

+1

Pourquoi voulez-vous exactement 88 clusters? Qu'est-ce que SOM? Quel est votre problème? Trouvez-vous les angles entre les parties du corps à partir de l'image, ou est-ce l'algorithme de clustering? –

Répondre

16

Self-Organizing Map (SOM) est une méthode de regroupement considérée comme une variation non supervisée du Artificial Neural Network (ANN). Il utilise techniques d'apprentissage compétitifs pour former le réseau (nœuds concurrence entre eux pour afficher la plus forte activation à une donnée donnée)

www.lohninger.com/helpcsuite/kohonen_network_-_background_information.htm

Vous pouvez penser SOM comme si elle se compose d'un réseau de noeuds interconnectés (forme carrée, hexagonale, ..), où chaque nœud est un vecteur de poids N-dim (même taille de dimension que les points de données que nous voulons regrouper).

L'idée est simple; étant donné un vecteur en entrée de SOM, on trouve le noeud closet, puis on met à jour ses poids et les poids des nœuds voisins pour qu'ils s'approchent de celui du vecteur d'entrée (d'où le nom d'auto-organisation). Ce processus est répété pour toutes les données d'entrée.

plotsompos

Les amas formés sont implicitement définis par la façon dont les noeuds s'organisent et forment un groupe de noeuds avec des poids similaires. Ils peuvent être facilement vus visuellement.

plotsomnd

SOM sont d'une manière similaire à la K-Means algorithm mais différente que nous ne leur imposons pas un nombre fixe de grappes, au lieu que nous précisons le nombre et la forme des noeuds dans la grille que nous voulons qu'il adapter à nos données.

Fondamentalement, lorsque vous avez un nœud SOM formé, et que vous voulez classer un nouveau vecteur d'entrée de test, vous suffit d'attribuer à la plus proche (distance comme mesure de similarité) sur la grille (Meilleur unité d'adaptation BMU), et donner comme prédiction la classe [majoritaire] des vecteurs appartenant à ce noeud BMU.

plotsomhits

Matlab, vous pouvez trouver un certain nombre de boîtes à outils qui mettent en œuvre SOM: