МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Чувашский государственный университет имени И.Н. Ульянова Нейронные сети в MS Excel Методические указания к практическим занятиям и лабораторным работам Чебоксары 2004 УДК 004.670.322.6 (075.8) Составитель В.Х. Федотов Нейронные сети в MS Excel: Метод. указания к практ. занятиям и лаб. работам / Сост. В. Х. Федотов; Чуваш. ун-т. Чебоксары, 2004. 72 с. Содержат описание Excel-надстройки для нейросетевого моделирования Excel Neural Package. Приводятся подробные примеры ее использования для решения экономических задач с использованием двух базовых парадигм нейронных сетей – многослойного персептрона и сетей Кохонена. Для студентов III-V курсов, обучающихся по специальностям «Менеджмент», «Финансы и кредит», «Математические методы в экономике». Отв. редактор доцент И.М. Петров Утверждено Методическим советом университета 2 Характеристика пакета Excel Neural Package Семейство продуктов Excel Neural Package (компания «НейроОК») дополняет пакет MS Excel алгоритмами обработки данных, использующими технологии нейронных сетей. Реализовано как набор надстроек (add-ins) над Excel и состоит из следующих компонент: Winnet - программа-эмулятор нейросети для построения нелинейных моделей, обобщающих эмпирические данные. Инструмент статистического прогнозирования. Kohonen Map - программа построения самоорганизующихся карт Кохонена. Инструмент графического анализа многомерных данных. Demo Examples – файлы демонстрационных примеров. Times Series – программа анализа финансовых рядов. Winnet Winnet программно реализует распространенную архитектуру нейронной сети - многослойный персептрон. Предназначен для поиска скрытых зависимостей в больших массивах численной информации, для которых в явном виде аналитические зависимости не известны. Основные характеристики Winnet 3.0 Параметр Максимальное число строк Максимальное число столбцов Входное преобразование Выявление релевантных переменных до обучения сети Число слоев нейронной сети Число нейронов в слое Переходные функции Изменение цветовой палитры Алгоритмы обучения Комментарий 65536 (ограничение Excel ) 256 (ограничение Excel ) Линейное, сигмоидальное Энтропийный анализ - алгоритм Boxcounting До 5 Зависит от объема памяти Линейная, гиперболический тангенс Улучшение наглядности Адаптивный выбор параметров обучения Rpropagation. Подключаются как внешние модули 3 Winnet имеет следующий набор средств контроля за обучением: • Графики ошибок обучения, обобщения и диаграмм рассеяния. • Диаграммы отклика «реальное значение - предсказанное нейросетью» для каждого выхода нейронной сети. • Возможности настройки параметров тестового множества. • Остановка обучения по различным критериям останова. Kohonen Map Kohonen Map представляет собой программный инструмент для построения и анализа информации с помощью алгоритма самоорганизующихся карт Кохонена. Основные применения задачи кластеризации и визуализации многомерной информации. Пользователь может представить весь массив данных в виде двумерной цветной карты и визуализировать на ней интересующие его характеристики. Карта «раскрашивается» по любому интересующему параметру и строится по специальному алгоритму, сохраняющему локальную близость данных: точки, близкие на карте, будут близки и в исходном многомерном пространстве. (Обратное, вообще говоря, неверно!) Основные характеристики Kohonen Map 1.0 Параметр Входное преобразование Понижение размерности Размер карты Кохонена Число градаций цвета Изменение цветов Поиск по карте Комментарий Линейное, сигмоидальное, нормировка Метод главных компонент (Principal Components Analysis) Ограничен объемом свободной памяти От 2 до 10 Улучшение наглядности Быстрое нахождение положения на карте и просмотр ячеек карты Demo Examples - демонстрационные примеры К пакету прилагаются демонстрационные файлы. 1. «НейроРиэлтер» - прогноз стоимости жилья в Москве. 4 2. «Эксперт 200» - кластерный анализ предприятий, входивших в рейтинг журнала «Эксперт». 3. «Нефтяная отрасль» - определение недооценки акций нефтяных предприятий по фундаментальным параметрам. 4. «Биржа» – биржевой день фьючерсных торгов. Эти примеры только демонстрируют общие подходы. Можно добиться лучших результатов, самостоятельно обучая новые варианты нейросетей, используя другие представления данных и способы их предобработки. НейроРиэлтер НейроРиэлтер - это нейросеть, натренированная более чем на полутора тысячах предложений по продаже квартир в Москве, взятых из базы данных риэлтерского агентства «МИАН». Нейроцена квартиры обобщает имеющиеся данные, предлагая средневзвешенную рыночную цену предложения на момент составления базы. НейроРиэлтер хорошо подходит для определения цены типичных квартир, близких по параметрам к имеющимся в базе данных. Демонстрационные файлы в поддиректории …\Realtor: Realtor.xls – файл данных; Real5.wnp и Real9.wnp – файлы проектов многослойного персептрона с 5 и 9 нейронами в скрытом слое соответственно. Для загрузки демонстрационного файла проекта нейросети из файла Realtor.xls, лист Realtor, необходимо после запуска Winnet в окне Select data source задать параметры: колонки (В-M), первая строка (4), последняя строка (1725), использовать первую строку в качестве имен входов (Включено). В качестве примеров приведены два проекта нейросети. Оба имеют 11 входов, 5 и 9 нейронов в скрытом слое. Результаты обучения приведены в столбцах О и R соответственно. В столбцах P и S для оценки погрешности предсказания посчитаны относительные ошибки. Эксперт 200 Пример демонстрирует общий подход к решению задачи кластеризации: как можно разделить имеющиеся данные на 5 группы с учетом нескольких факторов. В пример включены предприятия, входившие в рейтинг журнала «Эксперт». Демонстрационные файлы в поддиректории …\Expert200: Indicator97.xls – файл данных; Pr97_3x3.kmp и Pr97_10x10.kmp – файлы проектов сетей Кохонена. Для загрузки файла проекта сети Кохонена задаются следующие параметры: колонки (D,K-N), начальная строка (5), конечная строка (191), использовать первую строку как названия столбцов (Включено), использовать данные в первом столбце как идентификатор (Включено). Для обучения сети были использованы 4 параметра, объединенных под общим названием Индикаторы. Результаты для двух проектов (сети 3х3 =9 кластеров и 10х10 =100 кластеров) приведены в столбцах O-P и Q-R. Просмотр и анализ результатов можно проводить как встроенными в Kohonen Map средствами, так и средствами MS Excel. Нефтяная отрасль Пример прикладного применения нейросетей к финансовому анализу - оценка недооцененности акций нефтяных компаний по параметрам фундаментального анализа их производственной деятельности. Демонстрационные файлы в поддиректории …\Oil: Oil.xls – файл данных; Oil2x3x1.wnp и Oil5x1.wnp – файлы проектов нейросетей. Для загрузки файла проекта нейросети задаются следующие параметры: колонки (C-H), начальная строка (5), конечная строка (36), использовать первую строку как названия столбцов (Включено). В качестве примеров для сравнения приведены два проекта нейросети. Первый, с 5 входами и 1 выходом без скрытого слоя, пример реализации линейной модели. Второй пример с использованием данных о наиболее значимых входах имеет 2 входа, 3 нейрона в скрытом слое и 1 выход. В качестве входов использовались предобработанные данные о производственных и финансовых результатах эмитентов за год – Индикаторы, приведенные в столбцах C-G. В качестве выхода использовалась Оцененность компании, равная отношению капитализации к общему объему реализации. 6 Результаты прогноза нейросетей приведены в столбцах I–L. Если учесть аппроксимационные свойства нейросети, то можно трактовать полученную для каждой компании Оцененность как «истинную», полученную при анализе оцененностей всех компаний отрасли, а «ошибку» трактовать как отличие текущей оценки рынком стоимости акций компании от «истинной». Соответственно, если текущая оцененность сильно превосходит «истинную», то можно говорить о переоцененности акций и, следовательно, об ожидании снижения цен на акции. И наоборот, если текущая оцененность значительно меньше «истинной», то можно говорить о недооцененности акций и, следовательно, об ожидании повышения цен. Биржа Биржа – биржевой день фьючерсных торгов. Пример применения нейросетей к анализу и предсказанию поведения фондового рынка. Использованы поминутные данные за 7 часов биржевых торгов (с 11 часов 15 минут до 18 часов 15 минут) – всего 420 обучающих образцов за один день (26 ноября) биржевых торгов. Предсказывалось возможное изменение курса ценной бумаги на следующую минуту. Демонстрационные файлы в поддиректории …\Lkoh: 971126.xls – файл данных; lkoh.wnp – файл проекта нейросети. Для загрузки файла проекта задаются следующие параметры: колонки (B-U), начальная строка (5), конечная строка (424), использовать первую строку как названия столбцов (Включено). Результаты прогноза приведены на Листе 2 в столбце АН. Работа с пакетом Excel Neural Package Установка пакета 1. Создайте папку для работы. Пример: C:\Program\Office\ ENP. 2. Скопируйте в эту папку все файлы из директории …\Neural tools package. 3. Запустите MS Excel. 4. Выберите команду Меню/Сервис/Надстройки. В окне Надстройки нажмите кнопку Обзор. В открывшемся окне 7 Обзор выберите в созданной папке файл NPackage.xla и нажмите ОК. 5. В окне Надстройки в списке доступных надстроек появится новый пункт Neural tools Package. Проверьте, что он выбран. Нажмите ОК. 6. В левом верхнем углу экрана появится панель Neural Analysis, на которой расположены кнопки доступных нейроинструментов. Перетащите мышкой панель в любое удобное место экрана. 7. Возможны два варианта работы - вы впервые работаете с данными или обученная ранее сеть используется для работы с новыми данными. Winnet – многослойный персептрон Программа реализует классическую нейросетевую архитектуру многослойного персептрона. Для обучения используются модификации алгоритма обратного распространения ошибки – Backpropagation Algorithm или коротко - BackProp. Первый этап – обучение персептрона Это первый вариант работы с системой. На этом этапе происходит обучение нейросети на нашем наборе данных. В результате сеть должна построить аппроксимацию многомерных данных с заданной нами точностью, автоматически подбирая свои внутренние параметры - веса нейронов («черный нейроящик»). Для этого необходимо: • Загрузить исходные данные в Excel любым способом. • Запустить надстройку Excel Winnet. • Определить данные: что является входной информацией, а что – выходной. • Предобработать данные – осуществить их нормировку. • Попутно можно оценить значимость различных входов для выходной информации и, если необходимо, изменить (удалить/добавить) входы. • Создать нейросеть. 8 • Обучить нейросеть на учебном множестве и оценить работу на тестовом множестве. • Сохранить предсказанные данные в книге Excel. • Если необходимо, сохранить обученную нейросеть. • Закрыть Winnet. Второй этап – дообучение и прогнозирование персептрона Это второй вариант работы с системой. В этом случае обученная на первом этапе работы нейросеть может использоваться для дообучения (повторного обучения с модифицированными параметрами) или, что более важно - для прогнозирования (получения новых данных). При этом данные должны иметь такой же формат, какой использовался на первом этапе в процессе обучения. Схема работы: • Загрузить данные в Excel. • Запустить Winnet. • Загрузить созданный ранее проект. • Выполнить необходимые действия с сетью средствами Winnet. • Сохранить новые данные в книге Excel. • Сохранить измененный проект. • Завершить сеанс работы. Kohonen Map – самоорганизующаяся карта Сети Кохонена используются для решения задач кластеризации по заданным критериям (классификация, группировка, представительная выборка и др.). В литературе они получили красивое альтернативное название – самоорганизующиеся карты Кохонена. Данная программа реализует архитектуру такой сети. Первый этап – обучение нейросети Кохонена На этом этапе необходимо: • Загрузить данные в Excel любым способом и запустить Kohonen Map. • Определить входы, необходимые для работы сети Кохонена кластеризации. • Предобработать данные – осуществить их нормировку. 9 • При желании - выбрать нужное число главных компонент. • Создать и обучить сеть Кохонена. • Провести анализ многомерных данных средствами Kohonen Map. • Сохранить обработанные данные и рисунки в книге Excel. • Если необходимо, сохранить обученную нейросеть. • Выйти из Kohonen Map. Второй этап – дообучение и прогнозирование На этом этапе созданная ранее и сохраненная модель используется для анализа новых или обновленных данных. Последовательность действий: • Загрузить данные в систему и запустить Kohonen Map. • Загрузить созданный ранее проект. • Провести анализ результатов встроенными средствами Kohonen Map. • При необходимости сохранить данные в книге Excel. • Сохранить нейросеть (при необходимости) и выйти из Kohonen Map. Нейромодель «Вавилон» Задача «Инфляция-производство» Вавилон - это нейросетевая модель типа «инфляцияпроизводство», использующая для обучения выборку из 32 поквартальных данных за 1995-2002 годы, сформированных на основе бухгалтерской отчетности ООО «Вавилон» (г. Чебоксары). Задача – с помощью пакета Excel Neural Package построить сеть на основе архитектуры многослойного перспетрона, анализирующую наши данные и формирующую связь между показателями экономического роста данного предприятия (входы модели) х1 х2 Выручка Себестоимость х3 х4 х5 Прибыль от Балансовая Стоим. осн. реализации прибыль фондов 10 х6 х7 Рентаб. общая Рентаб. собственная и уровнем инфляции (выход модели), оцениваемом через поквартальный индекс потребительских цен в Чувашии (ИПЦ). Модель будет использоваться для прогнозирования развития данного предприятия на будущие периоды времени (кварталы). Алгоритм 1. Персептрон «4-3-1» 1. Разместим исходные данные на листе книги Excel, например, так. В первой и второй строках запишем условные и полные названия колонок, а с 3-й по 34-ю – сами данные. A B C 1 D I E х1 F х2 G х3 ИПЦ Выручка Себестоимость H х4 I х5 J х6 K х7 3 1995 1 1 132,2 201840 При- Балан- Стоим. быль совая основот приных реализ быль фондов 200120 1720 1906 156120 … 1995 2 2 130,3 206151 204134 2017 2102 188200 1,1 4,3 1995 3 3 126,6 248842 245620 3222 2117 190264 1,1 4,3 1995 4 4 115,4 243189 240136 2940 1084 202404 0,5 1,8 1996 1 5 107,3 440531 400111 40420 30245 755344 4 19,5 1996 2 6 105,6 484255 422133 62122 36780 880112 4,2 20,4 1996 3 7 105,7 508470 445050 63420 45246 814466 5,6 27,1 1996 4 8 104,5 554502 484438 67918 52047 915842 5,7 28,2 1997 1 9 104 552753 522333 30420 41222 2015612 2 12,8 1997 2 10 103,5 564299 522177 42122 46780 2055388 2,3 14,2 1997 3 11 103,3 675642 632222 43420 43444 2091426 2,1 13 1997 4 12 100,5 700213 637123 48678 39395 2163830 1,8 11,3 1998 1 13 107,6 1272210 1229765 42445 78236 1461204 5,4 21 1998 2 14 109,5 1493449 1432173 61276 76883 1582006 4,9 19,1 1998 3 15 120,8 1858141 1792262 65879 73245 1902642 3,8 15,1 1998 4 16 118 2029936 1941401 74123 60158 1928648 3,1 10,7 1999 1 17 113,2 2931555 2529111 402444 367200 7156120 5,1 22,6 1999 2 18 111,4 3333699 2932444 401255 375400 7388200 5,1 22,4 1999 3 19 111,7 4148223 3732344 415879 386250 7614264 5,1 22,4 1999 4 20 100,2 4229238 3821512 393314 429608 7842968 5,5 24,2 2000 1 21 105,1 4812096 4440203 582420 486620 10156144 4,8 20,6 2000 2 22 105,6 5513465 4532222 581111 532300 10188248 5,2 22,4 2 Год Квар № тал 11 Рен- Рентаб. таб. об- собстщая венная 1,2 4,7 2000 3 23 Прибыль от реализ 106,1 5757577 4511107 625233 2000 4 24 107,2 6562879 4633225 655719 652725 10233682 6,4 27,4 2001 1 25 106,1 10433333 4742424 690234 686111 10156144 6,8 22,1 2001 2 26 105 10462269 4755577 703846 702300 10188248 6,9 22,4 2001 3 27 103,4 10400553 4727524 710246 708100 10114246 7 25,4 2001 4 28 103,3 10609859 4822663 724964 712725 14294322 5 26,2 2002 1 29 103,9 10625287 4829676 721400 712344 10156144 7 22,6 Год Квар № тал ИПЦ Выручка Себестоимость Балан- Стоим. совая основприных быль фондов 588100 10114246 Рен- Рентаб. таб. об- собстщая венная 5,8 25 2002 2 30 103,8 10631179 4832354 736800 732106 10188248 7,2 22,5 33 2002 3 31 103,8 10631157 4832344 740277 738212 10114246 7,3 25,1 34 2002 4 32 103,7 10984046 4992748 764333 752566 22440110 3,4 25,2 2. Нажмем кнопку Нейроэмулятор на панели инструментов Neural Analysis. В появившемся диалоговом окне Select data source опишем размещение нашей таблицы. В поле «Использовать первую колонку для обозначения имен» (Use first row as column name) поставим галочку. Нажимаем ОК. 3. Откроется основное окно Winnet - эмулятора многослойного персептрона. Окно содержит 4 вкладки Data, Network, Training и Output, отражающие все этапы работы с нейросетью. Выберем вкладку Data, предназначенную для выполнения первого этапа работы с сетью - определения и пре/постпроцессирования данных. 12 4. Определим входы с помощью кнопки Select Inputs. В окне All Data увидим полный список из 8 параметров нашей модели. Выберем в качестве входных последние 7. Для этого выполним, например команду Select All, которая перенесет все параметры в окно Inputs. Затем вернем «лишний» параметр ИПЦ назад в окно All Data кнопкой корректировки < . Полученный результат показан ниже. 13 5. Выполним препроцессирование входных данных с помощью кнопки Normalization. Этот шаг позволяет избавиться от лишних вычислительных проблем за счет выравнивания диапазонов переменных. Выберем, например, вариант Mean/Variance, при котором данные переводятся в безразмерную форму вычитанием среднего и нормированием на их дисперсию. Нажимаем ОК. Теперь все входы становятся сравнимыми по порядку величины. Как видно, имеются и другие способы препроцессирования данных – линейная нормализация ((-1,+1) normalization) и нелинейное преобразование биполярным сигмоидом гиперболическим тангенсом thx=(e2x–1)/(e2x+1) (than14 normalization) к диапазону [-1,+1]. Вернемся в окно Select Inputs с помощью кнопки ОК. 6. Далее с помощью кнопки Select Outputs аналогично предыдущим пунктам выбираем выходной параметр - ИПЦ и нормализуем его с помощью Mean/Variance. Результат: 7. Определим значимость входных параметров. Нажмем кнопку Boxcounting, и система самостоятельно, используя новейший алгоритм Boxcounting, определит статистическую значимость входов для заданных выходов. В окне Boxcounting results в графическом виде мы увидим, что наиболее значимыми параметрами являются х2 и х6 (≈0,4 и 0,3 соответственно), а значимость параметров х1 и х5 – близка к нулю и они несущественны с точки зрения влияния на результирующую переменную. Остальные переменные занимают промежуточное положение по значимости. Внизу показываются значения параметров нормализации: Среднее(Mean predictability) =0,095 и Дисперсия(Variance) = =0,109. Чем больше их отношение отличается от 1, тем лучше предсказательная сила соответствующей модели. Вычислим отношение Среднее/Дисперсия ≈0,87. Как видно, оно близко к единице, т.е. предсказательная сила данной сети невысока. Уменьшение количества входов позволяет сократить время обучения нейросети или дает возможность увеличить ее нелинейные свойства. Поэтому вернемся в основное окно и удалим незначимые входы х1 и х5 из списка Inputs. 15 8. Процедуру по определению значимости входов можно и нужно повторить столько раз, сколько нужно. Так, выполним ее еще один раз, вновь выполняя команду Boxcounting. Параметры нормализации изменились: среднее возросло, дисперсия осталась прежней. Отношение Среднее/Дисперсия = =0,137/0,109 ≈1,26 стало дальше от единицы, т.е. предсказательная сила модели стала лучше. Исключим и последнюю переменную. 16 Параметры нормализации вновь изменились: среднее уменьшилось, отношение Среднее/Дисперсия =0,062/0,109 ≈0,57 стало еще дальше от единицы, а предсказательная сила модели стала еще лучше. Этот процесс можно было бы продолжить и дальше (исключить третий и, возможно, второй столбцы), но мы на этом пока остановимся. Получившаяся схема входов-выходов примет вид: 17 9. Теперь создадим простую двухслойную нейросеть (с одним скрытым слоем) и архитектурой «4-3-1». Перейдем на закладку Network и выполним команду Create Net. В окне Network Constructor определим структуру сети: − число слоев без входного (Number of layer) =2; − число входов (Number of inputs) =4; − число нейронов в 1-м слое (Layer1, neurons) =3; − порядок нелинейности первого слоя (order) =1; − тип выходной функции первого слоя (function) = tanh; − число нейронов во втором слое (neurons) =1; − порядок нелинейности второго слоя (order) =1; − тип выходной функции 2-го слоя (function) = linear. Подтверждаем выбор нажатием ОК и возвращаемся в исходное окно, где конфигурация сети «4-3-1» будет отражена графически. На практике редко используется архитектура нейросети с количеством скрытых слоев более одного. Нелинейность нейросети определяется количеством нейронов в этом скрытом слое. Использовать порядок нелинейности нейрона больше 1 рекомендуется только квалифицированным пользователям. 18 При создании нейросети следует также учитывать, что общее число связей сети (весов) должно быть в несколько раз или даже на порядок меньше объема обучающей выборки. Это обеспечит достаточно гладкую аппроксимацию данных. В противном случае нейросеть просто «переобучится», т.е. запомнит данные, потеряв возможность делать статистически значимые предсказания на новых данных. В нашем примере имеется 15 связей, а объем выборки равен 32. Таким образом, необходимое условие успешного обучения формально выполняется (32 больше, чем 15, в 2 с лишним раза), но для получения заведомо более качественного результата имеется 2 варианта - увеличение числа примеров до 150 (и более) или уменьшение числа связей до 3-5. Первый путь реализуется легко введением достаточного числа дополнительных обучающих примеров. Второй вариант интереснее, и он может быть реализован разными способами. Например, сокращением числа входов до двух и уменьшением числа нейронов в промежуточном слое до двух. Тогда получится сеть типа «2-2-1» с пятью связями и т.д. Однако дальше мы продолжим работу с сетью вида «4-3-1». 10. Начнем подготовку к обучению сети. Перейдем на следующую закладку Training. 19 Перед обучением надо задать тестовое множество из всей совокупности обучающих примеров. Примеры из этого множества не будут участвовать в обучении. На них будут строиться оценки предсказательных свойств обученной сети. Нажмем кнопку Edit test set. В открывшемся окне зададим размер тестовой выборки (Number of test examples) =0, а ее характер установим в режим случайной выборки (Random test set). Как правило, число примеров в тестовой выборке составляет 20-30% и не менее нескольких десятков. Однако с учетом малости нашей выборки мы выбрали это число равным нулю. Поэтому тестовые примеры придется, возможно, добавить позже. Характер обучающей выборки установлен Random, так как для задач аппроксимации наиболее естественным является случайный выбор тестового множества. Отдельная опция Random+Last examples полезна для прогнозирования временных рядов. При этом последние примеры всегда исключаются из обучения и являются прогнозом. Подтвердим выбранные настройки нажатием кнопки ОК и вернемся в основное окно. 20 11. Приступим непосредственно к обучению. Нажмем кнопку Start training. За ходом обучения сети можно наблюдать по изменению параметров в области Информация об обучении (Training Info), показанной в правом нижнем углу следующего рисунка. Ждем, пока процесс обучения остановится сам или прерываем его искусственно кнопкой Остановить обучение (Stop Training). 21 Процесс обучения остановился сам. Как видно, на данный момент прошло 9336 эпох (Epoches), и текущая ошибка обучения (Training error) составляет 0,2. Заметим, что у вас могут получиться другие результаты. Это объясняется тем, что начальные значения весов выбираются случайным образом, хотя реализованный в программе механизм выбора случайных чисел фиксированный. В данном случае сработал один из критериев остановки обучения. Посмотрим их с помощью команды Критерии остановки (Stopping criteria). Как видно, процесс обучения остановился по достижении требуемой точности обучения равной 0,2, а максимальное число эпох равное 10 000 не было достигнуто. В этом окне можно изменять критерии остановки обучения, например – подбором. Однако на результаты обучения влияют и другие параметры. За ходом обучения можно наблюдать и в графическом виде в окнах, вызываемых нажатием клавиш в области Graphs. Выберем окно История обучения (Errors History). Эта диаграмма показывает, что ошибка обучения стабилизировалась уже в районе 1000-й эпохи. Следовательно, можно ослабить критерий точности. Желательно остановить 22 процесс обучения в момент, когда ошибки обучения и обобщения начнут сильно расходиться. Это сигнализирует о начале режима «переобучения». Результаты обучения можно визуально оценить и на графике Network answers. Соответствующее окно показано ниже (зеленая линия с точками показывает отклик сети, а оранжевая – реальные данные). Можно управлять параметрами процесса обучения, что рекомендуется только квалифицированным пользователям. Например, командой Randomize sinapses можно изменить начальные значения весов сети. При этом выдается окно Randomization, которое позволяет перемешать веса сети и выбрать их новые начальные значения, а также добавить так называемый «шум». Все эти настройки могут оказать существенное влияние на работу сети, вплоть до потери устойчивости и сходимости. В окне Randomization имеется два варианта реализации алгоритма обучения – без шума и с шумом. В первом варианте (Randomize synapses) начальные веса сети выбираются случайным образом в заданном интервале. Верхняя граница 23 интервала определяется пользователем в окошечке Ввода весов (Enter range). Как видно, по умолчанию эта граница выбрана равной 0,5, что соответствует интервалу [-0,5,+0,5]. Это число можно изменить, однако рекомендуется оставаться в диапазоне [-1,+1]. В частности, в нашем примере уменьшение этого значения до 0,35 приводило к ускорению процесса обучения. Обратим внимание на то, что нажатие кнопки ОК приводит к инициализации начальных значений весов по алгоритму случайных чисел. Поэтому для воспроизводимости результатов обучения рекомендуется перед началом каждого обучения выполнять процедуру рандомизации - команду Randomize synapses и ОК. При этом простое закрытие окна (× или Cancel) приведет к использованию в качестве начальных значений весов, полученных в предыдущем цикле обучения. Если сеть имеет слишком много элементов, то она может запомнить весь учебный набор. В нашем примере ресурсами сети «4-3-1» являются восемь вершин, в т.ч. 3 «скрытых» и 15 связей, в т.ч. 12 – в первом слое. Число учебных образцов равно 32, т.е. больше числа даже всех, а не только скрытых ресурсов сети. Поэтому в данном случае сеть не может механически запомнить все учебные образцы, для запоминания которых требуется 12х5= =60 элементов. Такие возможности могут быть заведомо реализованы, например, сетью с 60:4 =15 скрытыми элементами в промежуточном слое. Однако и при меньшем числе элементов «переобучение» не исключено. Добавление шума к синапсам (Add noise to sinapses) как раз и служит для борьбы с эффектом переобучения. Добавление случайной доли (до 10%) шума к учебным образцам позволяет снизить вероятность запоминания исходных данных. При этом важно, чтобы шум добавлялся к исходному (немодифицированному) набору данных. Иначе эти данные могут «поплыть», т.е. перестать соответствовать первоначальным закономерностям. Блок выбора алгоритма обучения позволяет изменить стандартный алгоритм обратного распространения на его адаптивный вариант (Select algorithm) и/или отредактировать управляющие параметры выбранного алгоритма (Edit current algorithm). 24 По умолчанию выбраны следующие значения. Начальная ошибка элементов (Initial delta) =0,1, может варьироваться в интервале [0,10]. Минимальная ошибка (Minimal delta) =1⋅10-8, может варьироваться в интервале [0,1]. Максимальная ошибка (Maximal delta) =10, может варьироваться в интервале [0,100]. Шаг снижения Nu(-) =0,5, может варьироваться в интервале [0,1]. Шаг повышения Nu(+) =1,2, может варьироваться в интервале [0,10]. Эти параметры следует регулировать осторожно и только квалифицированным пользователям. 12. Обучение закончено. Теперь можно выполнить еще один этап работы с сетью - экспортировать результаты работы сети назад в книгу Excel. Для этого перейдем на последнюю закладку Вывод (Output). Она содержит 2 блока параметров и одну кнопку управления сохранением: − блок Опции вывода (Output options) служит для выбора одного из двух следующих режимов: Вывод только отклика сети (Output only network answer) или Вывод всех данных (Output all data), т.е. и отклика и исходной информации; − блок Место вывода (Output place) служит для выбора одного из двух вариантов места сохранения результатов работы сети: текущий лист (Use active Excel Worksheet) или выбранный лист выбранной книги (Select Workbook/Worksheet). Дополнительно имеется возможность уточнить левую верхнюю ячейку диапазона вывода на выбранном листе (Left upper cell of output), которая по умолчанию принимается равной А1. Выбранные в нашем примере параметры обеспечивают сохранение только результатов работы нейросети в указанной книге на листе Нейро_Вавилон.xls в блоке ячеек, начинающемся с клетки L2. 25 Выполним команду Output. Получим следующую таблицу: A 1 2 3 B C D I E х1 F х2 G х3 H х4 Кв ВыручГод ар № ИПЦ ка та л 1995 1 1 132,2 201840 Себестоимость 1995 2 2 130,3 206151 204134 2017 2102 1995 3 3 126,6 248842 245620 3222 2117 1995 4 4 115,4 243189 240136 2940 1996 1 5 107,3 440531 1996 2 6 105,6 484255 1996 3 7 105,7 1996 4 8 104,5 1997 1 9 Прибыль от реализ 200120 1720 I х5 Балан- Стоим. совая основприных быль фондов 1906 156120 J х6 K х7 L Рентаб общая 1,2 Рентаб. ИПЦ собств 4,7 130,79 188200 1,1 4,3 129,64 190264 1,1 4,3 128,05 1084 202404 0,5 1,8 115,52 400111 40420 30245 755344 4 19,5 105,81 422133 62122 36780 880112 4,2 20,4 105,80 508470 445050 63420 45246 814466 5,6 27,1 105,64 554502 484438 67918 52047 915842 5,7 28,2 105,65 104 552753 522333 30420 41222 2015612 2 12,8 104,04 1997 2 10 103,5 564299 522177 42122 46780 2055388 2,3 14,2 104,34 1997 3 11 103,3 675642 632222 43420 43444 2091426 2,1 1997 4 12 100,5 700213 637123 48678 39395 2163830 1,8 11,3 101,56 1998 1 13 107,6 1272210 1229765 42445 78236 1461204 5,4 1998 2 14 109,5 1493449 1432173 61276 76883 1582006 4,9 19,1 110,04 26 13 101,90 21 107,25 Кв ВыручСебеГод ар № ИПЦ ка стоита мость л 1998 3 15 120,8 1858141 1792262 33 34 Прибыль от реализ 65879 Балан- Стоим. совая основприных быль фондов 73245 1902642 Рентаб общая 3,8 Рентаб. ИПЦ собств 15,1 120,60 1998 4 16 118 2029936 1941401 74123 60158 1928648 3,1 10,7 118,12 1999 1 17 113,2 2931555 2529111 402444 367200 7156120 5,1 22,6 113,09 1999 2 18 111,4 3333699 2932444 401255 375400 7388200 5,1 22,4 111,46 1999 3 19 111,7 4148223 3732344 415879 386250 7614264 5,1 22,4 106,47 1999 4 20 100,2 4229238 3821512 393314 429608 7842968 5,5 24,2 105,58 2000 1 21 105,1 4812096 4440203 582420 486620 10156144 4,8 20,6 104,72 2000 2 22 105,6 5513465 4532222 581111 532300 10188248 5,2 22,4 104,68 2000 3 23 106,1 5757577 4511107 625233 588100 10114246 5,8 2000 4 24 107,2 6562879 4633225 655719 652725 10233682 6,4 27,4 104,67 2001 1 25 106,1 10433333 4742424 690234 686111 10156144 6,8 22,1 104,75 2001 2 26 105 10462269 4755577 703846 702300 10188248 6,9 22,4 104,73 2001 3 27 103,4 10400553 4727524 710246 708100 10114246 7 25,4 104,76 2001 4 28 103,3 10609859 4822663 724964 712725 14294322 5 26,2 104,61 2002 1 29 103,9 10625287 4829676 721400 712344 10156144 7 22,6 104,76 2002 2 30 103,8 10631179 4832354 736800 732106 10188248 7,2 22,5 104,78 2002 3 31 103,8 10631157 4832344 740277 738212 10114246 7,3 25,1 104,82 2002 4 32 103,7 10984046 4992748 764333 752566 22440110 3,4 25,2 104,66 25 104,70 Выбор второго режима вывода - Вывод всех данных (Output all data) приводит к формированию более информативной таблицы, содержащей все включенные в модель данные и не включающей неиспользуемые данные. A 1 2 3 B C D E СебеПрибыль от Балансовая Рентабельстоимость реализации прибыль ность общая (Input) (Input) (Input) (Input) F ИПЦ ИПЦ (Output) (Predicted) 200120 1720 1906 1,2 132,2 130,79 204134 2017 2102 1,1 130,3 129,64 245620 3222 2117 1,1 126,6 128,05 240136 2940 1084 0,5 115,4 115,52 400111 40420 30245 4 107,3 105,81 422133 62122 36780 4,2 105,6 105,80 445050 484438 522333 522177 63420 67918 30420 42122 45246 52047 41222 46780 5,6 5,7 2 2,3 105,7 104,5 104 103,5 105,64 105,65 104,04 104,34 27 СебеПрибыль от Балансовая Рентабельстоимость реализации прибыль ность общая (Input) (Input) (Input) (Input) 32 33 632222 637123 1229765 1432173 1792262 1941401 2529111 2932444 3732344 3821512 4440203 4532222 4511107 4633225 4742424 4755577 4727524 4822663 4829676 4832354 4832344 4992748 43420 48678 42445 61276 65879 74123 402444 401255 415879 393314 582420 581111 625233 655719 690234 703846 710246 724964 721400 736800 740277 764333 43444 39395 78236 76883 73245 60158 367200 375400 386250 429608 486620 532300 588100 652725 686111 702300 708100 712725 712344 732106 738212 752566 2,1 1,8 5,4 4,9 3,8 3,1 5,1 5,1 5,1 5,5 4,8 5,2 5,8 6,4 6,8 6,9 7 5 7 7,2 7,3 3,4 ИПЦ ИПЦ (Output) (Predicted) 103,3 100,5 107,6 109,5 120,8 118 113,2 111,4 111,7 100,2 105,1 105,6 106,1 107,2 106,1 105 103,4 103,3 103,9 103,8 103,8 103,7 101,90 101,56 107,25 110,04 120,60 118,12 113,09 111,46 106,47 105,58 104,72 104,68 104,70 104,67 104,75 104,73 104,76 104,61 104,76 104,78 104,82 104,66 13. И, наконец, сохраним наш нейропроект с результатами работы командой Save Project, расположенной на вкладке Data. На запрос имени файла проекта ответим – Vavilon.wnp. Предварительно, конечно, нужно выбрать папку для его размещения. 14. Можно теперь закрыть окно программы Winnet. Дальнейший анализ полученных результатов будем проводить стандартными статистическими методами в Excel. Найдем уравнение нейрорегрессии и ошибку прогноза: ИПЦ(н)=117,81+1,70⋅10-6х2-3,003⋅10-5х3+1,76ּ10-5х4-1,99х6, где: х2 - себестоимость, х3 -прибыль от реализации, х4 - балансовая прибыль, х6 - общая рентабельность. Для сравнения приведем и уравнение обычной регрессии: ИПЦ(о)=117,59+1,96⋅10-6х2-4,79⋅10-6х3-1,022⋅10-5х4-1,960х6. Соответствующая статистика приведена в таблице. 28 Нейростатистический показатель Число обучающих примеров, n Число независимых переменных, k Общая нейроошибка, Σ(yнейро - yсредн ) Ошибка регрессии, Σ(yрасч - yсредн ) 2 Остаток, Σe(t)2=Σ(yнейро -yсредн ) 2- Σ(yрасч -yсредн ) 2 Коэф. детерминации, R2=1-Σe(t) 2/ Σ(yнейро–yсредн ) 2) Коэффициент множественной корреляции, R=√ R 2 Скорректированный Rкор 2 =1-(1- R 2)(n-1)/(n-k-1) Стандартная ошибка MS регрессии, Σ(yрасч -yсредн ) 2/k MS остатка, Σe(t)2/(n-k-1) Критерий Фишера, F = (R 2/k)/((1- R 2 )(n-k-1)) Значимость критерия Фишера Значение 32 4 1983,74 648,12 1335,62 0,33 0,57 0,23 7,03 162,03 49,47 3,28 0,03 Табличное значение критерия Фишера при доверительной вероятности 0,95, ν1 =k =4, ν2 =n-k-1 =27 составляет 2,73. Поскольку Fрасч =3,28> Fтабл =2,73, то уравнение регрессии можно считать адекватным. Для оценки независимости рассчитаем критерий ДарбинаУотсона: d=Σ(e(t)-e(t-1))2 / Σe(t)2 =1,41777E-05. В качестве критических табличных уровней при n =32 и k =4 для уровня значимости 5% возьмем значения di=1,18 и du=1,73. Расчетное значение не попало в интервал, т.е. оценки можно считать независимыми. В следующей таблице показан расчет коэффициентов уравнения нейрорегрессии и сопутствующая статистика Стьюдента (t-критерий): Переменная Коэффициент Стандартная Критерий регрессии ошибка Стьюдента ИПЦ-(Output) 117,81 3,42 34,42 Себестоимость 1,70129E-06 3,05E-06 0,5578 Прибыль от реализации -3,00265E-05 5,598E-05 -0,5363 Балансовая прибыль 1,75885E-05 5,599E-05 0,3141 Рентабельность общая -1,99 0,94 -2,12 Табличное значение критерия Стьюдента при уровне значимости 5% и степенях свободы 32-4-1 =27 составляет 2,052. Так как расчетное значение больше табличного только для последнего коэффициента (рентабельность), то только он может 29 рассматриваться как значимый. Остальные коэффициенты можно опустить. С учетом проведенного анализа результаты нейромоделирования могут быть записаны в виде приближенного уравнения нейрорегрессии (х6 - общая рентабельность): ИПЦ(нейро) ≈117,815-1,994х6. Общая оценка работы нейросети приведена в следующей таблице. Год Квар- № тал п/п 1995 1995 1995 1995 1996 1996 1996 1996 1997 1997 1997 1997 1998 1998 1998 1998 1999 1999 1999 1999 2000 2000 2000 2000 2001 2001 2001 2001 2002 2002 2002 2002 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ИПЦ (фактический) 132,20 130,30 126,60 115,40 107,30 105,60 105,70 104,50 104,00 103,50 103,30 100,50 107,60 109,50 120,80 118,00 113,20 111,40 111,70 100,20 105,10 105,60 106,10 107,20 106,10 105,00 103,40 103,30 103,90 103,80 103,80 103,70 ИПЦ (предсказанный нейросетью) 130,79 129,64 128,05 115,52 105,81 105,80 105,64 105,65 104,04 104,34 101,90 101,56 107,25 110,04 120,60 118,12 113,09 111,46 106,47 105,58 104,72 104,68 104,70 104,67 104,75 104,73 104,76 104,61 104,76 104,78 104,82 104,66 ОтносиИПЦ Относительная (расчет тельная ошибка по уравнению ошибка нейронейронейропрогноза, регрессии) регрессии, % % -0,01 115,42 -0,17 -0,01 115,62 -0,15 0,01 115,62 -0,11 0,00 116,82 0,01 -0,01 109,84 0,03 0,00 109,44 0,04 0,00 106,65 0,01 0,01 106,45 0,02 0,00 113,83 0,10 0,01 113,23 0,10 -0,01 113,63 0,10 0,01 114,23 0,14 0,00 107,05 -0,01 0,01 108,04 -0,01 0,00 110,24 -0,11 0,00 111,63 -0,06 0,00 107,65 -0,06 0,00 107,65 -0,04 -0,05 107,65 -0,04 0,05 106,85 0,07 0,00 108,24 0,03 -0,01 107,45 0,02 -0,01 106,25 0,00 -0,03 105,05 -0,02 -0,01 104,26 -0,02 0,00 104,06 -0,01 0,01 103,86 0,00 0,01 107,85 0,05 0,01 103,86 0,00 0,01 103,46 0,00 0,01 103,26 -0,01 0,01 111,04 0,07 Сумма квадратов ошибок = 0,01 30 0,15 Как видно из таблицы, результаты нейромоделирования хорошо аппроксимируют фактические данные и общая квадратичная ошибка составляет всего 0,01%. Приближенное уравнение регрессии, полученное на основе нейромоделирования, конечно, содержит большую ошибку, но тоже всего 0,15% (хуже в 15 раз). Графическая иллюстрация таблицы приведена ниже. ИПЦ Сравнение фактического уровня инфляции с нейропрогнозом 140 ИПЦ (Predicted) 130 ИПЦ(расч по ур.нейрорегр) ИПЦ,% 120 110 100 90 80 0 4 8 12 16 Кварталы 20 24 28 32 Новый сеанс работы с нейросетью Если нейросеть была создана в предыдущем сеансе работы с Excel, то сохраненный ранее проект можно использовать для работы с новыми данными. Эти данные обязательно должны иметь тот же формат, как и те, по которым сеть обучалась. Для этого предназначена кнопка Load Project (Загрузить проект) на вкладке Data. Вспомним, что наш нейропроект хранится в файле Vavilon.wnp, а Excel-таблица с исходными данными и результатами предыдущего моделирования в файле Vavilon.xls. Для загрузки файла проекта нейросети из файла Vavilon.xls необходимо вновь запустить программу Winnet и в окне Select data source восстановить прежние параметры диапазона данных для нейромоделирования. 31 Алгоритм 2. Повторное обучение персептрона «4-3-1» 1. Загрузим сохраненные ранее данные в Excel. Для этого откроем нашу книгу Vavilon.xls. 2. Загрузим созданный ранее проект. Нажмем кнопку Нейроэмулятор на панели инструментов Neural Analysis. В появившемся окне Select data source вновь укажем размещение нашей таблицы (количество и порядок столбцов новых данных обязательно должны совпадать с использованными при создании проекта и обучении нейросети). Столбцы, используемые в качестве выходов, можно занулить или игнорировать. Зададим: колонки =D-К, первая строка =2, последняя строка =34 и включим флажок Использовать первую строку в качестве имен входов. Нажимаем ОК. Замечание. Имеется и более быстрый способ загрузки проекта. Если перед загрузкой нейроэмулятора выделить диапазон с исходными данными на листе Excel, то после запуска нейроэмулятор автоматически заполнит параметры размещения наших исходных данных. 3. Загрузим созданный ранее проект. Для этого перейдем на вкладку Data и нажмем кнопку Load Project (Загрузить проект). В открывшемся окне выберем файл нашего проекта Vavilon.wnp и завершим загрузку командой Открыть. 4. Теперь мы можем продолжить работу с нейросетью аналогично тому, как это было проделано выше – в алгоритме 1. Например, перейдем на закладку Network и вновь увидим графическое изображение нейросети с архитектурой «4-3-1». Здесь мы делать ничего не будем. 5. Перейдем дальше на закладку Training, зададим прежние параметры обучения – критерий остановки по ошибке равной 0,2 (использовать критерии остановки) и начнем обучение – Start Training. 32 Просмотрим график ошибок. Видно, что стабилизация ошибки происходит в районе 7000-8000-й эпох, т.е. примерно так же, как и раньше. Отклик сети (Network answer) также подобен прежнему. 33 6. Перейдем на закладку Output, зададим параметры сохранения результатов в книге Excel так же, как это делалось раньше. 7. Сам нейропроект можно не сохранять, так как мы не вносили в него изменений. 8. Заканчиваем сеанс работы с нейросетью, закрывая окно программы Winnet. Модификация модели «Вавилон» На этом примере мы попытаемся более детально познакомиться с процессом обучения нейронной сети, особенно останавливаясь на тех моментах нейромоделирования, которые были мало затронуты в предыдущих примерах. Попытаемся улучшить качество нейромодели, уменьшая число связей за счет дальнейшего сокращения малозначащих входов. О том, что это возможно, уже упоминалось при рассмотрении алгоритма 1 (см. п.9). Алгоритм 3. Персептрон с архитектурой «2-3-1» 1. Вновь загрузим книгу Vavilon.xls с сохраненными ранее данными в Excel. 2. Вновь загрузим сохраненный файл проекта Vavilon.wnp с прежними параметрами расположения исходных данных. 3. Продолжим работу с нейросетью. Перейдем на закладку Data и выполним команду Boxcounting, чтобы просмотреть диаграмму значимости входов модели. 4. Видно, что входы 2 и 3 менее значимы. Удалим вначале вход 3. Как это делается, мы уже рассматривали в алгоритме 1. Посмотрим параметры нормализации. Они практически не изменились - среднее стало 0,063 (было 0,062). Поэтому удалим 34 и вход номер два. Вновь посмотрим параметры нормализации. Они опять почти не изменились - среднее стало 0,066. Это означает, что удаление этих двух входов практически не повлияет на прогностические свойства нейромодели. Однако новый вариант модели будет лучше соответствовать необходимому условию успешного обучения - число образцов должно быть значительно больше числа связей. Кроме того, такая модель будет проще – что неплохо. 5. Перейдем на закладку Network и выполним команду Create Network. Получим сеть «2-3-1». 6. Приступим к ее обучению. Перейдем на вкладку Training. Установим критерий остановки (Stopping criteria) по количеству эпох = 100 000, ошибке обучения <= 0,2 и включим флажок Использовать критерии остановки (Use stopping criteria). Выполним операцию рандомизации синапсов (Randomize sinapses + ОК). Увидим, что начальная ошибка обучения составила 0,98195. Эта ошибка обусловлена первоначальным откликом сети, который можно посмотреть по команде Network answer. 35 Видно, что начальный отклик (зеленая почти горизонтальная линия) плохо согласуется с обучающей выборкой (оранжевая линия). Напомним, что у вас могут получиться другие результаты, что связано с работой генераторов случайных чисел. Соответствующий начальный График разброса (Scattering diagramm) имеет вид, показанный на следующей диаграмме. Эта диаграмма показывает, как классифицируются наши обучающие примеры при данном выборе начальных значений весов. Видно, что выше прямой лежит примерно 75% обучающих примеров, а остальные 25% - ниже. Можно сказать, что это - начальный интеллект необученной сети («детский уровень»). Заметим, что необученную сеть можно рассматривать и как обученную, если допустимую ошибку сети принять, например, равной 0,99. 7. Попытаемся улучшить начальные установки сети. Для этого «встряхнем» веса, т.е. выполним повторную рандомизацию синапсов (Randomize sinapses + ОК). Увидим, что начальная ошибка обучения даже возросла и составила 1,14225. Это говорит о том, что начальные условия ухудшились и время достижения состояния «завершения обучения» при этом будет больше. Поэтому «повстряхиваем» нашу сеть еще и еще раз до тех пор, пока начальная ошибка не станет приемлемой, например <0,5. После многократных попыток, даже меняя диапазон выбора весов, убеждаемся, что это не получается. 36 То, что мы сейчас проделали, было не чем иным, как попыткой обучить нашу нейронную сеть «вручную», методом «научного тыка», т.е. без использования специальных алгоритмов обучения. Как мы смогли убедиться, это не очень просто сделать. Поэтому удовлетворимся выбором менее жесткого требования – уменьшением начальной ошибки хотя бы до 0,95. После нескольких попыток убеждаемся, что эта задача вполне реализуема и получаем Training error =9,4668. Диаграмма разброса принимает несколько другой вид – ниже прямой находится уже примерно 40% образцов. Для наглядности рекомендуется для каждого выбора весов просматривать не только диаграмму разброса, но и соответствующий график Network answer. Видно, что и он несколько лучше, чем предыдущий. 37 8. Начнем обучение. Попробуем вновь снизить ошибку обучения до 0,5, но уже с помощью алгоритмов обратного распространения ошибки. Установим в окне Критерии остановки (Stopping criteria) предельную ошибку обучения равной 0,5. Нажмем Start Training. Ждем результатов обучения. В процессе ожидания можно наблюдать за ходом обучения по изменению ошибки сети или с помощью всех графических средств отображения процесса обучения. Видно, что ошибка обучения хоть и очень медленно, но уменьшается. Соответственно меняется график ошибок и диаграмма разброса. Отклик сети пока недоступен. Обучение остановилось. Видим, что даже заданных 100 000 эпох не хватило для достижения требуемой ошибки обучения. Остановка обучения произошла по истечении числа эпох и ошибка на начало 100 001-й эпохи составила 0,51715. 9. Продолжим обучение. Это можно сделать различными способами: увеличением числа эпох обучения, выбором других значений начальных весов, очисткой эпох и др. Выберем, например, вариант Очистка эпох (Clear epoches). Это означает, что текущее значение эпохи будет уменьшено на 100 000, т.е. вновь примет значение = 1, а конечное значение ошибки предыдущего цикла обучения (0,51715) будет принято в качестве начального для данного, нового цикла обучения сети. Нажмем Start Training. Этот процесс, возможно, придется повторить многократно до тех пор, пока ошибка обучения не достигнет заданного уровня. В нашем примере это пришлось сделать примерно десять раз. Это говорит о том, что алгоритмы оптимизации, используемые при обучении сети, попали на склон длинного пологого оврага (см. рис. ниже), и для достижения его дна (глобального минимума) потребовалось порядка миллиона эпох (итераций). После чего был получен требуемый результат. Движение к дну длинного оврага Ошибка обучения 38 Заметим, что на самом деле мы несколько схитрили – не стали ждать, пока алгоритм медленно проберется к минимуму, а Скорректировали параметры самого алгоритма (Edit current algorithm), увеличив (пока просто интуитивно) шаг корректировки Nu(-) с 0,5 до 0,9. Остальные параметры были оставлены без изменения. Таким образом, мы посмотрели, как можно проводить обучение. Отметим, что это далеко не единственный вариант и возможны другие схемы реализации успешного обучения. 10. Посмотрим результаты обучения. Для этого обратимся к графику Отклика сети(Network answer). Видно, что все примеры неплохо воспроизводятся нейросетью «2-3-1». 11. Продолжим обучение дальше, так как ошибка на уровне 0,5 не может считаться приемлемой. Попытаемся ее уменьшить. Установим в окне Критерии остановки (Stopping criteria) предельную ошибку обучения 0,25. Увеличим предельное число эпох до 1 миллиона. Конечное значение ошибки предыдущего цикла обучения (0,49985) будет принято в качестве начального для очередного цикла обучения сети. Нажмем Start Training. 39 Наблюдая за ходом обучения, можно увидеть, что мы вновь сталкиваемся с проблемой «длинного оврага», т.е. медленного уменьшения ошибки обучения. Попытки улучшить параметры алгоритма обучения также не дали существенных преимуществ. Вот где не помешали бы вычислительные ресурсы хорошей супер-ЭВМ. Но все же многое зависит и от нас – пользователей. На 412 390-й эпохе процесс обучения остановился. Достигнутая точность составила 0,24998. Получившийся отклик сети приведен ниже. Видно, что он значительно улучшился примерно десять первых образцов сеть воспроизводит практически без ошибок, но и дальше – совпадение неплохое. Таким образом, с помощью нейросети типа «2-3-1» мы получили результат, сравнимый по качеству с помощью более сложной модели «4-3-1», рассмотренной выше. 12. Перейдем на закладку Output, зададим параметры сохранения результатов в Excel: лист – Нейросеть2_3_1, начало диапазона вывода – А1 и установим флажок вывести Только отклик сети (Only network answer).. Завершаем сохранение результатов работы нейросети нажатием клавиши Output. 13. Сохраним нейропроект под именем Vavilon2_3_1.wnp. 14. Закончим сеанс работы с нейросетью. 15. Теперь, конечно, хотелось бы посмотреть почти самое главное – материализованный результат нашей работы – значения весов нейронной сети. Но, к сожалению, программа не предоставляет такой возможности. Это, впрочем, не уменьшает ее исследовательской ценности, так как все необходимые параметры сети (включая и веса синапсов) запомнены в файле нашего нейропроекта и мы, хоть и в неявной форме, разумеется, 40 можем ими воспользоваться. Для этого, как мы уже знаем, достаточно загрузить вновь файл нейропроекта в Excel. Еще один путь – самим рассчитать эти веса любыми статистическими методами на основе результатов работы сети. Проделаем это для сети «2-3-1». Обратимся к листу с сохраненным результатом. Рассчитаем отклонения. Себестоимость 200120 204134 245620 240136 400111 422133 445050 484438 522333 522177 632222 637123 1229765 1432173 1792262 1941401 2529111 2932444 3732344 3821512 4440203 4532222 4511107 4633225 4742424 4755577 4727524 4822663 4829676 4832354 4832344 4992748 Рентаб. общая 1,2 1,1 1,1 0,5 4 4,2 5,6 5,7 2 2,3 2,1 1,8 5,4 4,9 3,8 3,1 5,1 5,1 5,1 5,5 4,8 5,2 5,8 6,4 6,8 6,9 7 5 7 7,2 7,3 3,4 ИПЦ (Output) ИПЦ Отклонение, Отклонение, (Predicted) абсолютное относительное 132,2 130,3 126,6 115,4 107,3 105,6 105,7 104,5 104 103,5 103,3 100,5 107,6 109,5 120,8 118 113,2 111,4 111,7 100,2 105,1 105,6 106,1 107,2 106,1 105 103,4 103,3 103,9 103,8 103,8 103,7 132,40 130,35 124,98 116,17 107,83 104,19 107,06 104,33 105,31 104,04 100,31 102,39 105,71 111,47 117,99 120,27 116,68 111,91 106,39 106,21 104,54 104,46 104,57 104,49 104,40 104,40 104,45 104,14 104,33 104,35 104,36 103,96 41 0,20 0,05 -1,62 0,77 0,53 -1,41 1,36 -0,17 1,31 0,54 -2,99 1,89 -1,89 1,97 -2,81 2,27 3,48 0,51 -5,31 6,01 -0,56 -1,14 -1,53 -2,71 -1,70 -0,60 1,05 0,84 0,43 0,55 0,56 0,26 0,00 0,00 -0,01 0,01 0,00 -0,01 0,01 0,00 0,01 0,01 -0,03 0,02 -0,02 0,02 -0,02 0,02 0,03 0,00 -0,05 0,06 -0,01 -0,01 -0,01 -0,03 -0,02 -0,01 0,01 0,01 0,00 0,01 0,01 0,00 Как видно, результаты неплохие. Обратимся далее к надстройке Анализ данных в Excel – компонента Регрессия. Зададим ей в качестве входных данных – первые два столбца, а в качестве выходных – 4-й столбец, найденный нейросетью. Так мы получим уравнение нейрорегрессии. Рассчитаем уравнение нейрорегрессии и статистику ошибок прогноза: ИПЦ(нейро) =118,749-3,409⋅10-7х2-1,994х6, где х2 себестоимость, х6 - общая рентабельность. Соответствующая статистика приведена ниже в таблице. Нейростатистический показатель Число обучающих примеров, n Число независимых переменных, k Общая нейроошибка, Σ(yнейро -yсредн ) Ошибка регрессии, Σ(yрасч -yсредн ) 2 Остаток, Σe(t)2 =Σ(yнейро -yсредн ) 2- Σ(yрасч -yсредн ) 2 Коэф. детерминации (R 2 =1 - Σe(t) 2 / Σ(y нейро – y средн ) 2) Коэффициент множественной корреляции, R=√ R 2 Скорректированный Rкор 2 =1-(1- R 2)(n-1)/(n-k-1) Стандартная ошибка MS регрессии, Σ(yрасч -yсредн ) 2/k MS остатка, Σe(t)2/(n-k-1) Критерий Фишера, F = (R 2/k)/((1- R 2 )(n-k-1)) Значимость критерия Фишера Значение 32 2 2081,59 649,76 1431,83 0,31 0,56 0,26 7,03 324,88 49,37 6,58 0,004 Табличное значение критерия Фишера при доверительной вероятности 0,95, ν1 =k =2, ν2 =n-k-1 =29 составляет 3,33. Поскольку Fрасч =6,58> Fтабл =3,33, то уравнение регрессии можно считать адекватным. Критерий Дарбина-Уотсона: d =Σ(e(t)-e(t-1))2/Σe(t)2 =1,5E-06. В качестве критических табличных уровней при n =32 и k =2 при уровне значимости 5% возьмем значения di =1,08 и du=1,84. Расчетное значение не попало в интервал, т.е. оценки можно считать независимыми. В следующей таблице показан расчет коэффициентов уравнения нейрорегрессии и сопутствующая статистика Стьюдента (t-критерий). Табличное значение критерия Стьюдента при уровне значимости 5% и степенях свободы 32-2-1 =29 составляет 2,045. Расчетное значение больше табличного 42 только для общей рентабельности, т.е. только он является значимым. Второй коэффициент можно опустить. Переменная Коэффициент Стандартная Критерий регрессии ошибка Стьюдента ИПЦ-(Output) 118,749 3,09 38,46 Себестоимость (Input) -3,405E-07 0,00 -0,35 Рентабельность общая (Input) -1,994 0,93 -2,15 С учетом проведенного анализа, результаты нейромоделирования можно записать в виде уравнения нейрорегрессии (х6 общая рентабельность): ИПЦ(нейро) =118,749-1,994х6. Для сравнения приведем еще раз уравнение нейрорегрессии, полученное с помощью нейросети «4-3-1»: ИПЦ(нейро) ≈ ≈117,815-1,994х6. Как видно, результаты близки. Графическая иллюстрация приведена ниже. Сравнение нейромоделей "3-4-1" и "2-3-1" 130 ИПЦ (Модель 2-3-1, Predicted) 125 ИПЦ (Модель 4-3-1) ИПЦ,% 135 120 115 110 105 100 1 5 9 13 17 21 25 29 Кварталы Тестирование нейронной сети Алгоритм 4. Тестирование персептрона «2-3-1» 1. Следующий этап работы с нейронной сетью – проверка качества обучения на тестовом множестве. На этом этапе сформированная первоначальная модель дополнительно апробируется как прогностический инструмент на серии тестовых данных, не включенных в обучающую выборку. Таким образом, тестовое множество должно быть отличным от обучающего. Подготовим его, например, на основании данных за следующий год, т.е. в объеме 4 образцов. Допишем эти данные в конец таблицы с исходными данными следующим образом. 43 A B C 1 2 D I E х1 Год Кв № ИПЦ Выручка ар тал F х2 G х3 H х4 I х5 J х6 СебеПри- Балан- Стои- Рентастои- быль от совая мость бельмость реали- при- основных ность зации быль фондов общая K х7 Рентабельность собств. … 35 36 37 38 2003 2003 2003 2003 1 2 3 4 33 34 35 36 103,8 11101191 4843975 765546 840906 22452636 3,3 5,4 103,9 11609602 4962448 768876 820119 24030738 6,2 3,9 103,9 12087057 5179782 776667 861897 24030738 4,2 8,6 104,0 12337968 5277930 769659 878628 24030738 6,5 3,6 Теперь перенастроим параметры программы для работы с тестовым множеством. 2. Выделим всю таблицу, включая обучающие и тестовые примеры, обратимся к нейропанели, вызовем нейроэмулятор персептрона и загрузим проект Vavilon2_3_1.wnp. Мы увидим использовавшиеся ранее параметры сети – две входных и одну выходную переменную. Вспомним, что только себестоимость (х2) и общая рентабельность (х6) были признаны нами значимыми в предыдущих сеансах работы с сетью. Выходная переменная – ИПЦ. 3. Перейдем на вкладку Training и выполним команду Редактировать тестовое множество (Edit Test Set). Установим следующие значения параметров выборки: число тестовых примеров = 4. При этом число обучающих примеров остается прежним = 32, и общее число примеров =36. Остальные параметры оставим без изменения. Просмотрим Диаграмму разброса (Scattering diagramm). На ней тестовые точки будут выделены красным цветом. Диаграмма отклика сети ничего нового пока не показывает. 4. Теперь нужно сделать самое главное на этом этапе – дообучить сеть на тестовом множестве. К счастью, это совсем несложно и делается точно так же, как первоначальное обучение. Основное отличие состоит в том, что сеть уже не нужно настраивать – подбирать архитектуру и параметры обучения. Обучение можно закончить, если уровень тестовых ошибок станет минимальным, а уровень правильных ответов – максимальным. 44 На практике это означает, что если при обучении мы задавали только допустимую ошибку обучения, то теперь нужно задать еще и допустимую ошибку тестирования. Зададим ее такой же, т.е. равной 0,2, с помощью команды Критерии остановки (Stopping Criteria). Начнем тестирование. Выполним команду Начать обучение (Start Training ). Ждем … Процесс закончился довольно быстро - на 1414-й эпохе по достижении необходимой точности тестирования =0,199 < 0,2. Это значит, что тестирование прошло успешно. 5. Посмотрим результаты. На Диаграмме разброса – красные точки переместились, что однако не очень информативно. Отклик сети (Network Answer) - гораздо нагляднее отражает процесс тестирования. 45 Видно, что правые части обоих графиков (последние 4 точки) стали теснее – именно эта часть графика соответствует процессу тестирования. График ошибок (Error History) дополнительно подтверждает это. 6. Сеть полностью обучена. Перейдем на закладку Output, зададим параметры сохранения: лист – Нейросеть2_3_1, диапазон – H1 и включим флажок: вывести Только отклик сети (Only network answer). Завершаем сохранение клавишей Output. Результаты дообучения после тестирования показаны ниже – в таблице. Для сравнения приведены результаты обучения и соответствующие уравнения нейрорегрессии. Видно, что результаты обучения несколько изменились. При этом конечные веса режима обучения были использованы сетью как начальные веса в режиме тестирования. 7. Сохраним нейропроект под тем же именем Vavilon2_3_1.wnp. 8. Закончим сеанс работы с нейросетью, закрывая окно программы Winnet. Напомним еще раз, что у вас могут получиться другие результаты. С учетом полученных результатов пользователь или программа могут изменить полностью или частично топологию модели, отрегулировать начальные значения некоторых параметров и др. Как только станет доступным новое большое количество случаев, эти данные также вводятся в нейронную сеть, и модель еще раз корректируется. Глобальная цель этих действий - дальнейшее улучшение прогнозирующей способ46 ности сети. Этот процесс повторяется до тех пор, пока результаты не станут удовлетворительными. № 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 … 30 31 32 33 34 35 36 После обучения После тестирования ИзмеИПЦ(нейро) = ИПЦ(нейро) = не=118,749-3,409⋅10-7х2-1,994х6 =117,851-6,0⋅10-7х2-1,727х6 ние, % 132,4 131,8 -0,48 130,3 130,0 -0,28 125,0 124,6 -0,32 116,2 117,4 1,04 107,8 109,1 1,21 104,2 105,7 1,41 107,1 104,0 -2,83 104,3 101,5 -2,73 105,3 105,0 -0,27 104,0 104,5 0,40 100,3 100,4 0,09 102,4 101,5 -0,91 105,7 107,8 2,01 111,5 112,3 0,75 118,0 116,8 -1,00 120,3 118,2 -1,70 116,7 115,1 -1,36 111,9 111,1 -0,76 106,4 106,4 -0,02 106,2 106,2 -0,02 104,5 104,8 0,22 … … … 104,3 104,5 0,19 104,4 104,5 0,18 104,0 104,3 0,29 - 104,3 - 104,4 - 104,2 - 104,2 - 47 Запуск сети. Нейропрогнозирование Остался последний, наиболее важный в практическом отношении, этап работы с сетью – использование обученной сети для экономического прогнозирования. Именно для этого и были проделаны все предыдущие действия. Подготовим данные для прогнозирования – всего одну строку. Зададим предполагаемую выручку, себестоимость, балансовую прибыль и рентабельность. Остальные входные параметры оставим прежними. Вспомним также, что существенными для модели являются только два параметра х2 и х6, а остальные не окажут влияния на результат. Предскажем выходной параметр ИПЦ с помощью обученной и протестированной выше нейросети (его значение пока неизвестно и отмечено вопросительным знаком). A B C 1 2 D I E х1 Кв Год ар № ИПЦ Выручка тал F х2 Себестоимость G х3 H х4 I х5 Прибыль БаланСтоиот совая мость реали- прибыль основных зации фондов J х6 K х7 Рентаб. общая Рентаб. Собств. 3,0 3,0 … 39 2003 4 37 ? 10000000 5000000 1000000 1000000 24030738 Алгоритм 5. Нейросетевой предсказатель «2-3-1» 1. Допишем эту строчку в таблицу с исходными данными и приступим к работе. Обратим внимание, что выходное значение пока неизвестно, поэтому оно принимается равным нулю. Выделим все данные - обучающее, тестовое и прогнозное множество. Обратимся к нейропанели, вызовем эмулятор персептрона и загрузим проект Vavilon2_3_1.wnp. 2. Дальше все происходит так же, как при тестировании, но с одним важным отличием. Процесс тренировки сети на этом этапе запускать нельзя и не нужно, так как это может привести к изменению весов обученной сети и некорректности прогноза. Перейдем на вкладку Тренировка (Training) и выполним команду Редактировать тестовое множество (Edit Test Set). Установим следующие значения параметров выборки: Число 48 тестовых примеров (Number of test examples =1) и Тестовое множество - последний пример (Test set-last examples = =включено). При этом число обучающих примеров становится равным 36 и общее число примеров равно 37. Просмотрим Диаграмму отклика сети (Network Answer) и Диаграмму разброса (Scattering diagramm). Отклик сети (выбран режим реальных значений шкалы – Real scale) Диаграмма разброса Из первой диаграммы видно, что отклик на тестовый пример (точка № 37 выделена красным цветом) уже сформирован и его значение равно примерно 100. На второй – видно размещение этой же точки (выделена красным цветом) относительно обучающей выборки. Таким образом, прогнозирование уже произошло. 3. Убедимся в этом, посмотрев точное значение отклика. Для этого сохраним значение найденного сетью отклика командой Вывод (Output), задав область вывода в любых свободных ячейках таблицы Excel, например – Лист Нейропрогноз (такой лист должен быть создан заранее), Ячейка В2. При прогнозировании удобно задавать режим – Вывод всех данных (Output all data), позволяющий контролировать не только отклик сети, но и входные параметры. Установим его и посмотрим результаты (показаны только данные тестового примера – строка № 37). Вход х2 Вход х6 Выход (ИПЦ) Выход (Прогноз) Column_2 Column_6 Column_0 Column_0 (Input) (Input) (Output) (Predicted) 5000000 3 0 104,2542606 49 Как видно, прогнозное значение ИПЦ =104,254 согласуется с диаграммами. Изменение других параметров в нижней части окна оставляет результат прежним. 4. Чтобы лучше понять процесс работы с обученной сетью, сделаем небольшое «лирическое» отступление. Дело в том, что здесь возможны различные схемы работы: на всем наборе данных; на части набора данных; на отдельном наблюдении. Кроме того, каждый из этих случаев можно разделить на несколько подслучаев: старые данные (участвовавшие в обучении или тестировании сети); новые данные (содержащие незнакомые сети входы и выходы); новые данные (с неизвестными выходами). Различные сочетания всех этих случаев и подслучаев могут образовать 9 (и более) вариантов работы с обученной и натренированной сетью. Осталось определить, с каким вариантом мы имеем дело и какой лучше использовать на этом этапе. Поскольку для прогнозирования мы выбрали только один образец, отклик для которого заранее неизвестен, то, по-видимому, мы должны придерживаться схемы «отдельное наблюдение – новые данные с неизвестными выходами». Реализовать эту схему можно с помощью знакомой нам команды Редактор тестового множества (Test set Redactor). Мы уже установили в верхней части окна Редактора тестового множества число тестовых примеров =1. Тем самым, выбрав схему – «отдельное наблюдение». Оставим этот параметр без изменения. В нижней части окна изменим режим на Случайное Тестовое множество (Random Test set), поставив признак включения в первой строке. Тем самым мы изменили образец для тестирования – он теперь будет выбираться случайным образом и может оказаться любым из 37, в том числе и последним. Это можно увидеть, посмотрев диаграмму разброса или отклик сети. Красная точка на этих диаграммах переместилась в другое (случайно выбранное) место. Выберем следующий режим – Тестовое множество – блок примеров (Test set – block of examples. First example of the block =5). На диаграмме отклика красная точка перемещается в заданную позицию номер 5. Выведем результат прогнозирования 50 в Excel. Результат не изменился. Установим эту позицию =37 и вновь выполним вывод в Excel. Результат остался прежним каким был при первоначальной установке режимов прогнозирования и ИПЦ =104,254. Таким образом, этот параметр не влияет на результаты прогнозирования, а влияет только на выбор точки тестирования. Это можно использовать для «точечной» проверки правильности отклика обученной сети и т.п. Убедимся еще раз в этом, выбрав последний режим Тестовое множество – случайное+последний пример. Количество последних примеров =1 (Test set – random + last example. Amount of last examples =1). Результаты остаются прежними. 5. Закроем нейроэмулятор. Загрузим неполное множество данных – например, исключим обучающую выборку, т.е. первые 32 строки таблицы. Выделим последние 5 строк и загрузим сеть (не забудьте при этом снять флажок использования первой строки таблицы под названия или включите в выделяемый диапазон и строку с названиями тоже). Установим параметры тестового множества: число тестовых примеров =1. Всего примеров должно быть теперь пять. Посмотрим отклик сети и диаграмму разброса. Отклик сети (для последних пяти строк) Диаграмма разброса Видно, что они изменились и соответствуют выборке из пяти образцов. Образец для прогнозирования по-прежнему выделен красным цветом. Выводим результаты в Excel и убеждаемся, что прогноз ИПЦ остался прежним - 104,254. 6. Вновь закроем нейроэмулятор. Загрузим теперь только один образец – прогнозный, т.е. 37-ю строку таблицы. Выделим ее, загрузим сеть (сняв флажок использования первой строки 51 таблицы под названия). Установим: число тестовых примеров =1. Всего примеров должно быть также только 1. Посмотрим отклик сети и диаграмму разброса. Отклик сети (выбран только один прогнозный образец) Диаграмма разброса Видно, что они опять изменились и соответствуют единичной выборке (красная точка). Выводим результаты в Excel. Убеждаемся, что прогноз ИПЦ =104,254 не изменился. 7. Выполним еще одно полезное упражнение. Проведем прогнозирование на серии из 10 образцов. Предварительно подготовим их в диапазоне ячеек D39-K48, включая и предыдущий образец № 37 в строке 39. Целевую колонку (D) заполним нулями. 39 40 41 42 43 44 45 46 47 48 D 0 0 0 0 0 0 0 0 0 0 E 10000000 13142066 13799688 18674189 11754906 16837455 17218009 19095328 12721941 19120781 F 5000000 6983885,6 9423869,6 5660396,7 8523457,7 6379225,2 5090461,2 8663570,4 7147652,3 8653900,5 G 1000000 1959332 1576068 1362461 1987036 1285482 1895263 1196230 1630052 1202726 H 1000000 1813981 1771373 1936663 1891098 1930711 1590744 1390089 1948753 1183707 I 24030738 24030738 24030738 24030738 24030738 24030738 24030738 24030738 24030738 24030738 J 3,0 4,3 5,6 4,8 3,0 4,3 5,5 4,6 5,5 5,9 K 3,0 3,4 5,5 3,5 4,5 4,8 3,2 5,4 5,5 5,2 Закроем нейроэмулятор. Загрузим новое множество данных для прогнозирования. Выделим последние 10 строк таблицы и вновь загрузим эмулятор сети (сняв флажок использования первой строки таблицы под названия). Установим параметры тестового множества: число тестовых примеров =10, режим 52 прогнозирования Тестовое множество – блок примеров (Test set – block of examples. First example of the block =1). Всего примеров должно быть тоже 10. Посмотрим отклик сети и диаграмму разброса. Отклик сети (выбраны последние 10 строк) Диаграмма разброса 8. Сохраним результаты прогнозирования командой Вывод (Output), задав область вывода в любых свободных ячейках таблицы Excel в режиме – Вывод всех данных (Output all data). Увидим точные прогнозные значения. Первое из них совпадает с полученным ранее. Вход х2 Вход х6 Выход (ИПЦ) Выход (Прогноз) Column_2 (Input) 5000000 6983885,554 9423869,637 5660396,667 8523457,748 6379225,209 5090461,224 8663570,361 7147652,339 8653900,519 Column_6 (Input) Column_0 (Output) 3 4,347470311 5,59659284 4,772265009 3,048636395 4,292017477 5,537619961 4,599615397 5,456798663 5,853652515 0 0 0 0 0 0 0 0 0 0 Column_0 (Predicted) 104,2542606 103,9581763 103,9435637 104,0692262 103,9443531 103,9820185 104,2746903 103,9442717 103,9561576 103,9444449 9. Заметим, что использованная выборка содержала довольно однородные (близкие) значения. Представляет интерес посмотреть на отклик сети для менее однородной выборки, содержащей резкие всплески входных параметров. Поэтому сформируем и такую выборку в диапазоне ячеек D49-K53. Целевую колонку (D) заполним нулями. 53 49 50 51 52 53 D 0 0 0 0 0 E 16540689 32528341 25650150 34638898 32098464 F 9520488,8 7272124 7996142,4 15231183 7454629,7 G 1355508 2118840 2138891 2415634 1137506 H 1651201 2019657 1264716 2031378 2194729 I 24030739 24030740 24030741 24030742 24030743 J 4,0 6,3 5,7 8,6 9,2 K 3,7 7,4 6,4 8,8 6,0 Сохраним результаты прогнозирования командой Вывод, задав область вывода в других свободных ячейках таблицы Excel в режиме – Вывод всех данных. Как видно из приведенной ниже таблицы, качественное изменение выборки влияет на результаты прогнозирования. Это говорит о том, что наш нейропредсказатель чувствителен к вариации входных параметров, и его можно считать адекватным. 10. И наконец сравним нейропрогноз с нейрорегрессией. Результаты показаны ниже. Вход х2 Вход х6 Column_2 (Input) 9520488,841 7272123,966 7996142,398 15231182,6 7454629,703 Column_6 (Input) 3,969155719 6,314321984 5,715291998 8,634074031 9,22298974 Выход (ИПЦ) Column_0 (Output) 0 0 0 0 0 Нейро прогноз Column_0 (Predicted) 103,9434652 103,9548892 103,9466706 103,9432125 103,955365 Нейро регрес сия Откло нение, % 113,39 60,55 60,32 34,85 74,75 -9,03 -41,75 -41,97 -66,47 -28,10 11. Закроем нейропредсказатель без сохранения результатов, так как нам не нужно изменять параметры обученной сети. 12. Завершим сеанс Excel или продолжим работу с полученным прогнозом средствами Excel. Сеть Кохонена Рассмотрим другую задачу – использование нейронных сетей для решения задач классификации (кластеризации). В качестве исходных данных выберем панельные данные по 5 родственным Чувашии предприятиям пищевой промышленности (ООО «Вавилон», ОАО «Акконд», ОАО «Новочебоксарская макаронная фабрика» (НМФ) и др.). Для обучения используем 54 выборку из 32х5 =160 поквартальных данных за 8 лет, сформированных на основе бухгалтерской отчетности этих предприятий. Сеть анализирует имеющиеся данные и формирует группы (кластеры) однотипных с точки зрения выбранного нами критерия образцов. Входы модели – 1 макроэкономический (индекс потребительских цен - ИПЦ) и 10 микроэкономических (выручка, себестоимость, рентабельность и др.) показателей прошлой деятельности. Алгоритм 6. Сеть Кохонена вида «5х5» 1. Введем или загрузим исходные данные в Excel следующим образом (таблица приведена не полностью). I Объект Квар- ИПЦ тал Выручка В-1 В-2 В-3 В-4 В-5 В-6 В-7 В-8 В-9 В-10 В-11 В-12 В-13 В-14 В-15 В-16 В-17 В-18 В-19 В-20 В-21 В-22 В-23 В-24 201,84 206,15 248,84 243,19 440,53 484,26 508,47 554,50 552,75 564,30 675,64 700,21 1272,2 1493,4 1858,1 2029,9 2931,5 3333,7 4148,2 4229,2 4812,1 5513,4 5757,5 6562,8 132,2 130,3 126,6 115,4 107,3 105,6 105,7 104,5 104 103,5 103,3 100,5 107,6 109,5 120,8 118 113,2 111,4 111,7 100,2 105,1 105,6 106,1 107,2 х1 х2 х3 х4 х5 При- Балан- СтоиСебе- быль совая мость стоиот приосновмость реали- быль ных зации фондов 200,12 204,13 245,62 240,14 400,11 422,13 445,05 484,44 522,33 522,18 632,22 637,12 1229,7 1432,1 1792,2 1941,4 2529,1 2932,4 3732,3 3821,5 4440,2 4532,2 4511,1 4633,2 1,72 2,02 3,22 2,94 40,42 62,12 63,42 67,92 30,42 42,12 43,42 48,68 42,45 61,28 65,88 74,12 402,44 401,26 415,88 393,31 582,42 581,11 625,23 655,72 1,91 2,10 2,12 1,08 30,25 36,78 45,25 52,05 41,22 46,78 43,44 39,40 78,24 76,88 73,25 60,16 367,20 375,40 386,25 429,61 486,62 532,30 588,10 652,73 1561,20 1882,00 1902,64 2024,04 7553,44 8801,12 8144,66 9158,42 20156,12 20553,88 20914,26 21638,30 14612,04 15820,06 19026,42 19286,48 71561,20 73882,00 76142,64 78429,68 101561,4 101882,4 101142,4 102336,8 55 х6 Рентаб. общая х7 Рентаб. собственная 1,2 1,1 1,1 0,5 4 4,2 5,6 5,7 2 2,3 2,1 1,8 5,4 4,9 3,8 3,1 5,1 5,1 5,1 5,5 4,8 5,2 5,8 6,4 4,7 4,3 4,3 1,8 19,5 20,4 27,1 28,2 12,8 14,2 13 11,3 21 19,1 15,1 10,7 22,6 22,4 22,4 24,2 20,6 22,4 25 27,4 х8 х9 х10 Чис- Сред- Текуло няя щая разарликбот- плавиднита ность ков 14 125,2 0,7 14 133,5 0,8 14 145,0 0,8 14 127,8 0,8 21 352,2 0,9 21 337,8 1,0 21 320,0 1,0 21 376,5 1,2 28 387,7 1,1 28 344,4 1,5 29 487,3 1,5 29 506,4 0,7 30 1017 0,9 35 1418 2,0 31 1271 1,1 31 1374 1,8 32 1900 0,9 39 2763 1,4 33 2120 1,1 33 2990 0,8 34 3683 1,9 39 3162 0,7 39 2807 0,8 45 2942 1,3 Объект Квар- ИПЦ тал В-25 В-26 В-27 В-28 В-29 В-30 В-31 В-32 А-1 А-2 А-3 … К-30 К-31 К-32 Выручка При- Балан- СтоиСебе- быль совая мость стоиот приосновмость реали- быль ных зации фондов 106,1 10433 4742,4 690,23 105 10462 4755,5 703,85 103,4 10400 4727,5 710,25 103,3 10609 4822,6 724,96 103,9 10625 4829,6 721,40 103,8 10631 4832,3 736,80 103,8 10631 4832,3 740,28 103,7 10984 4992,7 764,33 132,2 1160,3 1112,4 108,67 130,3 1169,4 1087,1 101,88 126,6 1288,2 1239,5 116,78 103,8 103,8 103,7 55238 32396 42539 10330 3896,7 13351 3489,5 10468 1864,0 686,11 702,30 708,10 712,73 712,34 732,11 738,21 752,57 2086,0 1912,0 2458,0 101561,4 101882,4 101142,4 142943,2 101561,4 101882,4 101142,4 224401,1 11764,94 14908,43 13540,46 Рентаб. общая Рентаб. собственная 6,8 6,9 7 5 7 7,2 7,3 3,4 1,6 1,4 1,1 22,1 22,4 25,4 26,2 22,6 22,5 25,1 25,2 5,12 7,88 7,59 4,66 34058,60 1,53 12,59 4,22 458641,2 9,26 2,48 4,44 1286884 0,17 15,69 Чис- Сред- Текуло няя щая разарликбот- плавиднита ность ков 45 2797 1,3 44 2468 1,2 47 3259 1,5 61 2755 1,6 58 4078 1,4 57 3507 1,4 52 3445 1,6 52 2970 2,0 445 943,9 1,7 445 710,3 1,2 426 852,0 0,8 31 30 28 2504 2908 2184 1,5 1,3 1,8 2.Нажмем кнопку с цветной картой Кохонена на панели инструментов Neural Analysis. В окне Select data source зададим параметры области данных. Входы – столбцы A-L, обучающие примеры – строки 2-162. Выделим строку под названия входов – поставим флажок. Выделим первую колонку под названия обучающих примеров для последующего анализа результатов. Нажимаем ОК. 3. Откроется основное окно программы, которое содержит две вкладки Project и Results. Перейдем на вкладку Project, которая позволяет определить и предобработать исходные данные. Кроме того, с этой вкладки можно сохранить обученную нейросеть (Save Project) или загрузить сохраненный ранее проект (Load Project). 4. Определим входы, для чего нажмем на кнопку Create patterns. В открывшемся окне Select relevant columns выберем в окне левого списка All columns все входы и с помощью кнопки >> переведем их в окно списка Selected. Отметим, что в отличие от Winnet теперь все данные являются входными и участвуют в обучении. Корректировку выбранных входов можно провести кнопками < или << . 56 5. Проведем нормировку входов методом Mean/Variance. Нажмем кнопку Normalize и установим в открывшемся окне Inputs normalization переключатель Mean/Variance в положение «включено». Нажмем ОК. 6. Часто при анализе используется много входов, имеющих существенную линейную зависимость друг от друга. В этих случаях встроенный в пакет Метод Главных Компонент (PCA) позволяет автоматически существенно понизить размерность входного пространства. Для использования этой возможности включим переключатель Extract principal components. Подтвердим выбор нажатием кнопки ОК. В открывшемся графическом окне PC Analyzer можно контролируемо понизить размерность входов за счет уменьшения числа учитываемых при обучении главных компонент без существенной потери информативности. С помощью соответствующего графика можно оценить потери информации. Обычно они не должны превышать 10%. На приведенном графике выбрано 7 главных компонент, а потери информации оцениваются в 5-7%. Точное значение составляет 6%, что можно позднее увидеть на вкладке Project. Дальнейшее уменьшение числа главных компонент до 5 приводит уже к предельной ошибке 10-12%. Критический рост 57 ошибки происходит при сокращении числа компонент до 2-3 и менее. Подтвердим выбор нажатием ОК и вернемся в основное окно. 7. Следующий этап – создание сети-карты Кохонена. Здесь можно руководствоваться правилом. Кластерную структуру, в отличие от персептрона, лучше исследовать, когда число ячеек сравнимо с числом примеров. При этом появятся пустые ячейки, разграничивающие области данных. Нажмем кнопку Create Network и перейдем в окно Dialog, где зададим параметры карты 5х5, т.е. число ячеек по горизонтали и по вертикали равно 5. Подтвердим выбранную конфигурацию сети нажатием кнопки ОК. Далее автоматически начинается процесс обучения. Подождем его окончания (несколько минут). 8. Обучение закончилось. Для анализа результатов перейдем на вкладку Results. Здесь доступны следующие функции. • Create New Map - раскраска карты Кохонена по любому параметру с выбранной степенью градации. • Cell Description - определение усредненных значений входов для данного кластера (ячейки) и принадлежащих ему примеров. • Find Cell - поиск кластера, которому принадлежит данный пример. • Output - сохранение результатов в книге Excel. 9. Выполним команду Create New Map. Появится запрос параметров карты. Выберем целевую колонку – ИПЦ, вид раскраски – среднее и количество цветов - 2. Получим карту Кохонена вида «5х5», содержащую 25 кластеров. 58 В окне карты имеется свое подменю, позволяющее настраивать вид карты, ее цветовое оформление, показывать или скрывать имена ячеек и отображать соответствие диапазона целевого параметра цветовой гамме. Размеры кластеров пропорциональны количеству образцов, отнесенных к каждому из них. Видно, например, что кластеры А2, D4 и D5 примерно одинаковы и содержат по 3-5 образцов, а кластеры А1, А5 и др. – содержат примерно по 10 образцов. Общая картина говорит о том, что степень раздробленности все-таки высока и число кластеров можно уменьшить. Полученная карта является активной. Убедимся в этом, щелкнув два раза мышью по первому кластеру (левой верхней ячейке А1). Открывается окно Cell description анализа средних значений параметров. Как видно из следующего рисунка, в данный кластер попало 9 образцов. Показаны их наименования, значения параметров для центра кластера и средние значения параметров по кластеру в целом. Дополнительно предусмотрена возможность сохранения изображения карты в формате *.bmp для последующего экспорта через буфер обмена в документы MS Office. Для этого в окне карты имеется меню Actions с командой Copy to Bitmap. Выполнив ее, можно перейти в документ Word и вставить в него полученную карту командой Вставка. 59 10. Наиболее важным моментом является то, что программа позволяет управлять параметрами процесса обучения. Для этого перейдем к главному меню Program, выберем пункт Preferences и команду Set Custom. В открывшемся окне Program preferences на вкладке Параметры обучения сети (Training parameters) мы увидим используемые по умолчанию параметры обучения. Первый из них - предельное число итераций (Number of iteration =2000), второй – начальная жесткость (Initial stiffness = =2), третий – шаг (delta =0,01) и четвертый – коэффициент спада (decay factor =0,001). Эти параметры рекомендуется модифицировать только квалифицированным пользователям. В случае критического нарушения обучения можно восстановить значения по умолчанию командой Set Defaults в главном меню. 11. Сохраним нейропроект. Перейдем на вкладку Project и выполним команду Save Project под именем, например, Kohonen_Vavilon_5_5.kmp. 12. Теперь можно закрыть окно программы Kohonen Map. Дальнейший анализ удобнее проводить статистическими методами в Excel. 13. Сохраним только результаты работы нейросети в Excel в диапазоне ячеек А1-… с помощью команды Output (для компактности данные показаны несколько иначе). 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 A В-1 В-2 В-3 В-4 В-5 В-6 В-7 В-8 В-9 В-10 В-11 В-12 В-13 В-14 В-15 В-16 В-17 В-18 B E E E E D D D D E E E E D D D D C B C … A 5 33 А-1 5 34 А-2 5 А-3 5 А-4 1 А-5 1 А-6 1 А-7 1 А-8 1 А-9 2 А-10 2 А-11 1 А-12 1 А-13 3 А-14 5 А-15 4 А-16 1 А-17 2 А-18 B E E E E A A A A A A A A A A A A A A C … A 5 65 Н-1 5 66 Н-2 5 Н-3 5 Н-4 1 Н-5 1 Н-6 1 Н-7 1 Н-8 1 Н-9 1 Н-10 1 Н-11 1 Н-12 1 Н-13 2 Н-14 2 Н-15 2 Н-16 3 Н-17 3 Н-18 B E E E E E B E D E E E E E D D D C C 60 C … A 5 97 Аг-1 5 98 Аг-2 4 Аг-3 4 Аг-4 1 Аг-5 1 Аг-6 1 Аг-7 1 Аг-8 2 Аг-9 1 Аг-10 3 Аг-11 3 Аг-12 3 Аг-13 3 Аг-14 5 Аг-15 4 Аг-16 5 Аг-17 5 Аг-18 B E E E E E E E E E E E E D D E E E E C … A B 5 129 К-1 E 4 130 К-2 E 4 К-3 E 4 К-4 E 3 К-5 D 2 К-6 D 1 К-7 C 1 К-8 C 1 К-9 E 3 К10 D 3 К11 E 3 К12 E 2 К13 D 2 К14 D 5 К15 D 5 К16 D 2 К17 D 3 К18 C C 4 5 4 4 2 1 2 2 1 1 2 1 2 1 5 4 4 3 19 20 21 22 23 24 25 26 27 28 29 30 31 32 A В-19 В-20 В-21 В-22 В-23 В-24 В-25 В-26 В-27 В-28 В-29 В-30 В-31 В-32 B C C C C C B B B B B B B B C C … A BC … A B 1 А-19 A 4 Н-19 C 1 А-20 A 4 Н-20 C 3 А-21 A 4 Н-21 B 1 А-22 A 4 Н-22 C 1 А-23 A 5 Н-23 C 2 А-24 A 5 Н-24 B 2 А-25 A 5 Н-25 B 2 А-26 A 5 Н-26 B 2 А-27 A 5 Н-27 A 2 А-28 A 5 Н-28 B 2 А-29 A 5 Н-29 B 2 А-30 A 5 Н-30 B 2 А-31 A 5 Н-31 B 3 А-32 A 5 Н-32 B C … A 5 Аг-19 4 Аг-20 4 Аг-21 5 Аг-22 5 Аг-23 5 Аг-24 5 Аг-25 4 Аг-26 4 Аг-27 5 Аг-28 5 Аг-29 5 Аг-30 5 Аг-31 5 Аг-32 B E E D D D E D C D E D E E C C 2 3 3 3 2 1 3 1 1 2 3 1 3 3 … A К19 К20 К21 К22 К23 К24 К25 К26 К27 К28 К29 К30 К31 160 К32 B C B C C D B B C C B B C B C C 4 3 3 3 3 3 3 4 4 2 3 4 4 4 Алгоритм 7. Сеть Кохонена вида «3х3» Мы создали сеть Кохонена с 5х5 =25 кластерами, для которой была отмечена избыточная степень кластеризации. Проведем повторное обучение сети на основе 3х3 кластеризации, т.е. сгруппируем исходные данные в 9 кластерах. Возможный алгоритм решения приведен ниже. 1. Загрузим вновь таблицу с исходными данными в Excel. Выделим диапазон А2-L162. 2. Вызовем эмулятор сети Кохонена на панели инструментов Neural Analysis. Включим опцию использования первой колонки таблицы (А) под названия. Нажмем ОК. 3. Загрузим сохраненный проект командой Load Project – файл Kohonen_Vavilon_5_5.kmp. 4. В окне Patterns видно, что входы уже определены в предыдущем сеансе работы. Корректировать их не будем. Нормировка тоже присутствует (метод Mean/Variance). 5. Выполним команду Create Patterns для того, чтобы иметь возможность скорректировать число главных компонент. В предыдущем сеансе работы их было выбрано семь и потери информации составляли всего 6 %. Это означает, что мы можем еще уменьшить число главных компонент (вспомним, что допустимая ошибка составляет 10%). Появляется диалоговое окно с сообщением о том, что это действие приведет к разрушению текущей сети и данных, и вопрос - Продолжить? (Current network and data will be desrtoyed. 61 Continue ?). Поскольку мы всегда можем регенерировать сеть командой Create Network, ответим Да. Напомним, что для использования технологии анализа главных компонент должен быть включен переключатель Extract principal components. Он включен, и мы можем приступить к процессу корректировки числа главных компонент. В окне PC Analyzer установим их число =6. Нажмем ОК. Вернемся в главное окно программы. Видно, что остаточная информация теперь составляет 91%, т.е. потери информации 9%, что вполне приемлемо. 6. Создание сети Кохонена с 3х3 =9 кластерами. Выполним команду Create Network и перейдем в окно Dialog, где зададим параметры карты: число ячеек по горизонтали и по вертикали равно 3. Нажмем ОК. Начинается процесс повторного обучения сети с новыми параметрами карты. Подождем его окончания. Обучение закончилось быстрее, чем для сети с 25 кластерами. 7. Проанализируем результаты. Перейдем на вкладку Results. Выполним команду Create New Map. Остальные параметры карты оставим прежними (цель – ИПЦ, раскраска – среднее, число цветов - 2). Получим карту Кохонена вида 3х3, содержащую 9 кластеров. Импортируем эту карту в документ Word. Для этого воспользуемся командой Actions/Copy tobitmap в меню карты ИПЦ Map. Перейдем в документ Word и выполним команду Вставка. Получим следующую карту. 62 Как видно, получилась совершенно другая картина кластеризации. Все образцы визуально разбились на 2 класса: первый кластер - ячейка С1 и второй - все остальные. Однако делать окончательные выводы еще рано по многим причинам. Например, вспомним, что для раскраски этой карты использовано только 2 цвета. Попробуем изменить визуальное отображение карты, доведя число цветов до числа кластеров, т.е. используя для раскраски карты 9 цветов. Для этого воспользуемся еще раз командой Create New Map. Откроется окно настройки карты (Choose parameters to create map). Зададим здесь число цветов =9 и нажмем ОК. Увидим, что цветовые оттенки трех средних кластеров несколько изменились, а остальные остались прежними. Другие изменения увидеть трудно из-за отсутствия полноценного цветного отображения карты в данной версии программы. Это говорит о том, что на самом деле сеть обнаружила как минимум 3 кластера. Первый кластер - ячейка С1, второй – ячейки В1-В3 и третий - все остальные. Однако на самом деле получилось все-таки 9 кластеров. В этом можно убедиться, пощелкав дважды каждую ячейку мышкой или с помощью команды Cell description на вкладке Results. Просмотрев информацию этой команды, можно увидеть статистические характеристики найденной кластерной структуры. Слева внизу показаны интервалы значений ИПЦ. 63 Кластер 1 2 3 4 5 6 7 8 9 Ячейка А1 А2 А3 В1 В2 В3 С1 С2 С3 Всего Число образцов 25 13 20 25 8 12 23 21 13 160 Параметры центра кластера (В-выручка) ИПЦ=106, В=6,05⋅103 ИПЦ=109, В=4,54⋅103 ИПЦ=105, В=4,75⋅103 ИПЦ=105, В=2,41⋅103 ИПЦ=108, В=1,84⋅104 ИПЦ=105, В=3,44⋅104 ИПЦ=126, В=913 ИПЦ=108, В=4,39⋅103 ИПЦ=105, В=1,05⋅104 ИПЦ=116,В= 3,17ּ104 Средние параметры кластера (В-выручка) ИПЦ=106, В=4,86⋅103 ИПЦ=109, В=6,92⋅103 ИПЦ=105, В=4,56⋅103 ИПЦ=105, В=1,75⋅103 ИПЦ=108, В=2,09⋅104 ИПЦ=105, В=3,57⋅104 ИПЦ=126, В=1,85⋅103 ИПЦ=108, В=2,68⋅103 ИПЦ=105, В=1,12⋅104 ИПЦ=116,В= 1,28ּ104 Из этой таблицы видно, что кластер С1 резко отличается от других по целевому параметру ИПЦ, а остальные кластеры довольно близки. В этом смысле полученная ранее двухцветная карта Кохонена может быть признана вполне удовлетворительной. Другими словами, существенно различных кластеров имеется все-таки только два. 8. Попытаемся дальше лучше понять процесс обучения. Для этого поварьируем параметры обучения. Перейдем к главному меню Program, выберем пункт Preferences и команду Set Custom. В открывшемся окне Program preferences на вкладке Параметры обучения сети (Training parameters) мы увидим. Мы уже упоминали, что эти параметры рекомендуется модифицировать только квалифицированным пользователям. С учетом этого постараемся действовать осторожно. Поварьируем 64 в обе стороны сначала первый параметр - число итераций. Установим его равным 100 и вернемся к шагу 6 нашего алгоритма. Построим новую сеть командой Create Network и отобразим соответствующую ей карту. Легко заметить, что процесс обучения заканчивается значительно быстрее. Затем выберем значение равное 500 и вновь повторим процесс и т.д. Как это влияет на кластеризацию показано ниже. Как видно, вначале вид карты Кохонена существенно менялся с ростом допустимого числа итераций. Но при числе итераций 2000 и больше карта практически не менялась. Это говорит о том, что процесс обучения стабилизировался и приобрел устойчивый характер, а полученная карта может считаться статистически приемлемой. Следовательно, установленное по умолчанию значение этого параметра выбрано удовлетворительно и его можно было не менять (в нашем случае). Соответственно, в левом нижнем углу мы видим ту же карту, что получали раньше по умолчанию. Число итераций =100 Число итераций =500 Число итераций =1000 Число итераций =2000(по молчанию) Число итераций =3000 Число итераций =10000 Вернем параметры к стандартному значению командой Set default и поработаем со вторым. Он позволяет регулировать начальную жесткость обучения в интервале [0,100]. Перейдем к 65 Program/Preferences/SetCustom. На вкладке Параметры обучения сети изменим значение этого параметра. Его влияние на результаты обучения сети показано ниже. Как видно, этот параметр существенно влияет на результаты обучения, хотя практически не влияет на скорость обучения. Его рост приводит к более дифференцированной кластеризации вплоть до того, что все образцы распадаются на два жестко изолированных кластера. Это согласуется с результатами, которые мы получили выше интуитивно. Жесткость =0 Жесткость =0,1- 0,5 Жесткость =1 Жесткость=2 (по умолчанию) Жесткость =5 Жесткость =10-100 Вернем значения по умолчанию Set default. Начнем изменять третий параметр – шаг (delta), который может принимать значения в интервале [0,10]. Результаты показаны ниже. Как видно, наблюдается довольно сложное влияние этого параметра на обучение сети и процесс кластеризации вплоть до сокращения числа кластеров до 1. Время обучения при этом практически не меняется. 66 Дельта =0 Дельта =0,01 (по умолчанию) Дельта =0,1 Дельта =1 Дельта =2 Дельта =3-10 Вернем стандартное значение третьему параметру командой Set default и поэкспериментируем с четвертым - коэффициентом спада (decay factor). Он может принимать значения в интервале [0,1]. Результаты показаны ниже. Спад =0 Спад =0,001 (по умолчанию) Спад =0,1 Спад =0,5 Спад =0,7 Спад = 1 67 Как видно, наиболее существенное влияние на обучение этот параметр оказывает вблизи нуля, а при значениях от 0,5 и выше он практически не влияет на кластеризацию. 9. Сохраним нейропроект. Перейдем на вкладку Project, выполним команду Save Project и зададим имя проекта, например, Kohonen_Vavilon_3_3.kmp. 10. Теперь можно закрыть окно программы Kohonen Map. Дальнейший анализ удобнее проводить стандартными методами в Excel. 11. Сохраним только результаты работы нейросети в Excel, начиная с ячейки М3 командой Output. M 3 В-1 4 В-2 5 В-3 В-4 В-5 В-6 В-7 В-8 В-9 В-10 В-11 В-12 В-13 В-14 В-15 В-16 В-17 В-18 В-19 В-20 В-21 В-22 В-23 В-24 В-25 В-26 В-27 В-28 В-29 В-30 В-31 34 В-32 N O … M N O… M N O … M N O … M C C C C C C C C C C C C C B C C C B C C B C C B B B B B B B B B C C C C A A A A A A A A A A A A A A A A A A A A A A A A A A A A C C C C C B C C C C C C C C C C B B B A A B B B B B A B B B B B C C C C C C C C C C C C B C C C C C C C C C B C C C C C C C C C 3 35 А-1 3 36 А-2 3 А-3 3 А-4 1 А-5 1 А-6 1 А-7 1 А-8 1 А-9 2 А-10 2 А-11 1 А-12 1 А-13 1 А-14 3 А-15 2 А-16 1 А-17 1 А-18 1 А-19 1 А-20 1 А-21 1 А-22 1 А-23 1 А-24 1 А-25 1 А-26 1 А-27 1 А-28 1 А-29 1 А-30 1 А-31 1 А-32 3 67 Н-1 3 68 Н-2 3 Н-3 3 Н-4 1 Н-5 1 Н-6 1 Н-7 1 Н-8 1 Н-9 1 Н-10 1 Н-11 1 Н-12 1 Н-13 1 Н-14 1 Н-15 1 Н-16 3 Н-17 3 Н-18 3 Н-19 3 Н-20 3 Н-21 3 Н-22 3 Н-23 3 Н-24 3 Н-25 3 Н-26 3 Н-27 3 Н-28 3 Н-29 3 Н-30 3 Н-31 3 Н-32 68 3 99 Аг-1 3 100 Аг-2 3 Аг-3 3 Аг-4 1 Аг-5 1 Аг-6 1 Аг-7 1 Аг-8 2 Аг-9 1 Аг-10 2 Аг-11 2 Аг-12 2 Аг-13 2 Аг-14 3 Аг-15 2 Аг-16 2 Аг-17 2 Аг-18 2 Аг-19 2 Аг-20 2 Аг-21 3 Аг-22 3 Аг-23 3 Аг-24 3 Аг-25 3 Аг-26 3 Аг-27 3 Аг-28 3 Аг-29 3 Аг-30 3 Аг-31 3 Аг-32 N O 3 131 К-1 C 3 132 К-2 C 3 К-3 C 2 К-4 C 2 К-5 B 2 К-6 C 1 К-7 B 1 К-8 B 1 К-9 C 2 К10 C 2 К11 C 2 К12 C 1 К13 B 1 К14 C 3 К15 C 3 К16 C 1 К17 C 2 К18 B 2 К19 A 2 К20 B 2 К21 B 2 К22 B 1 К23 C 1 К24 B 2 К25 B 1 К26 A 1 К27 A 2 К28 B 2 К29 A 1 К30 A 2 К31 A 1 162 К32 A 3 3 3 2 1 1 1 1 2 1 2 2 1 1 3 3 2 2 2 2 1 2 2 2 2 2 2 1 2 2 2 2 Кластер Значение Количество 1 1 12 2 2 9 3 3 17 4 1 21 5 2 8 6 3 10 7 1 29 8 2 30 9 3 24 Количество образцов 12. Можно также построить новые диаграммы, отображающие результаты работы сети Кохонена средствами Excel. Для этого удобно отсортировать полученную таблицу по кластерам, т.е. двум колонкам одновременно – N и O. Затем подсчитываем число образцов в каждом кластере с помощью функции БСЧЕТА( ) или ПРОМЕЖУТОЧНЫЕ ИТОГИ( ) или команды Данные/Итоги и др. Воспользуемся командой Данные/Итоги с функцией Количество значений. Получим следующую таблицу и соответствующий точечный график – наш вариант карты Кохонена. 30 30 29 20 21 17 12 10 9 10 8 0 0 1 2 3 4 5 6 7 8 Кластер Или другие типы диаграмм – пузырьковую, где диаметр пузырька соответствует количеству образцов в кластере, круговую и т.д. 1 9 2 3 4 5 8 12 9 17 218 10 29 30 24 7 Пузырьковая диаграмма 6 Круговая диаграмма 69 Контрольные задания Задание 1. Персептрон. Провести обучение, тестирование и прогнозирование сети. Допустимая ошибка обучения 0,2. Привести график Отклика сети. Варианты заданий приведены в следующей таблице: Выходные нейроны Число нейронов скрытого слоя Число обучающих примеров Число тестовых примеров Число прогнозных значений Первые буквы фамилии Вариант Входные нейроны А, Б В, Г Д, Е, Ж З, И К, Л М, Н О, П, Р С, Т, У Ф, Х, Ц, Ч,Ш Щ, Ъ, Ы, Ь, Э, Ю, Я 1 2 3 4 5 6 7 8 9 х1,х2,х3 х2,х3,х4 х3,х4,х5 х4,х5,х6 х6,х7,х1 х7,х1,х2 х1,х2,х3 х1,х2,х4 х1,х2,х5 х0 х5 х7 х0 х5 х0 х5 х5 х0 3 4 5 3 4 5 3 4 5 30 29 28 27 28 29 30 29 28 2 3 4 5 4 3 2 3 4 10 9 8 7 6 5 4 3 2 10 х1,х2,х6 х7 3 27 5 1 Выполняется на основе исходных данных таблицы, приведенной в Алгоритме 1. Заголовок этой таблицы со списком входных и выходных нейронов приведен ниже: х0 Индекс потребительских цен (ИПЦ) х1 Выручка х2 Себестоимость х3 х4 х5 СтоиПрибыль от Балансовая мость реализации прибыль основных фондов х6 х7 Рентабельность общая Рентабельность собственного капитала Задание 2. Сеть Кохонена. Выбрать главные компоненты и построить самоорганизующуюся карту Кохонена с заданным числом кластеров. Допустимые потери информации 10%. Привести вид полученной карты. Варианты заданий приведены в следующей таблице: 70 Вари ант 1 2 3 4 5 6 7 8 9 10 Число главных компонент (не менее) 7 8 9 7 8 9 7 8 9 7 Число кластеров 9 16 25 4 4 9 16 4 25 9 Число итераций 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 Жесткость Дельта Спад 1 1,1 1,2 1,3 1,4 1,5 1,6 1,7 1,8 1,9 0,01 0,02 0,03 0,04 0,05 0,06 0,07 0,08 0,09 0,1 0,001 0,002 0,003 0,004 0,005 0,006 0,007 0,008 0,009 0,01 Выполняется на основе исходных данных таблицы, приведенной в Алгоритме 6 (с.55-56). Заголовок этой таблицы приведен ниже: х0 ИПЦ х1 х2 СебеВыруч стоика мость х3 х4 х5 х6 При- Балан- Стои- Ренбыль совая мость таб. от при- основ- обреали- быль ных щая зации фондов х7 х8 х9 х10 Рен- Чис- Сред- Коэфф. таб. ло няя текущей соб- работ- зар- ликвидств ников плата ности Список рекомендуемой литературы 1. Документация по Excel Neural Network. Электрон. издание. Компания НейроОК. 2. Бэстенс Д.-Э., Ван Ден Берг В.-М., Вуд Д. Нейронные сети и финансовые рынки. Принятие решений в торговых операциях. М.: Изд-во ТВП, 1997. 3. Каллан Р. Основные концепции нейронных сетей: пер. с англ. М.: ИД «Вильямс», 2001. 71 Оглавление Характеристика пакета Excel Neural Package..................................................................3 Работа с пакетом Excel Neural Package..............................................................................7 Нейромодель «Вавилон»..........................................................................................................10 Модификация модели «Вавилон».......................................................................................34 Тестирование нейронной сети................................................................................................43 Запуск сети. Нейропрогнозирование.................................................................................48 Сеть Кохонена.................................................................................................................................54 Контрольные задания.................................................................................................................70 Список рекомендуемой литературы...................................................................................71 НЕЙРОННЫЕ СЕТИ В MS EXCEL Методические указания к практическим занятиям и лабораторным работам Редактор М. А. Титова Подписано в печать 02.10.2003. Формат 60х84/16. Бумага газетная. Офсетная печать. Уч .- изд. л. 4,02. Усл. п. л. 4,18. Тираж 100 экз. Заказ № 553. Чувашский государственный университет Типография университета 428015 Чебоксары, Московский просп., 15. 72