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

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

Особенности, извлеченные из каждого изображения:

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

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

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

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

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

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

  2. Есть ли у вас лучшее решение?


person tguclu    schedule 06.11.2009    source источник
comment
Почему вам нужно ровно 88 кластеров? Что такое СОМ? В чем ваша проблема - это определение углов между частями тела по изображению или это алгоритм кластеризации?   -  person Richie Cotton    schedule 06.11.2009


Ответы (1)


Самоорганизующаяся карта (SOM) - это метод кластеризации, рассматриваемый как неконтролируемый вариант Искусственная нейронная сеть (ИНС). Он использует методы конкурентного обучения для обучения сети (узлы соревнуются между собой, чтобы продемонстрировать наиболее сильную активацию заданных данных).

www.lohninger.com/helpcsuite/kohonen_network _-_ background_information.htm

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

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

plotsompos

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

plotsomnd

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

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

plotsomhits

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

person Amro    schedule 07.11.2009