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

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

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

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

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

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

    nnstart
    

  2. Нажмите приложение Clustering, чтобы открыть Приложение Кластеризации Нейронной сети. (Можно также использовать команду nctool.)

  3. Нажать Далее. Окно Select Data появляется.

  4. Нажмите Load Example Data Set. Окно Clustering Data Set Chooser появляется.

  5. В этом окне выберите Simple Clusters и нажмите Import. Вы возвращаетесь к окну Select Data.

  6. Нажмите Далее, чтобы продолжиться к окну Network Size, показанному в следующем рисунке.

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

  7. Нажать Далее. Окно Train Network появляется.

  8. Нажмите Train.

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

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

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

  10. Можно также визуализировать SOM путем отображения плоскостей веса (также называемый плоскостями компонента). Нажмите SOM Weight Planes в Приложении Кластеризации Нейронной сети.

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

  11. В Приложении Кластеризации Нейронной сети нажмите Далее, чтобы оценить сеть.

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

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

  12. Когда вы удовлетворены производительностью сети, нажимаете Далее.

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

  14. Используйте кнопки на этом экране, чтобы сохранить ваши результаты.

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

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

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

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

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

  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, кажется, кластеризировала цветы в две отличных группы.

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

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

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

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