Читайте также: |
|
Прогонять этот алгоритм мы будем на модифицированном варианте усеченного набора данных про ирисы, в который мы добавим новые входные переменные, не несущие никакой информации.
Начнем с того, что загрузим файл данных про ирисы и изменим его так, чтобы в нем было 20 обучающих и 20 контрольных образцов, а за пропорциональным представительством видов следить не будем. Сделаем так, чтобы обучающие и контрольные наблюдения выбирались случайным образом.
Переместите указатель мыши на линию, разделяющую заголовки столбцов переменных SLENGTH и SWIDTH. Указатель превратится в двустороннюю стрелку. Щелкните мышью - при этом появится голубая полоса вставки, затем нажмите три раза клавишу ENTER - в файл будут добавлены три новые переменные. Так как они очевидным образом не несут в себе никакой информации, следует ожидать, что Генетический алгоритм отбора входных данных - GA Input Selection удалит их.
Откроем диалоговое окно Генетический отбор входов - Genetic Input Selection с помощью команды Генетический отбор входов - GA Input Selection... меню Обучение-Дополнительно - Train-Auxiliary.
Это окно содержит много управляющих параметров. Среди них - Популяция - Population и Поколения - Generations, Скорость мутаций - Mutation Rate и Скорость скрещивания - Crossover Rate. Если вы не знакомы с генетическими алгоритмами, то не стоит менять два последних параметра (рекомендуется взять значения по умолчанию). Параметры Популяция - Population и Поколения - Generations определяют, как много усилий алгоритм затрачивает на поиск.
Схема работы генетического алгоритма такова. Берется случайный набор, популяция, битовых строк (в нашем случае отдельный бит, соответствующий каждому входу, показывает, учитывать или нет соответствующую входную переменную) и оценивается степень их пригодности (т.е. качество получаемых решений). Затем плохие строки исключаются из рассмотрения, а из оставшихся порождаются новые строки с помощью искусственных генетических операций мутации и скрещивания. Таким образом, возникает новая популяция, и весь процесс повторяется, порождая все новые поколения, а в конце его отбирается наилучший экземпляр. Параметр Популяция - Population задает объем популяции индивидуумов, а параметр Поколения - Generations определяет, сколько раз будет повторен цикл отбора-порождения-оценки. Произведение этих двух чисел равно общему числу операций оценивания, которые алгоритм должен будет выполнить, и каждое оценивание включает построение PNN или GRNN сети и ее тестирование на контрольном множестве.
При построении PNN или GRNN сети необходимо выбрать коэффициент сглаживания (Smoothing). В общем случае следует самостоятельно провести ряд экспериментов со всей совокупностью входных переменных, строя PNN или GRNN сети с различными коэффициентами сглаживания, и выбрать подходящее значение. К счастью, сети PNN и GRNN не слишком чувствительны к точному выбору коэффициента сглаживания, и в нашем случае вполне подойдет значение по умолчанию.
Как уже говорилось, иногда бывает полезно уменьшить число входов даже ценой некоторой потери точности, поскольку это улучшает способности сети к обобщению и уменьшает размер сети и время счета. Можно создать дополнительный стимул к исключению лишних переменных, назначив штраф за элемент (Unit Penalty). Это число будет умножаться на количество элементов, и результат будет прибавляться к уровню ошибки при оценке качества сети. Таким образом, будут штрафоваться большие по размеру сети. Обычно значения этого параметра (если он используется) берутся в интервале 0,01-0,001. В нашей задаче дополнительные переменные не несут никакой информации и действительно будут ухудшать качество сети, поэтому нет необходимости специально задавать еще и штраф за элемент.
Нажмите кнопку Запуск - Run. При выполнении генетического алгоритма с параметрами по умолчанию он проделает 10000 оцениваний (популяция объемом 100 и 100 поколений). Однако в нашей задаче имеется всего семь кандидатов во входные переменные (четыре настоящих и три добавленные), поэтому число всевозможных комбинаций равно всего 128 (два в седьмой степени). Программа ST Neural Networks сама обнаружит это обстоятельство и вместо описанных действий выполнит оценивание полным перебором вариантов (соответствующая информация будет выдана в строке сообщений).
По окончании работы алгоритма откроется окно с таблицей, в которой будет указано, какие переменные были признаны полезными, а какие нет (соответственно Да - Yes или Нет - No). Переменные, которые не рассматривались как кандидаты во входной набор (в данной задаче - выходная переменная) будут помечены как неучитываемые. Если вы все сделали правильно, алгоритм отберет настоящие переменные задачи и отбросит вновь добавленные.
Нажмите кнопку Применить - Apply. Программа ST Neural Networks применит найденный шаблон к исходным данным, и у тех переменных, которые были отвергнуты алгоритмом, изменит тип на Неучитываемая -Ignore.
Теперь сделаем параметр Штраф за элемент - Unit Penalty равным 0,01 и снова нажмем кнопку Запуск - Run. На этот раз мы побуждаем алгоритм уменьшать число входов, даже ценой некоторого увеличения ошибки. Конкретный результат будет зависеть от того, какие наблюдения были взяты в обучающее и контрольное множества. Скорее всего, однако, окажется, что переменные PLENGTH и PW1DTH будут отобраны, а переменные SLENGTH и SWIDTH - отвергнуты. Экспериментируя с различными значениями штрафа за элемент, вы сможете приблизительно упорядочить входные переменные по степени важности.
Дата добавления: 2015-11-30; просмотров: 42 | Нарушение авторских прав