suptitle - MATLAB: se necesita ayuda con el agrupamiento autoorganizado de mapas(SOM)
suptitle matlab (1)
Intento agrupar algunas imágenes dependiendo de los ángulos entre las partes del cuerpo.
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 son una matriz de tamaño 1057x10, donde 1057 representa el número de imágenes y 10 representa ángulos de partes del cuerpo con torso. De manera similar, un testSet es una matriz de 821x10.
Quiero agrupar todas las filas de los datos de entrada con 88 clústeres. Entonces, ¿usaré estos clusters para encontrar en qué clústeres cae TestData?
En un trabajo anterior, utilicé la agrupación de K-Means, que es muy sencilla. 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 usando 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) ¿Tienes una mejor solución?
El mapa de autoorganización (SOM) es un método de agrupación considerado como una variación no supervisada de la Red Neural Artificial (ANN) . Utiliza técnicas de aprendizaje competitivas para entrenar la red (los nodos compiten entre sí para mostrar la activación más fuerte a un dato dado)
Puede pensar en SOM como si constara de una grilla 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 cerrado a él, 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.
Los conglomerados formados se definen implícitamente por la forma en que los nodos se organizan y forman un grupo de nodos con pesos similares. Se pueden ver fácilmente visualmente.
Los SOM son similares a los algoritmos de K-Means pero diferentes en que no imponemos un número fijo de clústeres, sino que especificamos el número y la forma de los nodos en la cuadrícula que queremos que se adapte a nuestros datos.
Básicamente cuando tienes un SOM entrenado y quieres clasificar un nuevo vector de entrada de prueba, simplemente lo asignas al nodo más cercano (distancia como medida de similitud) en la cuadrícula (BMU de la Unidad de mejor coincidencia ), y das como predicción el [ mayoría de clase de los vectores que pertenecen a ese nodo BMU.
Para MATLAB, puede encontrar una serie de cajas de herramientas que implementan SOM:
- La Caja de herramientas de red neuronal de MathWorks se puede usar para agrupar en clúster con SOM (consulte la herramienta de clúster
nctool
). - También vale la pena echarle un vistazo es SOM Toolbox