
- •Глава 1
- •Глава 2 первые шаги Начинаем работу с пакетом
- •Создание набора данных
- •Создание новой сети
- •Сохранение набора данных и сети
- •Обучение сети
- •Запуск нейронной сети
- •Проведение классификации
- •Заключение
- •Глава 3 дальнейшие возможности
- •Ирисы Фишера
- •Обучение с кросс-проверкой
- •Условия остановки
- •Восстановление наилучшей сети
- •Решение задач регрессии
- •Радиальные базисные функции
- •Линейные модели
- •Сети Кохонена
- •Вероятностные (pnn) и обобщенно-регрессионные (grnn) сети
- •Автоматический конструктор сети
- •Генетический алгоритм отбора входных данных
- •Временные ряды
- •Глава 4 практические советы по решению задач
- •Представление данных
- •Выделение полезных входных переменных
- •Понижение размерности
- •Выбор архитектуры сети
- •Пользовательские архитектуры сетей
- •Временные ряды
- •Глава 5 краткое руководство
- •Обучение сетей
- •Работа с сетью
- •Пересылка результатов в систему statistica
- •Список литературы
Проведение классификации
Введение
Решение задач классификации - одна из наиболее важных областей применения нейронных сетей. В таких задачах входные данные представляют собой результаты измерений некоторых характеристик объекта. Цель состоит в том, чтобы определить, к какому из нескольких заданных классов принадлежит этот объект. Обычно классов бывает ровно два (или один, и наблюдение может либо принадлежать, либо не принадлежать ему). Задача «исключающего или» - пример задачи классификации с двумя классами. Наблюдение может принадлежать или не принадлежать классу Хоr.
В пакете ST Neural Networks можно работать с так называемыми номинальными переменными (или атрибутами), то есть с переменными, которые могут принимать конечное число значений, представленных в виде строк текста. Простейший пример - переменная Пол = {Муж, Жен}, это номинальная переменная с двумя возможными значениями (состояниями). В задаче «исключающего или» выходная переменная как раз должна быть номинальной переменной с двумя состояниями: Xor = {False, True}.
В описываемой программе номинальными могут быть как входные, так и выходные переменные, и имеется много способов преобразования содержащейся в них нечисловой информации к виду, понятному нейронной сети, и, наоборот, способов интерпретировать числовой выход сети как номинальную переменную. Поддержка номинальных переменных - органическая часть системы пре/пост-процессирования пакета ST Neural Networks.
Проиллюстрируем сказанное, видоизменив пример Хоr таким образом, чтобы выходом была номинальная переменная.
Задача Хоr с номинальной выходной переменной
Начнем с того, что заново определим набор данных. Используем команду Набор данных - Data Set... меню Файл-Создать - File-New и определим две входные и одну выходную переменную.
В открывшемся окне Редактор данных - Data Set Editor зададим имена переменных First, Second и Хоr (дважды щелкая на заголовках столбцов).
Чтобы сделать переменную Хоr номинальной, выделите ее (щелчком на заголовке столбца), затем нажмите правую кнопку мыши и выберите в появившемся контекстном меню пункт Определение - Definition.... Откроется диалоговое окно Определение переменной - Variable Definition,
в котором содержатся следующие сведения о переменной: ее имя в данный момент, число возможных номинальных значений (для числовых переменных - ноль) и сами номинальные значения.
Нажмите верхнюю стрелку на кнопке микропрокрутки, расположенной справа от поля Значение - Value: у переменной появится два номинальных значения - v1 и v2 (номинальных значений должно быть не менее двух -единственное номинальное значение не имеет никакого смысла).
Поменяйте имя первого номинального значения с v1 на False (Ложь), затем нажмите верхнюю стрелку на кнопке микропрокрутки и поменяйте имя второю номинального значения с v2 на True (Истина).
Нажмите кнопку Закрыть - Close - номинальная переменная определена.
Теперь можно ввести данные наблюдений, чтобы набор данных выглядел как на этом рисунке. Вводить значения номинальной переменной можно разными способами: напрямую напечатать слова (True или False), ввести соответствующее порядковое
значение (соответственно 1 или 2) или, выделив ячейку, щелкнуть правой кнопкой и выбрать значение из контекстного меню.
После того, как набор данных будет создан, создайте сеть с помощью команды Сеть - Network... меню Файл-Создать - File-New. Нажмите кнопку Совет - Advise - программа ST Neural Networks автоматически выберет параметры пре/пост-процессирования и архитектуру сети. Задайте число скрытых элементов равным двум. Обучите сеть с помощью алгоритма обратного распространения.
Замечание. Функция преобразования (Convert) для выходной переменной будет изменена с Минимакс - Minimax на Два значения - Two-State: программа ST Neural Networks автоматически определила, что это двузначная номинальная выходная переменная, и соответствующим образом изменила режим пре-процессирования. Такой способ - обычный при решении на нейронной сети задачи двузначной классификации (т.е. с двумя классами): двузначной переменной соответствует один выходной элемент, который будет выдавать значение 1 для одного из классов и 0 - для другого. Все промежуточные значения выражают ту или иную степень уверенности в том, что наблюдение принадлежит данному классу.
На практике стандартный многослойный персептрон на выходе никогда не выдаст точно 0 или 1, а лишь, быть может, близкие к ним значения. Таким образом, естественно будет установить доверительные уровни или пределы. Например, доверительные уровни можно задать так, чтобы точки выше 0,95 объявлялись принадлежащими к одному классу, а точки ниже 0,05 - к другому.
Установка доверительных уровней
Доверительные
пределы для классификации устанавливаются
в пакете SТ
Neural
Networks
в
окне Пре/пост-процессирование
- Pre/Post
Processing,
которое
открывается одноименной командой меню
Правка - Edit.
Другой
способ доступа к этому окну - с помощью
кнопки
.
В
поле Принять
-Accept
задается
минимальное значение выхода, при котором
наблюдение будет считаться принадлежащим
«положительному» классу; поле Отвергнуть
- Reject
содержит
максимальное значение выхода, при
котором наблюдение будет отнесено к
«отрицательному» классу.
Интерпретация результатов классификации
При прогоне сети из окон Прогнать одно наблюдение - Run Single Case, Прогнать отдельное наблюдение - Run One-off Case или Прогнать набор данных - Run Data Set программа SТ Neural Networks производит пост-процессирование выходных значений с учетом доверительных пределов и присваивает значения выходной переменной по следующим правилам.
• Если выход превысил порог принятия, то наблюдение классифицируется положительно и выдается второе из двух номинальных значений (в нашем примере True).
• Если выход был ниже порога отвержения, наблюдение классифицируется отрицательно, и выдается первое из двух номинальных значений (в нашем примере False).
• Если выход лежит между двумя порогами, классификация объявляется неопределенной и выходная переменная приобретает «пропущенное» значение (изображается знаком вопроса).
По умолчанию в пакете 57' Neural Networks выдаются именно эти номинальные значения выходных переменных. Однако, вполне вероятно, что вы захотите узнать истинные уровни доверия, которые сеть присвоила наблюдениям до пост-процессирования (т.е. уровни активации выходного элемента). Поменяйте значение параметра Показывать при выводе -Outputs Shown с Переменные... - Variables на Активации - Activations - и в таблице будут показаны не пост-процессированные номинальные значения выходной переменной, а уровни активации выходного элемента сети.
Статистики классификации
Таблица
со статистиками, отражающими результаты
и качество классификации, выводится
нажатием кнопки Запуск - Run в окне
Статистики классификации - Classification
Statistics или кнопкой
.
Столбцы таблицы соответствуют классам. Каждый столбец разбит на две части: суммарные статистики и статистики присваивания. Друг от друга они отделены темной горизонтальной линией.
Итоговые статистики
1. Всего - Total. Общее число наблюдений в этом наборе данных.
2. Правильно - Correct. Количество наблюдений из этого класса, которые сеть классифицировала правильно.
3. Неправильно - Wrong. Количество наблюдений из этого класса, которые сеть неправильно классифицировала как относящиеся к другому классу.
4. Неясно - Unknown. Количество наблюдений из этого класса, которые сеть не смогла классифицировать.
Статистики присваивания
Здесь показано, сколько наблюдений из каждого класса было отнесено к каждому из возможных классов, включая правильный. Неясные наблюдения не отражены. Эта информация позволяет более подробно выяснить причины неправильных классификаций.
Замечание. Статистики классификации автоматически обновляются после нажатия кнопки Запуск - Run в одноименном окне, и для их пересчета не требуется никаких специальных действий.