Кластерные данные с самоорганизующейся картой

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

  • Сегментация рынка путем группировки людей согласно их шаблонам покупки

  • Анализ данных путем разделения данных в связанные подмножества

  • Биоинформатический анализ путем группировки генов со связанным характером экспрессии

Предположим, что вы хотите кластеризировать цветочные типы согласно лепестковой длине, лепестковой ширине, длине чашелистика и ширине чашелистика. У вас есть 150 случаев в качестве примера, для которых у вас есть эти четыре измерения.

Как с функциональным подбором кривой и распознаванием образов, существует два способа решить эту задачу:

Обычно лучше запуститься с приложения, и затем использовать приложение, чтобы автоматически сгенерировать скрипты командной строки. Перед использованием любого метода сначала опишите задачу путем выбора набора данных. Каждое из приложений нейронной сети имеет доступ к наборам выборочных данных, которые можно использовать, чтобы экспериментировать с тулбоксом (см. Наборы Выборочных данных для Мелких Нейронных сетей). Если у вас есть определенная задача, которую вы хотите решить, можно загрузить собственные данные в рабочую область. Следующий раздел описывает формат данных.

Постановка задачи

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

predictors = [7 0 6 2 6 5 6 1 0 1; 6 2 5 0 7 5 5 1 2 2]

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

Кластерные данные Используя приложение Neural Net Clustering

В этом примере показано, как обучить мелкую нейронную сеть к кластерным данным с помощью приложения Neural Net Clustering.

Откройте приложение Neural Net Clustering с помощью nctool.

nctool

Выберите Data

Приложение Neural Net Clustering имеет данные в качестве примера, чтобы помочь вам начать обучать нейронную сеть.

Чтобы импортировать ирисовые цветочные данные о кластеризации в качестве примера, выберите Import> Import Iris Flowers Data Set. Если вы импортируете свои собственные данные из файла или рабочей области, необходимо задать предикторы и если наблюдения находятся в строках или столбцах.

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

Создайте сеть

Для кластеризации проблем самоорганизующаяся карта функции (SOM) является обычно используемой сетью. Эта сеть имеет один слой с нейронами, организованными в сетке. Самоорганизующиеся карты учатся кластеризировать данные на основе подобия. Для получения дополнительной информации о SOM смотрите Кластер с Самоорганизующейся Нейронной сетью Карты.

Чтобы создать сеть, задайте размер карты, это соответствует количеству строк и столбцов в сетке. В данном примере установите значение размера Карты к 10, это соответствует сетке с 10 строками и 10 столбцами. Общее количество нейронов равно числу точек в сетке в этом примере, карта имеет 100 нейронов. Вы видите сетевую архитектуру в Сетевой панели.

Обучение сети

Чтобы обучить сеть, нажмите Train. В Учебной панели вы видите процесс обучения. Обучение продолжается, пока одному из критерия остановки не соответствуют. В этом примере продолжается обучение, пока максимальное количество эпох не достигнуто.

Анализ результатов

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

Чтобы построить Демонстрационные Хиты SOM, в разделе Plots, нажимают Sample Hits. Этот рисунок показывает местоположения нейрона в топологии и указывает, сколько из наблюдений сопоставлено с каждым из нейронов (кластерные центры). Топология 10 10 сетка, таким образом, существует 100 нейронов. Максимальное количество хитов, сопоставленных с любым нейроном, равняется 5. Таким образом в том кластере существует 5 входных векторов.

Постройте плоскости веса (также называемый плоскостями компонента). В разделе Plots нажмите Weight Planes. Этот рисунок показывает плоскость веса для каждого элемента входных функций (четыре в этом примере). График показывает веса, которые соединяют каждый вход с каждым из нейронов с более темными цветами, представляющими большие веса. Если шаблоны связи двух функций очень похожи, можно принять, что функции высоко коррелируются.

Если вы недовольны производительностью сети, можно выполнить одно из следующих действий:

  • Обучите сеть снова. Каждое обучение будет иметь различные начальные веса и смещения сети, и может произвести улучшенную сеть после переобучения.

  • Увеличьте число нейронов путем увеличения размера карты.

  • Используйте больший обучающий набор данных.

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

Сгенерируйте код

Выберите Generate Code> Generate Simple Training Script, чтобы создать код MATLAB, чтобы воспроизвести предыдущие шаги от командной строки. Создание кода MATLAB может быть полезным, если вы хотите изучить, как использовать функциональность командной строки тулбокса, чтобы настроить учебный процесс. В Кластерных Данных Используя Функции Командной строки вы исследуете сгенерированные скрипты более подробно.

Сеть экспорта

Можно экспортировать обучивший сеть в рабочую область или Simulink®. Можно также развернуть сеть с инструментами MATLAB Compiler™ и другими инструментами генерации кода MATLAB. Чтобы экспортировать ваш обучивший сеть и результаты, выберите Export Model> Export to Workspace.

Кластерные данные Используя функции командной строки

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

% Solve a Clustering Problem with a Self-Organizing Map
% Script generated by Neural Clustering app
% Created 21-May-2021 10:15:01
%
% This script assumes these variables are defined:
%
%   irisInputs - input data.

x = irisInputs;

% Create a Self-Organizing Map
dimension1 = 10;
dimension2 = 10;
net = selforgmap([dimension1 dimension2]);

% Train the Network
[net,tr] = train(net,x);

% Test the Network
y = net(x);

% 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,x)
%figure, plotsompos(net,x)

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

Выберите Data

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

load iris_dataset

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

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

x = irisInputs;
загрузит ирисовые цветочные предикторы в массив x.

Создайте сеть

Создайте сеть. В данном примере вы используете самоорганизующуюся карту (SOM). Эта сеть имеет один слой с нейронами, организованными в сетке. Для получения дополнительной информации смотрите Кластер с Самоорганизующейся Нейронной сетью Карты. При создании сети с selforgmap, вы задаете количество строк и столбцов в сетке.

dimension1 = 10;
dimension2 = 10;
net = selforgmap([dimension1 dimension2]);

Обучение сети

Обучите сеть. Сеть SOM использует пакетный алгоритм SOM по умолчанию для обучения.

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

Во время обучения учебное окно открывает и отображает прогресс обучения. Чтобы прервать обучение в любой точке, нажмите Stop Training.

Тестирование сети

Протестируйте сеть. После того, как сеть была обучена, можно использовать ее, чтобы вычислить сетевые выходные параметры.

y = net(x);

Сеть представления

Просмотрите сетевой график.

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.

Смотрите также

| | | |

Похожие темы