Вопрос

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

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

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

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

plotsompos

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

plotsomnd

СОМ в некотором роде похожи на Алгоритм K-средних но отличается тем, что мы не вводим фиксированное количество кластеров, вместо этого мы указываем количество и форму узлов в сетке, которые мы хотим, чтобы она адаптировала к нашим данным.

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

plotsomhits

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top