
- •Глава 1
- •Глава 2 первые шаги Начинаем работу с пакетом
- •Создание набора данных
- •Создание новой сети
- •Сохранение набора данных и сети
- •Обучение сети
- •Запуск нейронной сети
- •Проведение классификации
- •Заключение
- •Глава 3 дальнейшие возможности
- •Ирисы Фишера
- •Обучение с кросс-проверкой
- •Условия остановки
- •Восстановление наилучшей сети
- •Решение задач регрессии
- •Радиальные базисные функции
- •Линейные модели
- •Сети Кохонена
- •Вероятностные (pnn) и обобщенно-регрессионные (grnn) сети
- •Автоматический конструктор сети
- •Генетический алгоритм отбора входных данных
- •Временные ряды
- •Глава 4 практические советы по решению задач
- •Представление данных
- •Выделение полезных входных переменных
- •Понижение размерности
- •Выбор архитектуры сети
- •Пользовательские архитектуры сетей
- •Временные ряды
- •Глава 5 краткое руководство
- •Обучение сетей
- •Работа с сетью
- •Пересылка результатов в систему statistica
- •Список литературы
Выделение полезных входных переменных
Обсуждение
Довольно часто мы не имеем в своем распоряжении никакой дополнительной информации о том, какие входные переменные действительно нужны для решения задачи классификации или регрессии. Важным этапом в поиске ответа на этот вопрос будет построение нейронной сети, специально предназначенной для отбора значимых переменных.
Ненужные переменные могут существенно мешать делу, потому что из-за них сеть будет получаться большой, будет дольше обучаться и работать и будет склонна к переобучению.
При работе с пакетом ST Neural Networks в распоряжении пользователя есть два способа отбора переменных: метод проб и ошибок и Генетический алгоритм отбора входных данных - Genetic Algorithm Input Selection.
Тестирование переменных методом проб и ошибок
При тестировании переменных на вход сети подаются различные комбинации входных переменных с целью определить, какие из них наиболее полезны. С помощью функций окна Редактор данных - Data Set Editor пакета ST Neural Networks можно делать отдельные переменные неучитываемыми, затем строить нейронную сеть, обучать ее и тестировать, поэтому поэкспериментировать с различными комбинациями входов не составит большого труда.
При этом можно придерживаться одной из двух стратегий: наращивания или отсечения.
Наращивание. Мы начинаем с одной переменной и по одной добавляем к ней другие переменные. Если результат от этого улучшается, то такая комбинация запоминается. Такая процедура на начальных этапах работает быстро, однако при этом игнорируется то обстоятельство, что две или более переменных могут быть взаимосвязаны (т.е. может оказаться так, что нужно добавить сразу несколько переменных, чтобы улучшить результат).
Отсечение. Мы берем все имеющиеся переменные и начинаем по одной их убирать. Если результат от этого ухудшается, то возвращаемся к предыдущей комбинации переменных. Этот поначалу очень медленный способ, требующий построения очень больших по размеру сетей, позволяет, как правило, сохранить взаимосвязанные переменные.
Ограничение времени обучения
При подобных экспериментах основным ограничением является время, уходящее на обучение и тестирование сетей. Поэтому стоит пойти на компромисс и выбирать такую нейросетевую модель, которую можно быстро оценить, даже если она не будет самой лучшей. Уже после того, как найдена наилучшая комбинация входных переменных, можно будет сосредоточиться на оптимизации архитектуры сети.
Например, если первые эксперименты показывают, что линейная сеть дает удовлетворительные результаты, то можно остановиться на ней. Также хороши в этом смысле байесовы сети (вероятностные и регрессионные), которые практически не требуют времени на обучение (хотя могут медленно работать).
Эту процедуру можно ускорить, работая со случайным подмножеством наблюдений. Для этого нужно задать небольшое число обучающих и контрольных наблюдений, число тестовых наблюдений положить равным нулю, а затем применить операцию Перемешать все - Shuffle All (меню Правка -Переменные - Edit-Cases или кнопка Перемешать - Shuffle).
Предостережение. Не пренебрегайте кросс-проверкой на этом этапе. Большая сеть скорее подвержена переобучению, чем маленькая, и иногда при уменьшении числа входных переменных показатели на контрольном множестве улучшаются, даже если удаленные переменные несли существенную информацию. Поэтому контрольная ошибка является очень важным показателем.
Генетический алгоритм отбора входных данных
Генетический алгоритм отбора входных данных - Genetic Algorithm Input Selection пакета ST Neural Networks реализует элегантный автоматизированный подход к выбору значимых входных данных. Можно считать его «интеллектуальной» формой метода проб и ошибок.
Этот алгоритм экзаменует большое число комбинаций входных переменных с помощью вероятностных и обобщенно-регрессионных нейронных сетей. Сети этих типов выбраны потому, что для них общее время обучения/оценки очень мало, а также потому, что они очень сильно страдают от присутствия ненужных входных переменных (и поэтому являются хорошим средством их обнаружения).
Каждый возможный вариант набора входных переменных можно представить в виде битовой маски. Ноль в соответствующей позиции означает, что эта входная переменная не включена во входной набор, единица - что включена. Таким образом, маска представляет собой строку битов - по одному на каждую возможную входную переменную - и Генетический алгоритм отбора входных данных - Genetic Algorithm Input Selection оптимизирует такую битовую строку.
Алгоритм следит за некоторым набором таких маскирующих строк, оценивая каждую из них по контрольной ошибке (если были заданы контрольные наблюдения; если нет, то вместо нее используется ошибка обучения). По значениям ошибки производится отбор лучших вариантов масок, которые комбинируются друг с другом с помощью искусственных генетических операций: скрещивания и мутации (случайных изменениях отдельных битов). Поскольку часто бывает желательно иметь как можно меньше входных переменных, даже ценой некоторого увеличения ошибки, можно включить в алгоритм штраф за элемент (Unit Penalty), который будет прибавляться к ошибке при добавлении каждой новой переменной.
Лучшая из найденных маскирующих строк выводится на экран. Вы можете просмотреть ее, чтобы понять, какие переменные были отобраны, или же просто нажать кнопку Применить - Apply - программа ST Neural Networks автоматически сделает неучитываемыми все отвергнутые алгоритмом переменные из исходного набора данных. Алгоритм проверяет только те переменные, которые обозначены как входные, поэтому если вы не хотите, чтобы какие-то переменные попали во входной набор, просто пометьте их как неучитываемые до запуска генетического алгоритма.