Еще одним отличным приложением для нейронных сетей является кластеризация данных. Этот процесс включает группирование данных по подобию. Например, можно выполнить следующие действия:
Сегментация рынка путем группирования людей в соответствии с их моделями покупки
Интеллектуальный анализ данных путем разделения данных на связанные подмножества
Биоинформатический анализ путем группирования генов со связанными паттернами экспрессии
Предположим, что вы хотите сгруппировать типы цветов в соответствии с длиной лепестка, шириной лепестка, длиной чашелистика и шириной чашелистика. Имеется 150 примеров, для которых имеются эти четыре измерения.
Как и в случае функциональной подгонки и распознавания образов, существует два способа решения этой проблемы:
Используйте nctool GUI, как описано в разделе Использование приложения кластеризации нейронных сетей.
Используйте решение командной строки, как описано в разделе Использование функций командной строки.
Чтобы определить проблему кластеризации, просто упорядочьте Q входных векторов для кластеризации в виде столбцов во входной матрице (подробное описание форматирования данных для статических данных и данных временных рядов см. в разделе «Структуры данных»). Например, можно сгруппировать этот набор из 10 двухэлементных векторов:
inputs = [7 0 6 2 6 5 6 1 0 1; 6 2 5 0 7 5 5 1 2 2]
В следующем разделе показано, как обучить сеть с помощью nctool ГРАФИЧЕСКИЙ ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ.
Откройте приложение Neural Network Clustering с помощью nctool.
nctool

Нажмите кнопку Далее. Появится окно Выбор данных (Select Data).

Щелкните Загрузить (Load) Пример (Example) Набор данных (Data Set). Откроется окно Выбор набора данных кластеризации (Clustering Data Set Chooser).

В этом окне выберите Простые кластеры и нажмите кнопку Импорт. Вернитесь к окну Выбор данных.
Нажмите Next для перехода к окну Network Size, показанному на следующем рисунке.
Для проблем кластеризации наиболее часто используемой сетью является самоорганизующаяся карта функций (SOM), поскольку после обучения сети существует множество инструментов визуализации, которые можно использовать для анализа результирующих кластеров. Эта сеть имеет один слой, с нейронами, организованными в сетку. (Дополнительные сведения о SOM см. в разделе «Самоорганизующиеся карты элементов».) При создании сети указывается количество строк и столбцов в сетке. Здесь количество строк и столбцов устанавливается равным 10. Общее количество нейронов - 100. При необходимости можно изменить этот номер в другом прогоне.

Нажмите кнопку Далее. Появится окно Train Network (Сеть поездов).

Щелкните Поезд (Train).

Обучение проходит для максимального количества эпох, которое составляет 200.
Для тренировки SOM весовой вектор, связанный с каждым нейроном, перемещается, чтобы стать центром кластера входных векторов. Кроме того, нейроны, которые соседствуют друг с другом в топологии, также должны перемещаться близко друг к другу во входном пространстве, поэтому возможно визуализировать пространство высокомерных входов в двух измерениях сетевой топологии. Изучите некоторые инструменты визуализации для SOM. На панели Графики (Plots) щелкните Образец совпадений SOM (SOM Sample Hits).

Топология SOM по умолчанию - шестиугольная. На этом рисунке показаны местоположения нейронов в топологии и указано, сколько обучающих данных связано с каждым из нейронов (центров кластеров). Топология представляет собой сетку 10 на 10, поэтому существует 100 нейронов. Максимальное количество попаданий, связанных с любым нейроном, составляет 31. Таким образом, в этом кластере имеется 31 входной вектор.
Можно также визуализировать SOM, отображая весовые плоскости (также называемые плоскостями компонентов). Щелкните SOM Weight Planes в приложении Neural Network Clustering App.

На этом рисунке показана весовая плоскость для каждого элемента входного вектора (в данном случае два). Они представляют собой визуализации весов, которые соединяют каждый вход с каждым из нейронов. (Более темные цвета представляют большие веса.) Если шаблоны соединений двух входов были очень похожи, можно предположить, что входы сильно коррелированы. В этом случае вход 1 имеет соединения, которые сильно отличаются от соединений входа 2.
В приложении Neural Network Clustering App нажмите кнопку Далее, чтобы оценить сеть.

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

Используйте кнопки на этом экране для сохранения результатов.

