MATLAB: Self-Organizing Map (SOM) de clustering
-
18-09-2019 - |
Pergunta
Eu estou tentando agrupar algumas imagens dependendo dos ângulos entre as partes do corpo.
As características extraídas de cada imagem são:
angle1 : torso - torso
angle2 : torso - upper left arm
..
angle10: torso - lower right foot
Portanto, os dados de entrada é uma matriz de tamanho 1057x10, onde 1057 representa o número de imagens, e 10 representa o ângulo de partes do corpo com torso. Da mesma forma um testSet é 821x10 matriz.
Eu quero que todas as linhas de dados de entrada a ser agrupados com 88 clusters. Então eu vou usar esses grupos para encontrar quais os clusters não TestData cair?
Em um trabalho anterior, eu usei K-means clustering que é muito simples . Pedimos apenas K-Means para agrupar os dados em 88 clusters. E implementar um outro método que calcula a distância entre cada linha de dados de teste e os centros de cada cluster, em seguida, escolher os menores valores. Este é o conjunto de linha de dados de entrada correspondente.
Eu tenho duas perguntas:
-
É possível fazer isso usando SOM no MATLAB? de AFAIK SOM são para agrupamento visual. Mas eu preciso saber a classe real de cada grupo para que eu possa mais tarde rotular meus dados de teste através do cálculo que agrupam a que pertence.
-
Você tem uma solução melhor?
Solução
Self-Organizing Map (SOM) é um método de agrupamento considerado como uma variação sem supervisão do Redes Neurais artificiais (RNA) . Ele usa aprendizagem competitiva técnicas para treinar a rede (nós competem entre si para mostrar a ativação mais forte para uma determinada data)
Você pode pensar SOM como se ele consiste em uma grade de nós interconectados (forma quadrada, hexagonal, ..), onde cada nó é um vetor N-dim de pesos (mesmo tamanho dimensão, como os pontos de dados que queremos cluster).
A idéia é simples; dado um vetor como entrada para SOM, encontramos o nó armário para que, em seguida, atualizar seus pesos e os pesos dos nodos vizinhos para que eles se aproximam a do vetor de entrada (daí o nome auto-organização ). Este processo é repetido para todos os dados de entrada.
Os aglomerados formados são implicitamente definida pela forma como os nós organizar-se e formar um grupo de nodos com pesos semelhantes. Eles podem ser facilmente visto visualmente.
SOM estão em uma maneira similar aos algoritmo K-means mas diferentes em que não impomos um número fixo de clusters, em vez disso, especificar o número e forma de nós na grade que nós queremos que ele se adaptar aos nossos dados.
Basicamente, quando você tem um SOM treinado, e que pretende classificar um novo vetor de entrada de teste, basta atribuí-lo ao mais próximo (distância como uma medida de similaridade) nó no grid ( Melhor Matching Unit BMU), e dar como previsão da classe [maioria] dos vectores que pertencem a esse nó BMU.
Para MATLAB, você pode encontrar uma série de caixas de ferramentas que implementam SOM:
- Rede Neural Toolbox de MathWorks pode ser utilizado para agrupamento usando SOM (ver a
nctool
ferramenta de agrupamento). - Também vale a pena conferir é o SOM Toolbox