2009-11-06 5 views
9

Я пытаюсь скопировать некоторые изображения в зависимости от углов между частями тела.MATLAB: помощь, необходимая для кластеризации самоорганизующейся карты (SOM)

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

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

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

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

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

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

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

(2) У вас есть лучшее решение?

+1

Почему вы хотите именно 88 кластеров? Что такое ЗВОЛ? Какова ваша проблема - найти углы между частями тела от изображения или это алгоритм кластеризации? –

ответ

16

Self-Organizing Map (SOM) - метод кластеризации, рассматриваемый как неконтролируемый вариант Artificial Neural Network (ANN). Он использует конкурентных методы обучения для обучения сети (узлы конкурируют между собой, чтобы показать самую сильную активацию данных данных)

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

Вы можете думать о СДЛ, как будто он состоит из сетки взаимосвязанных узлов (квадратная форма, гексагональная, ...), где каждый узел представляет собой вектор N-мерных весов (такой же размер, как и те точки данных, которые мы хотим скопировать).

Идея проста; заданный вектором в качестве входа в SOM, мы найдем узел closet, затем обновим его веса и веса соседних узлов, чтобы они приблизились к весам входного вектора (отсюда самоорганизация имени). Этот процесс повторяется для всех входных данных.

plotsompos

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

plotsomnd

SOM находятся в аналогии с K-Means algorithm, но отличается тем, что мы не навязываем фиксированное количество кластеров, а не мы определяем количество и форму узлов в сетке, что мы хотим его адаптироваться к нашим данным.

В основном, когда у вас есть обученный SOM, и вы хотите, чтобы классифицировать новый тест входного вектора, вы просто назначить его на ближайший (расстояние в качестве меры подобия) узла на сетке (Best Matching Unit БМУ), и дать в качестве предсказания класс [большинства] векторов, принадлежащих этому узлу BMU.

plotsomhits

Для MATLAB, вы можете найти ряд инструментариев, которые реализуют SOM:

Смежные вопросы