Можно щелкнуть Простой сценарий (Simple Script) или Расширенный сценарий (Advanced Script), чтобы создать код MATLAB ®, который можно использовать для воспроизведения всех предыдущих шагов из командной строки. Создание кода MATLAB может быть полезно, если вы хотите узнать, как использовать функциональность командной строки панели инструментов для настройки процесса обучения. В разделе Использование функций командной строки более подробно рассматриваются созданные сценарии.
Можно также сохранить сеть как net в рабочей области. На нем можно выполнить дополнительные тесты или поставить его для работы на новых входах.
После создания сценариев и сохранения результатов нажмите кнопку Готово.
Самый простой способ научиться использовать функции командной строки панели инструментов - это создавать сценарии из GUI, а затем изменять их для настройки сетевого обучения. В качестве примера рассмотрим простой сценарий, который был создан на этапе 14 предыдущего раздела.
% Solve a Clustering Problem with a Self-Organizing Map % Script generated by NCTOOL % % This script assumes these variables are defined: % % simpleclusterInputs - input data. inputs = simpleclusterInputs; % Create a Self-Organizing Map dimension1 = 10; dimension2 = 10; net = selforgmap([dimension1 dimension2]); % Train the Network [net,tr] = train(net,inputs); % Test the Network outputs = net(inputs); % View the Network view(net) % Plots % Uncomment these lines to enable various plots. % figure, plotsomtop(net) % figure, plotsomnc(net) % figure, plotsomnd(net) % figure, plotsomplanes(net) % figure, plotsomhits(net,inputs) % figure, plotsompos(net,inputs)
Можно сохранить сценарий, а затем запустить его из командной строки для воспроизведения результатов предыдущего сеанса графического интерфейса пользователя. Можно также отредактировать сценарий для настройки процесса обучения. В этом случае давайте выполним каждый из шагов сценария.
Сценарий предполагает, что входные векторы уже загружены в рабочую область. Для отображения операций командной строки можно использовать набор данных, отличный от набора, используемого для операции графического интерфейса пользователя. В качестве примера используйте набор цветочных данных. Набор данных радужки состоит из 150 четырехэлементных входных векторов.
load iris_dataset
inputs = irisInputs;
Создание сети. В этом примере используется самоорганизующаяся карта (SOM). Эта сеть имеет один слой, с нейронами, организованными в сетку. (Дополнительные сведения см. в разделе «Самоорганизующиеся карты элементов».) При создании сети с selforgmap, количество строк и столбцов в сетке:
dimension1 = 10; dimension2 = 10; net = selforgmap([dimension1 dimension2]);
Обучение сети. Сеть SOM использует алгоритм SOM пакета по умолчанию для обучения.
[net,tr] = train(net,inputs);
Во время обучения открывается окно обучения, в котором отображается ход обучения. Чтобы прервать обучение в любой момент, щелкните Остановить обучение.

Протестируйте сеть. После обучения сети ее можно использовать для вычисления сетевых выходов.
outputs = net(inputs);
Просмотрите схему сети.
view(net)

Для тренировки SOM весовой вектор, связанный с каждым нейроном, перемещается, чтобы стать центром кластера входных векторов. Кроме того, нейроны, которые соседствуют друг с другом в топологии, также должны перемещаться близко друг к другу во входном пространстве, поэтому возможно визуализировать пространство высокомерных входов в двух измерениях сетевой топологии. Топология SOM по умолчанию - шестиугольная; для его просмотра введите следующие команды.
figure, plotsomtop(net)

На этой фигуре каждый из шестиугольников представляет собой нейрон. Сетка 10 на 10, так что всего в этой сети 100 нейронов. В каждом входном векторе четыре элемента, поэтому входное пространство является четырёхмерным. Весовые векторы (центры кластеров) попадают в это пространство.
Поскольку этот SOM имеет двухмерную топологию, можно визуализировать в двух измерениях взаимосвязи между четырехмерными центрами кластера. Одним из инструментов визуализации для SOM является матрица весовых расстояний (также называемая U-матрицей).
Для просмотра U-матрицы выберите в учебном окне SOM Neighbor Distances.
На этой фигуре синие шестиугольники представляют нейроны. Красные линии соединяют соседние нейроны. Цвета в областях, содержащих красные линии, указывают расстояния между нейронами. Более темные цвета представляют большие расстояния, а более светлые - меньшие расстояния. Полоса тёмных сегментов пересекает нижнюю центральную область с верхней правой областью. Сеть SOM, похоже, сгруппировала цветы в две отдельные группы.

Чтобы получить больше опыта в операциях командной строки, попробуйте выполнить следующие задачи:
Во время обучения откройте окно графика (например, график положения веса SOM) и посмотрите, как он анимируется.
Печать из командной строки с такими функциями, как plotsomhits, plotsomnc, plotsomnd, plotsomplanes, plotsompos, и plotsomtop. (Дополнительные сведения об использовании этих функций см. на справочных страницах.)
Кроме того, дополнительные параметры см. в расширенном сценарии при обучении в командной строке.