2009-11-06 11 views
9

Estoy tratando de agrupar algunas imágenes dependiendo de los ángulos entre las partes del cuerpo.MATLAB: se necesita ayuda con el mapeo de mapa autoorganizado (SOM)

Las características extraídas de cada imagen son:

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

Por lo tanto los datos de entrada es una matriz de tamaño 1057x10, donde 1057 representa el número de imágenes, y 10 stands para ángulos de partes del cuerpo con torso. De manera similar, un testSet es una matriz de 821x10.

Quiero agrupar todas las filas en los datos de entrada con 88 clústeres. Entonces, ¿usaré estos clústeres para encontrar en qué clústeres cae TestData?

En un trabajo anterior, utilicé K-Means clustering, que es muy sencillo. Le pedimos a K-Means que agrupe los datos en 88 clusters. E implemente otro método que calcule la distancia entre cada fila en los datos de prueba y los centros de cada grupo, luego elija los valores más pequeños. Este es el clúster de la fila de datos de entrada correspondiente.

Tengo dos preguntas:

(1) ¿Es posible hacer esto utilizando SOM en MATLAB? AFAIK SOM son para agrupamiento visual. Pero necesito saber la clase real de cada clúster para poder luego etiquetar mis datos de prueba al calcular a qué clúster pertenece.

(2) ¿Tiene una solución mejor?

+1

¿Por qué quiere exactamente 88 racimos? ¿Qué es SOM? ¿Cuál es su problema? ¿Está encontrando los ángulos entre las partes del cuerpo de la imagen, o es el algoritmo de agrupamiento? –

Respuesta

16

Self-Organizing Map (SOM) es un método de agrupamiento considerado como una variación no supervisada de Artificial Neural Network (ANN). Utiliza competitivos aprendizaje técnicas para entrenar la red (nodos compiten entre sí para mostrar la activación más fuerte a unos datos dados)

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

Se puede pensar en SOM como si se trata de una red de nodos interconectados (forma cuadrada, hexagonal, ...), donde cada nodo es un vector de pesos N-dim (el mismo tamaño de dimensión que los puntos de datos que queremos agrupar).

La idea es simple; dado un vector como entrada a SOM, encontramos el nodo clóset, luego actualizamos sus pesos y los pesos de los nodos vecinos para que se aproximen a los del vector de entrada (de ahí el nombre de autoorganización). Este proceso se repite para todos los datos de entrada.

plotsompos

Los grupos formados están implícitamente definen por cómo los nodos se organizan y forman un grupo de nodos con pesos similares. Se pueden ver fácilmente visualmente.

plotsomnd

SOM son de una manera similar a la K-Means algorithm pero diferente en que no imponemos un número fijo de grupos, en vez especificamos el número y forma de los nodos de la red que queremos que se adaptarse a nuestros datos.

Básicamente cuando se tiene un SOM entrenada, y desea clasificar un nuevo vector de entrada de prueba, sólo tiene que asignarlo al más cercano (distancia como una medida de similitud) nodo en la red (Unidad Mejor coincidencia BMU), y dar como predicción la clase [la mayoría] de los vectores que pertenecen a ese nodo BMU.

plotsomhits

para MATLAB, se puede encontrar un número de cajas de herramientas que implementan SOM:

Cuestiones relacionadas