MATLAB: кластеризация Самоорганизующейся карты (SOM)

Я пытаюсь кластеризировать некоторые изображения в зависимости от углов между частями тела.

Функции, извлеченные из каждого изображения:

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

Поэтому входные данные являются матрицей размера 1057x10, где 1057 обозначает количество изображений, и 10 обозначает углы частей тела с туловищем. Так же набор тестов 821x10 матрица.

Я хочу, чтобы все строки во входных данных кластеризировались с 88 кластерами. Затем я буду использовать эти кластеры для нахождения, в какие кластеры TestData падает?

В предыдущей работе я использовал кластеризацию K-средств, которая очень проста. Мы просто спрашиваем K-средства кластеризировать данные в 88 кластеров. И реализуйте другой метод, который вычисляет расстояние между каждой строкой в данных тестирования и центрами каждого кластера, затем выберите самые маленькие значения. Это - кластер соответствующей строки входных данных.

У меня есть два вопроса:

  1. Действительно ли возможно сделать это использование SOM в MATLAB? AFAIK SOM для визуальной кластеризации. Но я должен знать фактический класс каждого кластера так, чтобы я мог позже маркировать свои данные тестирования путем вычисления, какому кластеру это принадлежит.

  2. У Вас есть лучшее решение?

9
задан Cœur 8 January 2019 в 12:56
поделиться

1 ответ

Self-Organizing Map (SOM) is a clustering method considered as an unsupervised variation of the Artificial Neural Network (ANN). It uses competitive learning techniques to train the network (nodes compete among themselves to display the strongest activation to a given data)

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

You can think of SOM as if it consists of a grid of interconnected nodes (square shape, hexagonal, ..), where each node is an N-dim vector of weights (same dimension size as the data points we want to cluster).

The idea is simple; given a vector as input to SOM, we find the node closet to it, then update its weights and the weights of the neighboring nodes so that they approach that of the input vector (hence the name self-organizing). This process is repeated for all input data.

plotsompos

The clusters formed are implicitly defined by how the nodes organize themselves and form a group of nodes with similar weights. They can be easily seen visually.

plotsomnd

SOM are in a way similar to the K-Means algorithm but different in that we don't impose a fixed number of clusters, instead we specify the number and shape of nodes in the grid that we want it to adapt to our data.

Basically when you have a trained SOM, and you want to classify a new test input vector, you simply assign it to the nearest (distance as a similarity measure) node on the grid (Best Matching Unit BMU), and give as prediction the [majority] class of the vectors belonging to that BMU node.

plotsomhits

For MATLAB, you can find a number of toolboxes that implement SOM:

16
ответ дан 4 December 2019 в 13:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: