Нейронные сети в пакете statistica. III

Под редакцией В.П. Боровикова

2-е изд., перераб. и доп.

2008 г.

Тираж 1000 экз.

Формат 70x100/16 (170x240 мм)

Исполнение: в мягкой обложке

ISBN 978-5-9912-0015-8

ББК 32.973

УДК 004.8.032.26

Аннотация

Изложены нейросетевые методы анализа данных, основанные на использовании пакета STATISTICA Neural Networks (фирма производитель StatSoft), полностью адаптированного для русского пользователя. Даны основы теории нейронных сетей; большое внимание уделено решению практических задач, всесторонне рассмотрена методология и технология проведения исследований с помощью пакета STATISTICA Neural Networks – мощного инструмента анализа и прогнозирования данных, имеющего широкие применения в бизнесе, промышленности, управлении, финансах. Книга содержит множество примеров анализа данных, практические рекомендации по проведению анализа, прогнозирования, классификации, распознавания образов, управления производственными процессами с помощью нейронных сетей.

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

Предисловие ко второму изданию

Введение. Приглашение в нейронные сети

Глава 1. ОСНОВНЫЕ ПОНЯТИЯ АНАЛИЗА ДАННЫХ

Глава 2. ВВЕДЕНИЕ В ТЕОРИЮ ВЕРОЯТНОСТЕЙ

Глава 3. ВВЕДЕНИЕ В ТЕОРИЮ НЕЙРОННЫХ СЕТЕЙ

Глава 4. ОБЩИЙ ОБЗОР НЕЙРОННЫХ СЕТЕЙ
Параллели из биологии
Базовая искусственная модель
Применение нейронных сетей
Пре- и постпроцессирование
Многослойный персептрон
Радиальная базисная функция
Вероятностная нейронная сеть
Обобщенно-регрессионная нейронная сеть
Линейная сеть
Сеть Кохонена
Задачи классификации
Задачи регрессии
Прогнозирование временных рядов
Отбор переменных и понижение размерности

Глава 5. ПЕРВЫЕ ШАГИ В STATISTICA NEURAL NETWORKS
Начинаем работу
Создание набора данных
Создание новой сети
Создание набора данных и сети
Обучение сети
Запуск нейронной сети
Проведение классификации

Глава 6. ДАЛЬНЕЙШИЕ ВОЗМОЖНОСТИ НЕЙРОННЫХ СЕТЕЙ
Классический пример: Ирисы Фишера
Обучение с кросс-проверкой
Условия остановки
Решение задач регрессии
Радиальные базисные функции
Линейные модели
Сети Кохонена
Вероятностные и обощенно-регрессионные сети
Конструктор сетей
Генетический алгоритм отбора входных данных
Временные ряды

Глава 7. ПРАКТИЧЕСКИЕ СОВЕТЫ ПО РЕШЕНИЮ ЗАДАЧ
Представление данных
Выделение полезных входных переменных.
Понижение размерности
Выбор архитектуры сети
Пользовательские архитектуры сетей
Временные ряды

Глава 8. ПРИМЕРЫ ПРИМЕНЕНИЯ (CASE STUDIES)
Пример 1. Понижение размернотси в геологическом исследование
Пример 2. Распознование образов
Пример 3. Нелинейная классификация двумерных множеств
Пример 4. Сегментация различных образцов топлива по данным лабораторного исследования
Пример 5. Построение модели поведенческого скоринга
Пример 6. Аппроксимация функций
Пример 7. Прогнозирование продаж нефти
Пример 8. Мониторинг и предсказание
температурного режима на установке
Пример 9. Определение достоверности цифровой подписи

Глава 9. КРАТКОЕ РУКОВОДСТВО
Данные
Сети
Обучение сетей
Другие типы сетей
Работа с сетью
Пересылка результатов в систему STATISTICA

Глава 10. КЛАССИЧЕСКИЕ МЕТОДЫ, АЛЬТЕРНАТИВНЫЕ НЕЙРОННЫМ СЕТЯМ
Классический дискриминаннтный анализ в STATISTICA
Классификация
Логит-регрессия
Факторный анализ в STATISTICA

Глава 11. ДОБЫЧА ДАННЫХ В STATISTICA

Приложение 1. Генератор кода

Приложение 2. Интеграция STATISTICA с ERP-системами

Список литературы

Предметный указатель

STATISTICA Automated Neural Networks - единственный в мире нейросетевой программный продукт, полностью переведенный на русский язык!

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

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

