Решение задачи общей нелинейной регрессии в системе statistica Neural Networks
http://www.statsoft.ru/statportal/tabID__32/MId__141/ModeID__0/PageID__160/DesktopDefault.aspx
Постановка задачи
Рассматривается реальный физический процесс, который, достаточно хорошо описывается пятью переменными в виде z = f (x,y, factor1, factor2), где
z - зависимая переменная, показатель выхода процесса; x - первая непрерывная независимая переменная; y - вторая непрерывная независимая переменная; factor1 - первый независимый фактор, принимающий всего два значения m и s; factor2 - второй независимый фактор, принимающий всего два значения l и d.
За историю наблюдения за процессом накопился массив данных, которые сохранены в таблице системы STATISTICA. - Рис.1.
Рис.1. Таблица исходных данных о процессе.
Цельисследования - построение математической модели физического процесса на основе исходных данных, которая по заданной четверке значений (x, y, factor1, factor2) выдавала бы отклик z с точностью не хуже 5%.
Нейросетевые алгоритмы хороши, когда:
зависимость между переменными есть;
зависимость определенно нелинейная;
о явном виде зависимости сказать что-либо сложно,
Универсальных правил выбора топологиинейронной сети для решения той или иной задачинет.
Теорема Колмогорова о полноте утверждает, что нейронная сеть способна воспроизвести любую непрерывную функцию.
В 1988 году обобщили теорему Колмогорова и показали, что:
любая непрерывная функция может быть аппроксимирована трехслойной нейронной сетью с одним скрытым слоемиалгоритмом обратного распространения ошибкис любой степенью точности.
Поиск нужной конфигурации сети:
в Модуле Neural NetworksсистемыSTATISTICA
инструмент “Intelligent Problem Solver”
Запуск модуля Neural Networks:
воспользуемся одноименной командой
основное меню системы STATISTICA - Statistics.
Команда Neural Networks
вызов стартовой панели модуля STATISTICA Neural Networks (SNN).
Разделы.
Раздел Problem Types.
Рис.3. Стартовая панель модуля SNN.
Во вкладке Quick - Быстрыйдоступны три, наиболее часто используемые опции.
В разделе Problem Type - Класс задач– выбрать класс задач.
Построение многомернойзависимости– это построениемногомерной регрессии=>
Класс задачследует указатьRegression - Регрессия.
доступны классы задач:
Regression - Регрессия
Classification – Классификация
Time series - Прогнозирование временных рядов
Cluster analysis - Кластерный анализ.
Указать переменные для проведения Анализа:
кнопка Variables =>
появляется диалоговое окно Select input (independent), output (dependent) and selector variables =- Укажите входные (независимые), выходные (зависимые) и группирующие переменные.
Задать три списка переменных:
Continuous outputs - Непрерывные выходящие, в нашем случае, - это переменная z.
Continuous inputs - Непрерывные входящие, в нашем примере, - это переменные x и y.
Categorical inputs - Категориальные входящие, у нас это переменные Factor1 и Factor2.
Раздел Subset variable - Разбиение на подмножества:
необязателен для заполнения
служит для выбора переменной, в которой содержатся коды для разбиения данных на:
обучающее
контрольное
тестовое множества.
Рис.4. Выбор переменных для Анализа.
Раздел Select analysis - Выбор анализ:
доступны 2 опции:
Intelligent Problem Solver- нам требуется, устанавливается по умолчанию
Custom Network Designer
Нажмем кнопку OK.
Появляется окно настройки процедурыIntelligent Problem Solver:
окно содержит большое количество опций, распределенных в различных вкладках
нам понадобится вкладка Quick - Быстрыйи её разделOptimization Time - Время оптимизации(содержит группу опций, отвечающих за время исполнения алгоритма поиска нейронной сети)
2 возможности:
1)задать количество сетей, которые необходимо протестировать (подходят ли они для решения задачи);
вручную задать время выполнения алгоритма. Для этого необходимо воспользоваться опцией Hours/Minutes - Часы/Минуты.
Воспользуемся 1-й опцией. В разделе Optimization Time - Время оптимизациив разделеNetworks tested - Количество тестируемых сетейукажем 100.
Рис.5. Задание количества тестируемых сетей.
Для запуска процедуры поиска сетей нажмем ОК.
Состояние алгоритма поиска отображается в диалоговом окне IPS Training In Progress - Процесс поиска сети, см. Рис.6.
Рис.6. Процесс поиска сети.
информация о времени исполнения алгоритма
о рассмотренных нейронных сетях
Цель алгоритма поиска:
перебор ряда нейросетевых конфигураций
выбор наилучшей с точки зрения:
минимума ошибки на выходе сети и
максимума её производительности
Сети необходимо:
Обучать
рассчитывать их ошибки и производительности
эти показатели сравнивать
Каждая нейронная конфигурация описывается строкой в информационном поле диалогового окна. Показатели:
Profile - Тип сети
Train (Select, Test) Performance - Производительность сети на обучающем (контрольном, тестовом) множестве
rain Error - Ошибка обучения.
Раздел Profile - Тип сетиописывает:
топология нейронной сети = её класс (персептрон, сеть RBF и т.д.)
количество входных и выходных переменных
количество скрытых слоев
число элементов на каждом скрытом слое.
Алгоритм поиска сетиразбивает (по умолчанию) все множество наблюдений на:
Training – Обучающее
Selection – Контрольное:
Test - Тестовое
Training – Обучающее - обучение сети = изменение весовых коэф. каждого из нейронов пропорционально ошибке на выходе
Selection – Контрольное:
контрольное множество в процедуре изменения весов нейронов не участвует
служит для кросс – проверки - контроля способности сети к обобщению данных, на которых она не обучалась
На каждом шаге алгоритма обучения:
рассчитывается ошибка для всего набора наблюдений из контрольного множества
сравнивается с ошибкой на обучающем множестве
Как правило, ошибка на контрольном множестве превышает ошибку на обучающем множестве, так как:
алгоритм обучения нацелен на минимизацию ошибки на выходе сети
Если наблюдается рост ошибки на контрольном множестве и её уменьшениена обучающем множестве:
сеть "зазубрила" предъявленные ей наблюдения
не способна к обобщению
такое состояние называется переобучением- переобучения надо избегать.
Алгоритм Intelligent Problem Solver:
самостоятельно отслеживает переобучение
при завершении обучения возвращает сеть в наилучшее состояние (Retain Best Network - Восстановить наилучшую сеть).
Test - Тестовоемножества:
не участвует в обучении вообще
после завершения обучения исп-ся для:
расчета производительности полученной сети
её ошибки на данных, о которых "ей вообще ничего неизвестно".
Хорошая сеть:
ошибка одинаково мала на всех трех подмножествах.
Производительность сети в задаче регрессии– это:
отношениестандартного отклонения ошибок сетикстандартному отклонению исходных данных (SD-ratio).
Эмпирическое правилогласит, что еслиSD-ratioне превышает значения 0.2, сеть подобрана хорошо.
Производительность рассчитывается для каждого из трех подмножеств
разброс значений производительности на каждом из подмножеств д.б. небольшим.
Рис.7. Диалоговое окно результатов поиска сети.
Итог:
отобрана сеть - трехслойный персептрон
8 нейронов на скрытом слое
производительностью 0.07.
Выбор нужной сети из списка, предлагаемого Intelligent Problem Solver:
окно Results - Результаты
кнопка Select Models - Выбрать модели
В появившемся диалоговом окне подсветить нужную нейронную сеть
нажать ОК
Посмотреть иллюстрацию выбранной сети:
Вкладка Advanced - Дополнительнодиалогового окна результатов.
кнопка Network Illustration
Рис.8. Иллюстрация выбранной нейронной сети.
Построить графикзависимости наблюдаемых значений выходной переменной z от предсказанных значений – отражает качество работы нейронной сети:
вкладка Plots – Графики
кнопка Graph X versus Y - График X от Y
предварительно указав в качестве X - axis - Observed - Наблюдаемые, Y - axis - Predicted - Предсказанные.
Рис.9. График зависимости предсказанных значений Z от наблюдаемых Z.
Для хорошей модели:
точки этого графика должны располагаться как можно ближе к прямой, лежащей под углом 45 градусов к осям координат.
На первый взгляд, так оно и происходит.
Рассмотрим численные результаты:
Вкладка Predictions - Прогнозыдиалогового окна результатов
кнопка Predictions - Прогнозыдля просмотра результатов работы нейронной сети на всем наборе данных
=>(см. Рис.10) - не все так хорошо, как хотелось бы:
Рис.10. Таблица результатов прогона всего набора данных через нейронную сеть.
нулевые значения z - ошибки колоссальны
значения z, не превышающие 100 - результаты сильно противоречивы
большие значения z порядка 1000 – рез-ты хорошие
Итог:
требуемой погрешности 5% на всех данных достичь не удалось.
Причины заблуждения:
Значения переменной z изменяются от 0 до 10000
При расчете статистик производительности основную роль сыграли именно "большие" данные
кричащая ошибка в области малых чисел была утеряна в результате усреднения всех ошибок.
Более точно посмотреть график:
воспользуемся опцией Zoom – Увеличить -расположена на графич. панели инструментов (панель видна при активном графическом документеSTATISTICA) в области малых значений z на графике (см. Рис.11).
Рис.11. График зависимости предсказанных значений Z от наблюдаемых Z в области малых значений Z.
Отчетливо видно отсутствие какой-либо зависимостимежду наблюдаемыми и предсказанными значениями.
имеются основания полагать, что функция изучаемого физического процесса не является непрерывной =>
получили противоречащий теореме Колмогорова о полноте результат
в некоторых областях пространства независимых переменных функция процесса ведет себя непрерывно (область больших значения z)
желательно такие области локализовать
Для этого осуществим разбиение данных на однородные группы, или проведем кластеризацию.