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

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

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

  • Интеллектуальный анализ данных путем разбиения данных на связанные подмножества

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

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

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

Определение задачи

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

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

В следующем разделе показано, как обучить сеть с помощью nctool Графический интерфейс пользователя.

Использование приложения кластеризации нейронных сетей

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

    nctool

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

  3. Щелкните Загрузка набора данных примера. Появится окно Выбор набора данных кластеризации.

  4. В этом окне выберите «Простые кластеры» и нажмите «Импортировать». Вы вернетесь в окно Select Data.

  5. Нажмите кнопку Далее (Next), чтобы перейти в окно Размер сети (Network Size), показанное на следующем рисунке.

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

  6. Нажмите кнопку Далее. Появится окно Обучить сеть (Train Network).

  7. Нажмите Train.

    Обучение проходит на максимальное количество эпох, которое составляет 200.

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

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

  9. Можно также визуализировать SOM путем отображения весовых плоскостей (также называемых плоскостями компонентов). В приложении Neural Network Clustering App выберите SOM Weight Planes.

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

  10. В приложении Neural Network Clustering App нажмите кнопку Далее, чтобы оценить сеть.

    На данной точке можно протестировать сеть на соответствие новым данным.

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

  11. Когда вы будете удовлетворены эффективностью сети, нажмите кнопку Далее.

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

  13. Чтобы сохранить результаты, используйте кнопки на этом экране.

    • Вы можете нажать Простой скрипт или Расширенный скрипт, чтобы создать MATLAB® код, который может использоваться для воспроизведения всех предыдущих шагов из командной строки. Создание кода MATLAB может быть полезным, если вы хотите узнать, как использовать функциональность командной строки тулбокса для настройки процесса обучения. В разделе Использование функций Command-Line вы исследуете сгенерированные скрипты более подробно.

    • Можно также сохранить сеть следующим net в рабочей области. Вы можете выполнить дополнительные тесты на нем или поставить его на работу с новыми входами.

  14. Когда вы сгенерировали скрипты и сохранили результаты, нажмите Конец.

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

Самый легкий способ научиться использовать функциональность командной строки тулбокса - сгенерировать скрипты из графические интерфейсы пользователя, а затем изменить их, чтобы настроить сетевое обучение. В качестве примера рассмотрим простой скрипт, который был создан на шаге 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)

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

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

    load iris_dataset
    inputs = irisInputs;
    
  2. Создайте сеть. В данном примере используется самоорганизующаяся карта (SOM). Эта сеть имеет один слой с нейронами, организованными в сетку. (Для получения дополнительной информации см. раздел «Самоорганизующиеся карты функций».) При создании сети с selforgmap, вы задаете количество строк и столбцов в сетке:

    dimension1 = 10;
    dimension2 = 10;
    net = selforgmap([dimension1 dimension2]);
    
  3. Обучите сеть. Сеть SOM использует алгоритм пакетной SOM по умолчанию для обучения.

    [net,tr] = train(net,inputs);
    
  4. Во время обучения открывается окно обучения, в котором отображается процесс обучения. Чтобы прервать обучение в любой точке, нажмите Остановить обучение.

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

    outputs = net(inputs);
    
  6. Просмотрите сетевую схему.

    view(net)
    

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

    figure, plotsomtop(net)
    

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

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

  8. Чтобы просмотреть U-матрицу, нажмите SOM Neighbor Distances в окне обучения.

    На этом рисунке синие шестиугольники представляют нейроны. Красные линии соединяют соседние нейроны. Цвета в областях, содержащих красные линии, указывают на расстояния между нейронами. Более темные цвета представляют большие расстояния, а более светлые - меньшие расстояния. Полоса тёмных сегментов пересекает от области нижнего центра к области верхнего правого. Сеть SOM, по-видимому, сгруппировала цветы в две отдельные группы.

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

  • Во время обучения откройте окно plot (например, график положения веса SOM) и посмотрите, как оно анимируется.

  • Постройте график из командной строки с такими функциями, как plotsomhits, plotsomnc, plotsomnd, plotsomplanes, plotsompos, и plotsomtop. (Для получения дополнительной информации об использовании этих функций см. их страницы с описанием.)

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

Для просмотра документации необходимо авторизоваться на сайте