В чем преимущества использования ?

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

    Исключительная простота в использовании плюс непревзойденная аналитическая мощность; так, например, не имеющий аналогов инструмент автоматического нейросетевого поиска Автоматизированная нейронная сеть (АНС) проведет пользователя через все этапы создания различных нейронных сетей и выберет наилучшую (в противном случае эта задача решается длительным путем "проб и ошибок" и требует серьезного знания теории);

    Самые современные, оптимизированные и мощные алгоритмы обучения сети (включая методы сопряженных градиентов, алгоритм Левенберга-Марквардта, BFGS, алгоритм Кохонена); полный контроль над всеми параметрами, влияющими на качество сети, такими как функции активации и ошибок, сложность сети;

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

    Богатые графические и статистические возможности, которые облегчают интерактивный исследовательский анализ;

    Полная интеграция с системой STATISTICA ; все результаты, графики, отчеты и т. д. могут быть в дальнейшем модифицированы с помощью мощных графических и аналитических инструментов STATISTICA (например, для проведения анализа предсказанных остатков, создания подробного отчета и т. п.);

    Полная интеграция с мощными автоматическими инструментами STATISTICA ; запись полноценных макросов для любых анализов; создание собственных нейросетевых анализов и приложений с помощью STATISTICA Visual Basic, вызов STATISTICA Automated Neural Networks из любого приложения, поддерживающего технологию СОМ (например, автоматическое проведение нейросетевого анализа в таблице MS Excel или объединение нескольких пользовательских приложений, написанных на языках C, С++, С#, Java и т. д.).

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

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

    Поддержка загрузки и анализа нескольких моделей.

  • Опциональная возможность генерации исходного кода на языках C, C++, C#, Java, PMML (Predictive Model Markup Language), который может быть легко интегрирован во внешнюю среду для создания собственных приложений.

Генератор кода

Генератор кода STATISTICA Автоматизированные Нейронные Сети может сгенерировать исходный системный программный код нейросетевых моделей на языках C, Java и PMML (Predictive Model Markup Language). Генератор кода является дополнительным приложением к системе STATISTICA Автоматизированные Нейронные Сети , которое позволяет пользователям на основе проведенного нейросетевого анализа генерировать C или Java-файл с исходным кодом моделей и интегрировать его в независимые внешние приложения.

    Генератор кода требует наличия STATISTICA Автоматизированные Нейронные Сети .

    Генерирует версию исходного кода нейронной сети (в виде файла на языке C, C++, C# или Java).

    C или Java-файл с кодом можно затем встроить во внешние программы.

STATISTICA Automated Neural Networks в нейросетевых вычислениях

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

STATISTICA Automated Neural Networks (SANN) предоставляет разнообразные функциональные возможности, для работы с очень сложными задачами, включающие не только новейшие Архитектуры Нейронных Сетей и Алгоритмы обучения , но также и новые подходы к построению нейросетевых архитектур с возможностью перебора различных функций активаций и ошибок, что позволяет проще интерпретировать результаты. Кроме того, разработчики программного обеспечения и пользователи, экспериментирующие с настройками приложений, оценят тот факт, что после проведения заданных экспериментов в простом и интуитивно понятном интерфейсе STATISTICA Automated Neural Networks (SANN) , нейросетевые анализы могут быть объединены в пользовательском приложении. Это достигается либо с помощью библиотеки СОМ-функций STATISTICA , которая полностью отражает все функциональные возможности программы, либо с помощью кода на языке C/C++, который генерируется программой и помогает запустить полностью обученную нейронную сеть.

Модуль STATISTICA Automated Neural Networks полностью интегрирован с системой STATISTICA , таким образом доступен огромный выбор инструментов редактирования (подготовки) данных для анализа (преобразования, условия выбора наблюдений, средства проверки данных и т. д.).

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

Шкалирование данных и преобразование номинальных значений

Перед тем, как данные будут введены в сеть, они должны быть определенным образом подготовлены. Столь же важно, чтобы выходные данные можно было правильно интерпретировать. В STATISTICA Automated Neural Networks (SANN) имеется возможность автоматического масштабирования входных и выходных данных; также могут быть автоматически перекодированы переменные с номинальными значениями (например, Пол={Муж,Жен}), в том числе по методу 1-из-N кодирования. STATISTICA Automated Neural Networks (SANN) содержит также средства работы с пропущенными данными. Имеются средства подготовки и интерпретации данных, специально предназначенные для анализа временных рядов. Большое разнообразие аналогичных средств реализовано также в STATISTICA .

В задачах классификации имеется возможность установить доверительные интервалы, которые STATISTICA Automated Neural Networks (SANN) использует затем для отнесения наблюдений к тому или иному классу. В сочетании со специальной реализованной в STATISTICA Automated Neural Networks (SANN) функцией активации Софтмакс и кросс-энтропийными функциями ошибок это дает принципиальный теоретико-вероятностный подход к задачам классификации.

Выбор нейросетевой модели, ансамбли нейронных сетей

Многообразие моделей нейронных сетей и множество параметров, которые необходимо установить (размеры сети, параметры алгоритма обучения и т. д.), может поставить иного пользователя в тупик. Но для этого и существует инструмент автоматического нейросетевого поиска, , который может автоматически провести поиск подходящей архитектуры сети любой сложности, см. ниже. В системе STATISTICA Automated Neural Networks (SANN) реализованы все основные типы нейронных сетей, используемые при решении практических задач, в том числе:

    многослойные персептроны (сети с прямой передачей сигнала);

    сети на радиальных базисных функциях;

    самоорганизующиеся карты Кохонена.

Приведенные выше архитектуры используются в задачах регрессии, классификации, временных рядах (с непрерывной или категориальной зависимой переменной) и кластеризации.

Кроме того, в системе STATISTICA Automated Neural Networks (SANN) реализованы Сетевые ансамбли , формируемые из случайных (но значимых) комбинаций вышеперечисленных сетей. Этот подход особенно полезен при зашумленных данных и данных небольшой размерности.

В пакете STATISTICA Automated Neural Networks (SANN) имеются многочисленные средства, облегчающие пользователю выбор подходящей архитектуры сети. Статистический и графический инструментарий системы включает гистограммы, матрицы и графики ошибок для всей совокупности и по отдельным наблюдениям, итоговые данные о правильной/неправильной классификации, а все важные статистики, например, объясненная доля дисперсии - вычисляются автоматически.

Для визуализации данных в пакете STATISTICA Automated Neural Networks (SANN) реализованы диаграммы рассеяния и трехмерные поверхности отклика, помогающие пользователю понять "поведение" сети.

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

STATISTICA Automated Neural Networks (SANN) автоматически запоминает лучший вариант сети из тех, которые Вы получали, экспериментируя над задачей, и Вы можете обратиться к нему в любой момент. Полезность сети и ее способность к прогнозированию автоматически проверяется на специальном проверочном множестве наблюдений, а также путем оценки размеров сети, ее эффективности и цены неправильной классификации. Реализованные в STATISTICA Automated Neural Networks (SANN) автоматические процедуры кросс-проверки и регуляризации весов позволяют Вам быстро выяснить, является ли Ваша сеть недостаточно или, наоборот, чересчур сложной для данной задачи.

Для улучшения производительности в пакете STATISTICA Automated Neural Networks представлены многочисленные опции настройки сети. Так, Вы можете задать линейный выходной слой сети в задачах регрессии или функцию активации типа софтмакс в задачах вероятностного оценивания и классификации. В системе также реализованы основанные на моделях теории информации кросс-энтропийные функции ошибок и ряд специальных функций активации, включающий Тождественную, Экспоненциальную, Гиперболическую, Логистическую (сигмоидная) и Синус функции как для скрытых, так и выходных нейронов.

Автоматизированная нейронная сеть (автоматический поиск и выбор различных нейросетевых архитектур)

Составной частью пакета STATISTICA Automated Neural Networks (SANN) является инструмент автоматического нейросетевого поиска, Автоматизированная нейронная сеть (АНС) - Automated Network Search (ANS) , который оценивает множество нейронных сетей различной архитектуры и сложности и выбирает сети наилучшей архитектуры для данной задачи.

Значительное время при создании нейронной сети уходит на выбор соответствующих переменных и оптимизацию архитектуры сети методом эвристического поиска. STATISTICA Automated Neural Networks (SANN) берет эту работу на себя и автоматически проводит эвристический поиск за Вас. Эта процедура учитывает входную размерность, тип сети, размеры сети, функции активации и даже требуемые выходные функции ошибок.

Является чрезвычайно эффективным инструментом при использовании сложных техник, позволяя автоматически находить наилучшую архитектуру сети. Вместо того чтобы тратить многие часы на сидение перед компьютером, предоставьте системе STATISTICA Automated Neural Networks (SANN) сделать эту работу за Вас.

Успех Ваших экспериментов по поиску наилучшего типа и архитектуры сети существенным образом зависит от качества и скорости алгоритмов обучения сети. В системе STATISTICA Automated Neural Networks (SANN) реализованы самые лучшие на сегодняшний день обучающие алгоритмы.

В системе STATISTICA Automated Neural Networks (SANN) реализованы два быстрых алгоритма второго порядка - методы сопряженных градиентов и алгоритм BFGS. Последний представляет собой необычайно мощный современный алгоритм нелинейной оптимизации, и специалисты очень рекомендуют им пользоваться. Также имеется упрощенная версия алгоритма BFGS, требующая меньшего количества памяти, который используется системой в случае, когда возможности оперативной памяти компьютера достаточно ограничены. Эти алгоритмы, как правило, быстрее сходятся и получают более точное решение, чем алгоритмы первого порядка точности, например, Градиентный спуск.

Итеративный процесс обучения сети в системе STATISTICA Automated Neural Networks (SANN) сопровождается автоматическим отображением текущей ошибки обучения и вычисляемой независимо от нее ошибки на проверочном множестве, при этом показывается и график суммарной ошибки. Вы можете прервать обучение в любой момент, просто нажав кнопку. Кроме того, имеется возможность задать условия остановки, при выполнении которых обучение будет прервано; таким условием может быть, например, достижение определенного уровня ошибки, или стабильный рост проверочной ошибки на протяжении заданного числа проходов - "эпох" (что свидетельствует о так называемом переобучении сети). Если переобучение имеет место, это не должно заботить пользователя: STATISTICA Automated Neural Networks (SANN) автоматически запоминает экземпляр наилучшей сети, полученной в процессе обучения, и к этому варианту сети всегда можно обратиться, нажав соответствующую кнопку. После того, как обучение сети завершено, Вы можете проверить качество ее работы на отдельном тестовом множестве.

После того, как сеть обучена, нужно проверить качество ее работы и определить характеристики. Для этого в пакете STATISTICA Automated Neural Networks (SANN) имеется набор экранных статистик и графических средств.

В том случае, если заданы несколько моделей (сетей и ансамблей), то (если это возможно) STATISTICA Automated Neural Networks (SANN) отобразит сравнительные результаты (например, построит кривые отклика нескольких моделей на одном графике, или представит предикторы нескольких моделей в одной таблице). Это свойство очень полезно для сравнения различных моделей, обучаемых на одном наборе данных.

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

Автоматически вычисляются следующие итоговые статистики: среднеквадратичная ошибка сети, так называемая матрица несоответствий (confusion matrix) для задач классификации (где суммируются все случаи правильной и неправильной классификации) и корреляции для задач регрессии. Сеть Кохонена имеет окно Топологической карты, в котором можно визуально наблюдать активации элементов сети.

Готовые решения (пользовательские приложения, использующие STATISTICA Automated Neural Networks )

Простой и удобный интерфейс системы STATISTICA Automated Neural Networks (SANN) позволяет Вам быстро создавать нейросетевые приложения для решения Ваших задач.

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

Обученные нейронные сети могут быть применены к новым наборам данных (для предсказания) несколькими способами: Можно сохранить обученные сети и затем применить их к новому набору данных (для предсказания, классификации или прогнозирования); Можно использовать генератор кода для автоматического создания программного кода на языке С (С++, C#) или Visual Basic и в дальнейшем использовать его для предсказания новых данных в любой программной среде visual basic или С++ (C#), т. е. внедрить полностью обученную нейронную сеть в Ваше приложение. В заключение, все функциональные возможности системы STATISTICA , включая STATISTICA Automated Neural Networks (SANN) , могут быть использованы в качестве СОМ объектов (Component Object Model) в других приложениях (например, Java, MS Excel, C#, VB.NET и т. д.). Например, Вы можете внедрить автоматический анализ, созданный с помощью STATISTICA Automated Neural Networks (SANN) в таблицы MS Excel.

Перечень алгоритмов обучения

    Градиентный спуск

    Сопряженные градиенты

    Обучение Кохонена

    Метод k-средних для Сети радиальных базисных функций

Ограничения в размерах сетей

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

Электронное руководство

В составе системы STATISTICA Automated Neural Networks (SANN) имеется хорошо иллюстрированный учебник, содержащий полное и понятное введение в нейронные сети, а также примеры. Из любого диалогового окна доступна система подробных контекстно-зависимых справок.

Генератор исходного кода

Генератор исходного кода является дополнительным продуктом, который позволяет пользователям легко создавать собственные приложения на базе системы STATISTICA Automated Neural Networks (SANN) . Этот дополнительный продукт создает исходный системный код нейросетевой модели (в виде файла на языке C, C++, C# или Java), который можно отдельно скомпилировать и интегрировать в Вашу программу для свободного распространения. Этот продукт разработан специально для корпоративных системных разработчиков, а также тех пользователей, кому необходимо преобразовать высокооптимизированные процедуры, созданные в STATISTICA Automated Neural Networks (SANN) , во внешние приложения для решения сложных аналитических задач. (Необходимо отметить, что для получения разрешения, пользователи должны сообщить сотрудникам компании сайтssia о распространении программ, использующих сгенерированный код).

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

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

Итак, прежде всего, запустим нейронные сети.

Шаг 1. Вы начинаете со стартовой панели (посмотрите на рис. 1).

В данной панели вы можете выбрать различные виды анализа, которые Вам необходимо выполнить: регрессию, классификацию, прогнозирование временных рядов (с непрерывной и категориальной зависимой переменной), кластерный анализ.

Рис. 1. Стартовая панель STATISTICA Automated Neural Networks (SANN)

Выберите, например, Временные ряды (регрессия) , если вы хотите построить прогноз, или Классификация , если решается задача классификации.

Нажав кнопку ОК , перейдем к диалоговому окну выбора данных.

Рис. 2. Диалоговое окно Нейронные сети - Отбор данных - вкладка Быстрый

Шаг 2. На вкладке Быстрый следует выбрать необходимые переменные для анализа. Переменные могут быть непрерывными и категориальными, зависимыми и независимыми; кроме того, наблюдения могут принадлежать разным выборкам.


Рис. 3. Окно выбора переменных

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

Рис. 4. Диалоговое окно Нейронные сети - Отбор данных - вкладка Быстрый

На вкладке Подвыборки (ПНС и АНС) следует задать желаемое разбиение данных на подвыборки: обучающую, контрольную и тестовую. Разбиение можно задавать случайным образом, а можно фиксировать с помощью дополнительной переменной кодов.

В данном случае будем использовать случайное разбиение.

Рис. 5. Диалоговое окно Нейронные сети - Отбор данных - вкладка Подвыборки (АНС и ПНС)

Вкладка Подвыборки (ПНС и АНС) предназначена для первых двух стратегий: Автоматизированная нейронная сеть (АНС) и Пользовательская нейронная сеть (ПНС) ; а вкладке Создание подвыборок используется для последней стратегии: Метод многократных подвыборок.

Нажимаем ОК и переходим к шагу задания параметров архитектуры.

Шаг 3. На вкладке Быстрый диалогового окна Автоматизированные нейронные сети необходимо указать тип сети, количество скрытых нейронов, количество обучаемых и сохраняемых сетей, а также тип используемых функций ошибок.

Программа предлагает следующие типы сетей: многослойные персептроны и сети радиальных базисных функций.

Рис. 6. Диалоговое окно Автоматизированные нейронные сети - вкладка Быстрый

Рис. 7. Диалоговое окно Автоматизированные нейронные сети - вкладка Функции активации для МЛП

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

Но в нашем случае мы это использовать не будем.

Рис. 8. Диалоговое окно Автоматизированные нейронные сети - вкладка Затухание

Теперь можно перейти к шагу обучения нейронных сетей.

Шаг 4. Запустите процедуру обучения нейронных сетей, нажав кнопку ОК .

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

Рис. 9. Диалоговое окно Обучение нейронной сети

Программа автоматически переходит к следующему шагу.

Шаг 5. Анализ результатов. В окне результатов вы можете проанализировать полученные решения. Программа отберет лучшие сети и покажет качество решения.

Рис. 10. Диалоговое окно Нейронные сети - Результаты - вкладка Предсказанные

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

Рис. 11. Диалоговое окно Активация модели

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

Рис. 12. Таблица наблюдаемых и предсказанных значений

Или посмотреть матрицу ошибок классификации на тестовой выборке:

Рис. 13. Матрица классификаций

Шаг 6. Сохраните лучшие сети с целью дальнейшего использования, например, для автоматического построения прогнозов.

Для дальнейшего запуска, сети сохраняются в формате PMML.

Рис. 14. Диалоговое окно Нейронные сети - Результаты - Сохранение сетей

Рис. 15. Стандартное окно сохранения файла сети

Шаг 7. Запуск сохраненных моделей на новых данных. Итак загружаем новые данные, но чтобы переменные совпадали с переменными в моделях.

Чтобы запустить модель на новых данных, можно на стартовой панели (рис. 1) выбрать опцию Загрузить модели из предыдущих анализов и нажить кнопу Загрузить сети.

Рис. 16. Стандартное окно выбора файла сети

Получаем:

Рис. 17. Стартовая панель STATISTICA Automated Neural Networks (SANN)

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

Именно таков типичный сценарий исследования в пакете

Пакет Statistica Neural Networks (SNN)

  1. Открыть файл данных Series_g из имеющихся в пакете данных. Файл содержит единственную переменную, определяющую объем перевозок на протяжении нескольких лет с помесячной регистрацией данных. (При открытии этого файла появляется еще ряд таблиц, относящихся к опции интеллектуального решателя, которые на данной стадии надо закрыть, оставив только таблицу исходных данных).
  2. Задать тип переменной «входная – выходная» следующим образом: выделить переменную щелчком по заголовку таблицы, нажать правую клавишу мыши и выбрать из меню опцию Input / Output (Входная / выходная). При этом имя переменной высветится зеленым цветом.
  3. Создать новую сеть с помощью диалогового окна Create Network (Создать сеть). Для этого последовательно нажать: File – New – Network (Файл – новый – сеть). На экране монитора – диалоговое окно (рис. 1).

Рис. 1. Диалоговое окно создания сети

В задаче прогноза временного ряда сеть должна знать, сколько копий одной переменной она должна взять и как далеко вперед она должна прогнозировать значение переменной. В данной задаче принять параметр Steps (Временное окно) равным 12, т. к. данные представляют собой ежемесячные наблюдения, а параметр Lookahead (Горизонт) – равным 1.

  1. Выбрать в качестве типа сети Multilayer Perceptron (Многослойный персептрон) и принять число слоев сети равным 3. После этого нажать кнопку Advice (Совет), в результате чего программа автоматически установит число нейронов во всех трех слоях сети: 12 – 6 – 1 (рис. 2).

Рис. 2. Диалоговое окно после установки параметров сети

После этого нажать кнопку Create (Создать).

  1. При создании сети программа SNN автоматически присвоит первым 12 наблюдениям из файла данных тип Ignore (Неучитываемые). При дальнейшем обучении и работе сети в задаче анализа временного ряда каждый подаваемый ей на вход блок данных содержит данные, относящиеся к нескольким наблюдениям. Весь такой блок приписывается тому наблюдению, которое содержит значение выходной переменной. Вследствие этого первые 12 наблюдений на самом деле не игнорируются, а являются входами первого блока данных временного ряда, который соответствует наблюдению №13. На самом деле программа строит преобразованный набор данных, в котором число наблюдений на 12 меньше, но данные в каждое наблюдение берутся из 13 последовательных строк исходного файла.

Созданная сеть показана на рис. 3.

Рис. 3. Трехслойный персептрон

  1. В окне исходных данных «Data Set Editor» задать 66 обучающих (Training) и 66 контрольных (Verification) наблюдений (рис. 4), после чего нажать кнопку перемешивания строк следующим образом: через меню Edit – Cases Shuffle – All (Редактирование – Случаи – Перемешать – Все) .
  2. Обучить сеть методом Левенберга-Маркара, для чего необходимо нажать: Train Multilayer Perceptron – Levenberg-Marquardt (Обучить – Многослойный персептрон – Левенберг-Маркар). Процедура обучения занимает несколько секунд (зависит от типа процессора). Метод Левенберга-Маркара является одним из надежных и быстрых алгоритмов обучения, однако его применение связано с определенными ограничениями:

Рис. 4. Окно исходных данных с разделенными наблюдениями

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

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

Диалоговое окно метода Левенберга-Маркара показано на рис. 5.

Рис. 5. Диалоговое окно метода Левенберга-Маркара

Основные элементы окна:

  • Epochs (Число эпох) – задается число эпох, в течение которых алгоритм будет прогоняться. На каждой эпохе через сеть пропускается все обучающее множество, а затем происходит корректировка весов.
  • Cross-Verification (Кросс-проверка) – при отмеченной позиции качество выдаваемого сетью результата проверяется на каждой эпохе по контрольному множеству (если оно задано). При выключенной позиции контрольные наблюдения игнорируются, даже если они присутствуют в файле данных.
  • Train (Обучить) – При каждом нажатии кнопки алгоритм прогоняется через заданное число эпох.
  • Reinitialize (Переустановить) – перед новым запуском обучения следует нажать кнопку переустановки, т. к. при этом заново случайным образом устанавливаются веса сети.
  • Jog Weights (Встряхивание весов) – при возможном застревании алгоритма в локальном минимуме данная опция добавляет к каждому весу небольшую величину.
  1. Построить проекцию временного ряда, для чего через Run – Times Series Projection (Запуск – Проекция временного ряда) открыть соответствующее окно (рис. 6).

Рис. 6. Окно проекции временного ряда

Описание диалогового окна

  • Start (Начало) – указывает, должна ли проекция временного ряда начинаться с некоторого номера наблюдений (Case No) в файле данных или с отдельного наблюдения.
  • Case No (Номер наблюдения) – при проекции временного ряда из файла данных указывается номер наблюдения с выходным значением, с которого надо начинать.
  • Length (Длина) – число шагов, на которое будет проектироваться прогноз.
  • Variable (Переменная) – указывается переменная, которая будет проектироваться.
  1. С помощью обученной сети можно выполнить проекцию временного ряда. Вначале сеть отработает на первых 12 входных значениях, в результате чего будет получен прогноз следующего значения. Затем спрогнозированное значение вместе с предыдущими 11 входными величинами вновь подается на вход сети, и последняя выдает прогноз очередного значения.

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

Просмотреть поведение прогнозируемых значений при различных длинах, с использованием кнопки Run (Запуск) можно наблюдать изменение целевых и выходных значений ряда.

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

  1. Провести прогнозирование ряда с использованием интеллектуального решателя (третья кнопка слева в верхнем ряду). В этом случае необходимо ответить на ряд вопросов в режиме диалога:
  • Выбрать основную версию (рис. 7) и нажать Next.

Рис. 7. Выбор основной версии

  • Определить тип задачи (стандартная или временной ряд). Здесь нужно отметить временной ряд (рис. 8).

Рис. 8. Выбор типа задачи

  • Установить период наблюдений, равный 12 месяцам (рис. 9).

Рис. 9. Установка периода наблюдений

  • Выбрать зависимую и независимую переменные, в качестве которых служит одна и та же переменная Series.
  • Определить время расчетной процедуры, равное 2 мин (рис. 10).

Рис. 10. Установка времени расчетной процедуры

  • Указать количество сохраняемых сетей и действия при их сохранении (рис. 11).

Рис. 11. Действия по выбору сетей

  • Выбрать формы представления результатов (рис. 12) и нажать Finish.

Рис. 12. Выбор формы представления результатов

В результате использования интеллектуального решателя прогноз получается гораздо точнее, так как обучаемая сеть намного ближе к исходному ряду (рис. 13).

Рис. 13. Прогноз с помощью интеллектуального решателя

Задание

Построить смоделированный временной ряд из пакета Statistica следующим образом:

  • Создать новый файл, состоящий из 20 строк и 2 столбцов.
  • Через меню Data – Variable Specs (Данные – описание переменной) ввести в окно формул выражение =vnormal(rnd(1);1;3).
  • Смоделировать 20 значений случайной нормально распределенной величины с математическим ожиданием, равным 1, и среднеквадратичным отклонением, равным 3. Эти 20 значений определяют переменную Var 1. Перевести их к целому типу данных, установив в окне описания переменной в качестве Type значение Integer.
  • Перейти к переменной Var 2 следующим образом: первое значение Var 2 равно первому значению переменной Var 1; второе значение Var 2 равно сумме первых двух значений переменной Var 1; третье значение переменной Var 2 равно сумме первых трех значений переменной Var 1 и т. д.
  • Скопировать переменную Var 2 и перейти в пакет SNN, разместив скопированные данные в новом созданном файле.
  • Провести прогнозирование полученного ряда с помощью нейронной сети.

Версия для печати

Для создания набора обучающих данных используется встроенный редактор данных (File/New/Data Set ) либо загружается файл данных *.sta с диска. В случае создания файла в Microsoft Excel *.csv необходимо провести конвертирование формата данных в формат *.sta (операция проводится автоматически при открытии файла данных).

После открытия данных ST Neural Networks предложит функцию автоматического построения (окно Intelligent Problem Solver ). На данном этапе необходимо отказаться от данной функции (Cancel ).

При открытии нового файла в ST Neural Networks все переменные считаются входными. Необходимо указать выходные переменные. Щелкните правой кнопкой мыши в поле с названием выходных переменных в окне Data Set Editor , в появившемся контекстном меню выберите Output, цвет заголовка столбца изменится на голубой.

Все наблюдения необходимо поделить на два множества: обучающее (служит для обучения НС) и контрольное (необходимо для оценки хода обучения).

Во втором поле Cases окна Data Set Editor укажите размер контрольного множества (обычно на него отводится половина всего набора данных), нажмите Enter. Строки, содержащие контрольные наблюдения, отмечены красным цветом (находятся в конце списка наблюдений). Затем, командой перемешать (Shuffle) (Edit → Cases → Shuffle →Train and Verify ), все наблюдения случайным образом распределяются по различным типам.

Для создания сети используется пункт меню File → New → Network . При этом появляется окно редактора сети (рисунок 11).

Сеть с заданными параметрами и структурой создается после нажатия кнопки Create.

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

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

Для сетей каждого типа используются специальные алгоритмы обучения, которые находятся в пункте меню Train . При выборе алгоритма предлагается определить параметры обучения. Например, при обучении многослойного персептрона методом обратного распространения (Train → Multilayer Perceptrons → Back Propagation) задаются в соответствующем окне (рисунок 12).

Рисунок 12 – Окно редактора параметров обучения

Epochs - Эпохи. Задает число циклов обучения, которые проходятся при одном нажатии клавиши Train. Значение по умолчанию 100.

Learning rate - Скорость обучения, задает величину шага при изменении весов: при недостаточной скорости алгоритм медленно сходится, при увеличении скорости обучения алгоритм работает быстрее, но в некоторых задачах это может привести к неустойчивости (особенно если данные зашумлены). Для быстрого и грубого обучения подойдут значения от 0,1 до 0,6; для достижения точной сходимости требуются меньшие значения (например, 0,01 или даже 0,001, если эпох много тысяч). Иногда полезно уменьшать скорость в процессе обучения.

Momentum - Инерция. Этот параметр улучшает (ускоряет) обучение в ситуациях, когда ошибка мало меняется, а также придает алгоритму дополнительную устойчивость, помогает алгоритму не застревать в низинах и локальных минимумах. Значение этого параметра всегда должно лежать в интервале . Часто рекомендуется использовать высокую скорость обучения в сочетании с небольшим коэффициентом инерции и наоборот.

Shuffle Cases - Перемешивать наблюдения. При использовании этой функции порядок, в котором наблюдения подаются на вход сети, меняется в каждой новой итерации. Это добавляет в обучение некоторый шум, так что ошибка может испытывать небольшие колебания. Однако при этом меньше вероятность того, что алгоритм «застрянет», и общие показатели его работы обычно улучшаются.

Cross-verification (кросс-проверка) - Стандартный способ обучения нейронных сетей заключается в том, что сеть обучается на одном из множеств, а на другом проверяется результат; таким образом, контрольное множество для обучения не используется. Это дает независимый способ проверки того, научилась ли сеть чему-нибудь полезному.

Reinitialize - сброс настраиваемых параметров сети, полученных на предыдущем цикле обучения, или для предыдущей сети.

Запуск алгоритма обучения производится нажатием кнопки Train . Каждый раз при нажатии кнопки Train алгоритм совершает N циклов обучения, где N – количество циклов обучения, определяемое в Epochs.

На графике (Statistics → Training Error Graph ) можно наблюдать изменение ошибки сети в ходе обучения. Training Error Graph– это отображение среднеквадратичной ошибки выхода на всем обучающем множестве.

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

При изменении параметров сети перед обучением необходимо сбросить весовые коэффициенты (настроенные параметры) предыдущей сети. Для MLP–сети кнопкой Reinitialize.

В пакете STATISTICA Neural Networks предусмотрено автоматическое запоминание лучшей сети во время эксперимента. Для восстановления значений наилучшей сети вызовите меню Train→ Auxiliary→ Best Network .

Для просмотра результатов обучения сети используется функция Options в окне Network Set Editor , в появившемся окне нужно нажать Add (добавить). При этом в окне Network Set Editor добавится информационная строка для сети: тип сети, среднеквадратичная ошибка сети (RMS error), количество входов сети, число скрытых элементов в сети, коэффициент регрессии, использованные методы обучения (если в списке Detail shown выбрано Verbose- подробный).

Для расчета данных с помощью сети используется пункт меню Run: Data Set – расчет для всех данных исходного файла;

Single Case – расчет одного наблюдений;

One-off – расчет для произвольного входного вектора.

Расчет производится при нажатии кнопки Run соответствующего окна.

Запускается, как и в предыдущем случае, но в таблицах выводится только фактическое выходное значение.

Откройте меню Run →One-off , введите входные значения, для которых необходимо спрогнозировать выходное, нажмите Run .

Просмотр весовых коэффициентов синаптических связей нейронов возможен в окне Network Editor (рисунок 13) (Edit→Network… ). Значение Theshold – пороговое значение, которое вычитается от входного значения нейрона. Значение VAR1 (на рисунке 13) – весовой коэффициент связи.

Номер слоя задается в поле Layer. В данном окне можно просмотреть (задать) функцию активации нейрона каждого слоя (поле Act fn).


Рисунок 13 – Окна просмотра параметров обученной сети

Просмотр выходных значений нейронов в слое в окне Network Activations (Run → Activations … ). Расчет для строки данных (указана в поле Case No ) по нажатию кнопки Run.

В пакете STATISTICA Neural Networks предусмотрена возможность автоматического определения структуры лучшей сети для набора обучающих данных (функция доступна через File→New→Intelleigent Problem Solver ).

Алгоритм работы сети в пакете STATISTICA Neural Networks .

1 Нормализация входных данных:

,

где - коэффициент нормализации; , максимальное и минимальное значения j- й переменной обучающей выборки; i – номер строки обучающей выборки.

Примечание - Для просмотра и анализа данных обучающей выборки удобно использовать функцию Edit → Cases → Shuffle →Group Sets.

2 Распределение входного вектора на следующий слой с соответствующим весовым коэффициентом (см. Edit→Network… ).

3 Вычитание порогового значения на каждом нейроне (см. Edit→Network… поле Theshold ).

4 Вычисление функции активации нейрона (результат см. Run → Activations … ).

5 Повтор шагов для всех слоев сети.

6 Вычисление выхода сети с учетом коэффициента нормализации:

, где - минимальное значение выходной переменной обучающей выборки, t – номер выходной переменной, - коэффициент нормализации выходной переменой t , - нормализованное значение выхода сети, рассчитанное для последнего слоя.

Контрольные вопросы

1 Что такое нейронная сеть и каковы ее основные свойства?

2 Какова структура нейрона?

3 Какие функции активации могут быть использованы в нейронных сетях?

4 Какие требования предъявляются к функциям активации?

5 Какие функции выполняет входной слой в многослойной сети?

6 Можно ли обучить нейронную сеть без скрытого слоя?

7 В чем заключается обучение нейронных сетей?

8 Почему один из алгоритмов обучения получил название «алгоритм обратного распространения»?

9 Чем отличается обучение с учителем от обучения без учителя?

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

Список литературы

1 Fogelman Soulie F. Neural networks, state of the art, neural computing. -London: IBC Technical Services, 1991.

2 Горбань А. Нейроинформатика и ее приложения // Открытые системы. -1998. -№ 4 – 5. -С. 36 - 41.

3 Роберт Хехт-Нильсен. Нейрокомпьютинг: история, состояние, перспективы // Открытые системы. -1998. -№ 4-5. -С. 23 - 28.

4 Розенблатт Ф. Принципы нейродинамики. Персептроны и теория механизмов мозга. -М.: Мир, 1965.

5 Гордиенко Е.К., Лукьяница А.А. Искусственные нейронные сети. I Основные определения и модели// Изв. РАН. Техническая кибернетика. -1994. -№ 5. -С. 79 - 92.

6 Короткий С.Г. Нейронные сети: алгоритм обратного распространения. -BYTE/Россия. -2000. -№ 5. -С. 26-29.

7 Свешников С.В., Шквар А.М. Нейротехнические системы обработки информации. -Киев: Наукова думка, 1983. -222 с.

8 Интеллектуальные системы управления с использованием нейронных сетей: учеб. пособие. / В.И. Васильев, Б.Г. Ильясов, С.С. Валеев и др.; Уфимск. гос. авиац. техн. ун-т. Уфа, 1997. -92 с.

9 Куликов Г.Г., Брейкин Т.В., Арьков В.Ю. Интеллектуальные информационные системы: учеб. пособие / Уфимск. гос. авиац. техн. ун-т. -Уфа, 1999. -129 с.

10 Короткий С.Г. Нейронные сети: основные положения // BYTE/Россия. -2000. -№ 5. -С. 18-21.

11 Интеллектуальные системы обработки информации на основе нейросетевых технологий: учеб. пособие. / Ю.И. Зозуля, Уфимск. гос. авиац. техн. ун-т. –Уфа. -2000. -138 с.