
- •Глава 1
- •Глава 2 первые шаги Начинаем работу с пакетом
- •Создание набора данных
- •Создание новой сети
- •Сохранение набора данных и сети
- •Обучение сети
- •Запуск нейронной сети
- •Проведение классификации
- •Заключение
- •Глава 3 дальнейшие возможности
- •Ирисы Фишера
- •Обучение с кросс-проверкой
- •Условия остановки
- •Восстановление наилучшей сети
- •Решение задач регрессии
- •Радиальные базисные функции
- •Линейные модели
- •Сети Кохонена
- •Вероятностные (pnn) и обобщенно-регрессионные (grnn) сети
- •Автоматический конструктор сети
- •Генетический алгоритм отбора входных данных
- •Временные ряды
- •Глава 4 практические советы по решению задач
- •Представление данных
- •Выделение полезных входных переменных
- •Понижение размерности
- •Выбор архитектуры сети
- •Пользовательские архитектуры сетей
- •Временные ряды
- •Глава 5 краткое руководство
- •Обучение сетей
- •Работа с сетью
- •Пересылка результатов в систему statistica
- •Список литературы
Пользовательские архитектуры сетей
Те готовые архитектуры сетей, которые создаются программой ST Neural Networks, относятся к числу наиболее широко используемых. Однако построенные таким образом сети не обязательно будут лучшими из всех возможных. В особенности это относится к многослойным персептронам.
В этом разделе даются некоторые советы относительно того, как путем настройки можно улучшить качество работы сети.
Сети для задач классификации
Задачи классификации в пакете ST Neural Networks подразделяются на две категории: задачи с двумя классами, где используется один выходной элемент, и задачи со многими классами, где сеть содержит три или более выходных элементов.
Задачи с двумя классами. В задаче с двумя классами целевое выходное значение равно либо 1 (что означает принадлежность одному из классов), либо 0 (принадлежность другому классу).
Задачи со многими классами. В задаче со многими классами целевое выходное значение у элемента, соответствующего правильному классу, равно 1 a y остальных элементов равно 0.
Полезно представлять себе выходные значения как вероятности.
1. В задаче с двумя классами единственное выходное значение можно считать оценкой, которую сеть дает для вероятности того, что данное наблюдение принадлежит «положительному» классу (1).
2. В задаче со многими классами выходные значения можно считать оценкой вероятности принадлежности отдельным классам, при условии, что их сумма по всем классам пронормирована на единицу.
В пакете ST Neural Networks имеются средства поддержки обоих вариантов интерпретации.
Сети для задач с двумя классами. Сеть для двух классов реализуется стандартной логистической функцией активации в выходном элементе, поскольку выходное значение всегда лежит в интервале (0;1).
Однако характеристики такой сети иногда удается улучшить, выбрав для параметра Функция ошибок - Error function значение Энтропия (простая) - Entropy (single). Стандартная среднеквадратичная функция ошибок (Sum-Squared) теоретически больше подходит для задач регрессии.
Сети для задач со многими классами. Выходные значения сети в задаче со многими классами можно интерпретировать как вероятности, если их пронормировать на единичную сумму. Чтобы сделать это в пакете ST Neural Networks выберите для выходного слоя функцию активации Софтмакс - Softmax (с помощью Редактора сети - Network Editor), а для параметра Функция ошибок - Error function - тип Энтропия (множественная) - Entropy (multiple).
В функции софтмакс используется взвешенная и нормированная на единицу сумма экспонент, и эта функция по свойствам близка к логистической. Можно показать, что если входные данные представляют собой выборку из какого-то экспоненциального распределения (самым известным примером экспоненциального распределения является нормальное), т выходы софтмакс-элементов можно трактовать как вероятности.
Вероятности принадлежности наблюдения разным классам (а не только сами классы, которые им назначила программа 57"Neural Networks) можно посмотреть, изменив в окнах Прогнать одно наблюдение - Run Single Case. Прогнать набор данных - Run Data Set и Прогнать отдельное наблюдение - Run One-off Case значение Показывать при выводе - Outputs Shown на Активации - Activations.
Добавление матрицы потерь. Если сеть обучена с таким расчетом, чтобы выходные значения были оценками вероятностей, программу ST Neural "Networks можно настроить так, чтобы учитывать матрицу потерь (Bishop, 1995).
В самом простом варианте оценки вероятности используются непосредственно - наблюдение относится к наиболее вероятному классу. Разумеется, при этом сеть иногда может ошибаться (и будет ошибаться, если в данных содержатся помехи).
Однако бывает так, что одни ошибки обходятся дороже других. Например, при диагностике серьезного заболевания назначение лечения человеку, который на самом деле здоров, можно считать менее серьезной ошибкой, чем отсутствие лечения для действительно больного.
Матрица потерь представляет собой квадратную матрицу, коэффициентами которой являются относительные цены различных ошибок классификации. Она умножается на вектор оцененных вероятностей, в результате получается вектор оценок потерь, и каждое наблюдение приписывается тому классу, у которого будет наименьшая оценка для цены ошибки.
Поскольку правильная классификация не несет никаких потерь, на главной диагонали матрицы потерь всегда стоят нули; что касается остальных коэффициентов матрицы, то коэффициент, стоящий на пересечении n-го столбца и m-й строки есть цена неправильной классификации наблюдения, принадлежащего на самом деле к классу номер n, как принадлежащего к классу номер m.
В пакете ST Neural Networks матрицу потерь можно построить с помощью линейной сети, имеющей такое же число элементов во входном и выходном слоях, как у исходной сети в выходном слое. Сеть для матрицы потерь должна иметь числовые входные переменные и одну номинальную выходную переменную, соответствующую выходу сети, к которой добавляется матрица потерь.
Таким образом, самой простой способ построить матрицу потерь такой: проигнорировать все входные переменные исходного набора данных, а выходную переменную сделать типа Входная/выходная - Input/Output; выбрать тип сети Линейная - Linear (а если он уже выбран, нажать кнопку Совет - Advise). Возникнет сеть с одной входной и одной выходной переменной, причем обе будут номинальными. Теперь нужно добавить N новых входных переменных, где N - число возможных номинальных значений, и после этого удалить существующую входную переменную: в результате будет построена сеть матрицы потерь с нужным числом входов и правильным пост-процессирующим слоем. Затем с помощью Редактора сети - Network Editor нужно установить нулевые значения порогов (Thresholds) выходного слоя и поместить коэффициенты матрицы потерь на место всех других весов.
После того, как матрица потерь построена, ее можно добавить к обученной сети, оценивающей вероятности, и в результате получится составная сеть, оценивающая потери. При этом необходимо также задать для параметра Тип результата классификации - Classification Output Type значение Ошибка - Error.
Матрицу потерь можно включать в байесовы вероятностные сети пакета ST Neural Networks при их создании.
Предостережение. После того, как матрица потерь построена, нельзя дальше обучать составную сеть, так как при этом будут испорчены коэффициенты потерь.
Сети для задач регрессии
В задачах регрессии цель состоит в прогнозировании значения непрерывной выходной переменной. Многослойный персептрон в своем исходном виде может для этого не подойти, поскольку стандартная логистическая функция активации принимает значения в интервале (0:1). а выходные значения задачи могут лежать совсем в другом диапазоне.
Масштабирование выходных значений. Программа ST Neural Networks автоматически устраняет это несоответствие путем масштабирования (шкалирования) выходных значений. По умолчанию в многослойном персептроне используется шкалирование методом Минимакс -Minimax как для входных, так и для выходных переменных. После того,как сеть обучена, программа ST Neural Networks определяет для каждой переменной коэффициенты масштаба и смещения по минимальному и максимальному значениям на обучающем множестве и преобразует данные, умножая их на коэффициент масштаба и прибавляя смещение.
В результате нулевой уровень активации соответствует минимальному значению, встретившемуся в обучающих данных, а единичный уровень активации - максимальному значению. Тем самым сеть может интерполировать значения в диапазоне изменения обучающих данных, но не может экстраполировать вне этой области даже тогда, когда данные сами напрашиваются на это.
Придать сети способность к экстраполяции можно несколькими способами.
1. Уменьшить диапазон параметров Мин/средн - Min/Mean и Макс/ст.откл. - Max/SD для шкалирования методом Минимакс -Minimax no сравнению с областью значений активации (например, до [0,2;0,8] для стандартной логистической функции активации). Таким образом, появится небольшая возможность экстраполяции (сильная экстраполяция данных, как правило, не бывает оправдана).
2. Использовать линейную функцию активации в последнем слое сети. Это делает возможной большую степень экстраполяции, хотя, в конце концов, выходной сигнал будет все равно насыщен из-за насыщения логистических элементов в предыдущих слоях сети. Достоинством данного способа является возможность «тонкой настройки» последнего слоя с помощью итеративного обучения методом псевдообратных (Pseudo-Inverse).
Выбросы. Регрессионные сети особенно чувствительны к проблеме выбросов. При использовании среднеквадратичной функции ошибок (Sum-Squared Error function) точки, далеко отстоящие от основной массы, оказывают непропорционально большое влияние на положение гиперплоскостей регрессии. В случае, когда такие точки на самом деле являются аномалиями (например, ложные точки, порожденные сбоями в измерительной аппаратуре), они могут сильно ухудшить качество результата.
Вот один из возможных способов решения этой проблемы: обучить сеть, затем протестировать ее на обучающих наблюдениях, найти и отбросить re из них, которые дают очень большую ошибку, а затем вновь обучить сеть. На последнем этапе наблюдения с выбросами нужно пометить как неучитываемые.
Если вы считаете, что наблюдение-выброс объясняется сомнительным значением только какой-то одной переменной, то можно удалить именно это значение, в результате чего программа будет трактовать это наблюдение как имеющее пропущенное значение (см. следующий раздел).
Другой подход основан на использовании функции ошибок «городских кварталов» (Error function City-Block). Вместо того, чтобы при подсчете ошибки суммировать квадраты разностей по каждой переменной, здесь суммируются просто модули разностей. Без возведения в квадрат обучение становится гораздо менее чувствительным к выбросам.
В то время как при использовании среднеквадратичной функции ошибок «влияние», которое отдельное наблюдение оказывает на положение гиперплоскости, пропорционально расстоянию от него до гиперплоскости, в случае функции ошибок «городских кварталов» это усилие одинаково для всех точек, и только лишь его направление зависит от того, по какую сторону от гиперплоскости расположена точка. На самом деле среднеквадратичная функция ошибок стремится найти среднее значение, а функция ошибок «городских кварталов» - медиану.
Пропущенные значения. Нередко в имеющейся в нашем распоряжении выборке отсутствуют данные для отдельных наблюдений. Тем не менее, при проведении анализа этого набора данных с помощью нейронной сети (чтобы выжать все возможное из имеющейся информации) может возникнуть необходимость в использовании этих неполных наблюдений для обучения ввиду острой нехватки обучающих данных.
В пакете ST Neural Networks имеются специальные средства обработки пропущенных значений. Значение для подстановки берется из обучающего множества, и может являться, например, средним всех значений этой переменной, присутствующих в обучающем множестве. Способ подстановки пропущенных значений может быть выбран отдельно для каждой переменной в таблице редактора пре/пост-процессирования, а сами подстановочные значения вычисляются во время обучения сети.
Кроме этого, средства управления пропущенными значениями имеются в Редакторе данных - Data Set Editor. Там. где это возможно, следует отбрасывать либо переменные, у которых много пропущенных значений, либо наблюдения с пропущенными значениями. Вы можете выбрать тот или иной вариант и приказать программе ST Neural Networks автоматически выявлять и отбрасывать соответствующие переменные или наблюдения.