Диафрагмируйте кластеризацию

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

Проблема: кластерные ирисовые цветы

В этом примере мы пытаемся создать нейронную сеть, что кластеры диафрагмируют цветы в естественные классы, такие, что группируются подобные классы. Каждая ирисовая диафрагма описана четырьмя функциями:

  • Длина чашелистика в cm

  • Ширина чашелистика в cm

  • Лепестковая длина в cm

  • Лепестковая ширина в cm

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

Почему самоорганизующиеся нейронные сети карты?

Самоорганизующиеся карты (SOMs) очень хороши в создании классификаций. Далее, классификации сохраняют топологическую информацию, о которой классы являются самыми похожими на других. Самоорганизующиеся карты могут быть созданы с любым желаемым уровнем детализации. Они особенно хорошо подходят для кластеризации данных во многих размерностях и с и связанными пространствами признаков комплексной формы. Они хорошо подходят для кластерных ирисовых цветов.

Четыре цветочных атрибута будут действовать как входные параметры к SOM, который сопоставит их на 2-мерный слой нейронов.

Подготовка данных

Данные для кластеризации проблем настраиваются для SOM путем организации данных во входную матрицу X.

Каждый i-ый столбец входной матрицы будет иметь четыре элемента, представляющие эти четыре измерения взятый один цветок.

Здесь такой набор данных загружается.

x = iris_dataset;

Мы можем просмотреть размер входных параметров X.

Обратите внимание на то, что X имеет 150 столбцов. Они представляют 150 наборов ирисовых цветочных атрибутов. Это имеет четыре строки для этих четырех измерений.

size(x)
ans =

     4   150

Кластеризация с нейронной сетью

Следующий шаг должен создать нейронную сеть, которая будет учиться кластеризироваться.

selforgmap создает самоорганизующиеся карты для классификации выборок с таким количеством детали как желаемый путем выбора количества нейронов в каждой размерности слоя.

Мы попробуем слой с 2 размерностями 64 нейронов, расположенных в 8x8 шестиугольная сетка для этого примера. В общем случае большая деталь достигается с большим количеством нейронов и другие, размерности допускают моделирование топологии более комплексных пространств признаков.

Входной размер 0, потому что сеть еще не была сконфигурирована, чтобы совпадать с нашими входными данными. Это произойдет, когда сеть будет обучена.

net = selforgmap([8 8]);
view(net)

Теперь сеть готова быть оптимизированной с, обучаются.

Инструмент Обучения Нейронной сети показывает обученную сеть, и алгоритмы раньше обучали его. Это также отображает учебное состояние во время обучения и критериев, которые остановились, обучение будет подсвечено в зеленом.

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

[net,tr] = train(net,x);
nntraintool

nntraintool('close')

Здесь самоорганизующаяся карта используется для расчета векторы класса из каждых из учебных входных параметров. Эти классификации покрывают пространство признаков, заполненное известными цветами, и могут теперь использоваться, чтобы классифицировать новые цветы соответственно. Сетевой выход будет 64x150 матрица, где каждый i-ый столбец представляет j-ый кластер для каждого i-ого входного вектора с 1 в его j-ом элементе.

Функция vec2ind возвращает индекс нейрона с выходом 1 для каждого вектора. Индексы расположатся между 1 и 64 для этих 64 кластеров, представленных этими 64 нейронами.

y = net(x);
cluster_index = vec2ind(y);

plotsomtop строит самоорганизующуюся топологию карт 64 нейронов, расположенных в 8x8 шестиугольная сетка. Каждый нейрон учился представлять различный класс цветка со смежными нейронами, обычно представляющими подобные классы.

plotsomtop(net)

plotsomhits вычисляет классы для каждого цветка и показывает количество цветов в каждом классе. Области нейронов с большими количествами хитов указывают на классы, представляющие подобные очень населенные области пространства признаков. Принимая во внимание, что области с немногими хитами указывают на малонаселенные области пространства признаков.

plotsomhits(net,x)

plotsomnc показывает соседние связи нейрона. Соседи обычно классифицируют подобные выборки.

plotsomnc(net)

plotsomnd показывает, насколько удаленный (в терминах Евклидового расстояния) класс каждого нейрона от его соседей. Связи, которые ярки, указывают на высоко соединенные области входного пространства. В то время как темные связи указывают на классы, представляющие области пространства признаков, которые являются далеко друг от друга с немногими или никакими цветами между ними.

Длинные границы темных связей, разделяющих большие области входного пространства, указывают, что классы по обе стороны от границы представляют цветы совсем другими функциями.

plotsomnd(net)

plotsomplanes показывает плоскость веса для каждой из четырех входных функций. Они - визуализация весов, которые соединяют каждый вход с каждым из этих 64 нейронов в 8x8 шестиугольная сетка. Более темные цвета представляют большие веса. Если два входных параметров имеют подобные плоскости веса (их цветовые градиенты могут быть тем же самым или наоборот), оно указывает, что они высоко коррелируются.

plotsomplanes(net)

Этот пример проиллюстрировал, как спроектировать нейронную сеть, что кластеры диафрагмируют цветы на основе четырех из их характеристик.

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