Кластеризация данных является другим превосходным приложением для нейронных сетей. Этот процесс включает группирующиеся данные подобием. Например, вы можете выполнить:
Сегментация рынка путем группировки людей согласно их шаблонам покупки
Анализ данных путем разделения данных в связанные подмножества
Биоинформатический анализ путем группировки генов со связанным характером экспрессии
Предположим, что вы хотите кластеризировать цветочные типы согласно лепестковой длине, лепестковой ширине, длине чашелистика и ширине чашелистика. У вас есть 150 случаев в качестве примера, для которых у вас есть эти четыре измерения.
Как с функциональным подбором кривой и распознаванием образов, существует два способа решить эту проблему:
Используйте графический интерфейс пользователя nctool
, как описано в Использовании Приложения Кластеризации Нейронной сети.
Используйте решение командной строки, как описано в Использовании Функций Командной строки.
Чтобы задать кластеризирующуюся проблему, просто расположите входные векторы Q, которые будут кластеризироваться как столбцы во входной матрице (см. “Структуры данных” для подробного описания форматирования данных для статического и данных временных рядов). Например, вы можете хотеть кластеризировать этот набор 10 двухэлементных векторов:
inputs = [7 0 6 2 6 5 6 1 0 1; 6 2 5 0 7 5 5 1 2 2]
Следующий раздел показывает, как обучить сеть с помощью графический интерфейса пользователя nctool
.
В случае необходимости откройтесь, Нейронная сеть Запускают графический интерфейс пользователя с этой команды:
nnstart
Нажмите приложение Clustering, чтобы открыть Приложение Кластеризации Нейронной сети. (Можно также использовать команду nctool
.)
Нажать Далее. Окно Select Data появляется.
Нажмите Load Example Data Set. Окно Clustering Data Set Chooser появляется.
В этом окне выберите Simple Clusters и нажмите Import. Вы возвращаетесь к окну Select Data.
Нажмите Далее, чтобы продолжиться к окну Network Size, показанному в следующей фигуре.
Для кластеризации проблем самоорганизующаяся карта функции (SOM) является обычно используемой сетью, потому что после того, как сеть была обучена, существует много инструментов визуализации, которые могут использоваться, чтобы анализировать получившиеся кластеры. Эта сеть имеет один слой с нейронами, организованными в сетке. (Для получения дополнительной информации о SOM см. “Самоорганизующиеся Карты Функции”.) При создании сети вы задаете количества строк и столбцов в сетке. Здесь, номер строк и столбцов определяется к 10
. Общее количество нейронов равняется 100. Можно изменить этот номер в другом выполнении, если вы хотите.
Нажать Далее. Окно Train Network появляется.
Нажмите Train.
Обучение запускается для максимального количества эпох, которое является 200.
Для обучения SOM вектор веса, сопоставленный с каждым нейроном, перемещается, чтобы стать центром кластера входных векторов. Кроме того, нейроны, которые смежны друг с другом в топологии, должны также переместиться друг близко к другу во входной пробел, поэтому возможно визуализировать высоко-размерный входной пробел в двух размерностях сетевой топологии. Исследуйте некоторые инструменты визуализации для SOM. Под панелью Графиков нажмите SOM Sample Hits.
Топология по умолчанию SOM является шестиугольной. Эти данные показывают местоположения нейрона в топологии и указывают, сколько из данных тренировки сопоставлено с каждым из нейронов (кластерные центры). Топология 10 10 сетка, таким образом, существует 100 нейронов. Максимальное количество хитов, сопоставленных с любым нейроном, равняется 31. Таким образом в том кластере существует 31 входной вектор.
Можно также визуализировать SOM путем отображения плоскостей веса (также называемый плоскостями компонента). Нажмите SOM Weight Planes в Приложении Кластеризации Нейронной сети.
Эти данные показывают плоскость веса для каждого элемента входного вектора (два, в этом случае). Они - визуализация весов, которые соединяют каждый вход с каждым из нейронов. (Более темные цвета представляют большие веса.), Если шаблоны связи двух входных параметров были очень похожи, можно принять, что входные параметры высоко коррелируются. В этом случае введите 1, имеет связи, которые очень отличаются, чем те из входа 2.
В Приложении Кластеризации Нейронной сети нажмите Далее, чтобы оценить сеть.
В этой точке можно протестировать сеть против новых данных.
Если вы неудовлетворены производительностью сети на исходных или новых данных, можно увеличить число нейронов, или возможно получить больший обучающий набор данных.
Когда вы удовлетворены производительностью сети, нажимаете Далее.
Используйте эту панель, чтобы сгенерировать функцию MATLAB или схему Simulink для симуляции вашей нейронной сети. Можно использовать сгенерированный код или схематически изобразить, чтобы лучше понять, как нейронная сеть вычисляет выходные параметры из входных параметров, или разверните сеть с инструментами MATLAB Compiler и другим MATLAB и инструментами генерации кода Simulink.
Используйте кнопки на этом экране, чтобы сохранить ваши результаты.
Можно нажать Simple Script или Advanced Script, чтобы создать код MATLAB®, который может использоваться, чтобы воспроизвести все предыдущие шаги от командной строки. Создание кода MATLAB может быть полезным, если вы хотите изучить, как использовать функциональность командной строки тулбокса, чтобы настроить учебный процесс. В Использовании Функций Командной строки вы исследуете сгенерированные скрипты более подробно.
Можно также сохранить сеть как net
в рабочей области. Можно выполнить дополнительные тесты на нем или поместить его, чтобы работать над новыми входными параметрами.
Когда вы сгенерируете скрипты и сохраненный ваши результаты, нажмите 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)
Можно сохранить скрипт, и затем запустить его из командной строки, чтобы воспроизвести результаты предыдущего сеанса графический интерфейса пользователя. Можно также отредактировать скрипт, чтобы настроить учебный процесс. В этом случае давайте выполним каждый из шагов в скрипте.
Скрипт принимает, что входные векторы уже загружаются в рабочую область. Чтобы показать операции командной строки, можно использовать различный набор данных, чем вы использовали для операции GUI. Используйте цветочный набор данных в качестве примера. Ирисовый набор данных состоит из 150 четырехэлементных входных векторов.
load iris_dataset
inputs = irisInputs;
Создайте сеть. В данном примере вы используете самоорганизующуюся карту (SOM). Эта сеть имеет один слой с нейронами, организованными в сетке. (Для получения дополнительной информации см. “Самоорганизующиеся Карты Функции”.) При создании сети с selforgmap
вы задаете количество строк и столбцов в сетке:
dimension1 = 10; dimension2 = 10; net = selforgmap([dimension1 dimension2]);
Обучите сеть. Сеть SOM использует пакетный алгоритм SOM по умолчанию для обучения.
[net,tr] = train(net,inputs);
Во время обучения учебное окно открывает и отображает учебный прогресс. Чтобы прервать обучение в любой точке, нажмите Stop Training.
Протестируйте сеть. После того, как сеть была обучена, можно использовать ее, чтобы вычислить сетевые выходные параметры.
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
. (Для получения дополнительной информации об использовании этих функций смотрите их страницы с описанием.)
Кроме того, см. усовершенствованный скрипт для большего количества опций, когда обучение из командной строки.