Библиотека |
Однако, начиная с конца 80-х годов, в научной литературе был опубликован ряд статей по нейросетевой тематике, в которых был приведен эффективный алгоритм обучения нейронных сетей и доказана возможность их использования для самого широкого круга задач.
Эти статьи возродили интерес к нейросетям в научном сообществе и последние очень скоро стали широко использоваться при исследованиях в самых разных областях науки от экспериментальной физики и химии до экономики.
Кстати, некоторые сотрудники компании "Нейропроект" начали заниматься нейронными сетями именно в то время, используя их для обработки результатов физических экспериментов.
Отчасти из-за относительной сложности и недетерминированности нейронных сетей и генетических алгоритмов, эти технологии не сразу вышли за рамки чисто научного применения. Тем не менее, с течением времени уровень доверия к новым технологиям повышался и со стороны бизнеса. С начала 90-х годов начали регулярно появляться сообщения об установках нейросетевых систем в разных компаниях, банках, корпоративных институтах. Причем сфера использования новых технологий была очень многогранной - оценка рисков, контроль технологических процессов, управлние роботами и многое другое.
Одним из самых успешных приложений нейронных сетей было прогнозирование временных рядов. Причем самым массовым было
Самой простой моделью является
Вне всякого сомнения, от такой примитивной модели не стоит ждать большой точности. Она не только не учитывает механизмы, определяющие прогнозируемые данные (этот серьезный недостаток вообще свойственен многим статистическим методам прогнозирования), но и не защищена от случайных флуктуаций, она не учитывает сезонные колебания и тренды. Впрочем, можно строить "наивные" модели несколько по-другому
В приведенной выше формуле предполагалось, что ряд усредняется по достаточно длительному интервалу времени. Однако как правило, значения временного ряда из недалекого прошлого лучше описывают прогноз, чем более старые значения этого же ряда. Тогда можно использовать для прогнозирования скользящее среднее
При прогнозировании довольно часто используется метод экспоненциальных средних, который постоянно адаптируется к данным за счет новых значений. Формула, описывающая эту модель записывается как
В этом методе есть внутренний параметр a, который определяет зависимость прогноза от более старых данных, причем влияние данных на прогноз экспоненциально убывает с "возрастом" данных. Зависимость влияния данных на прогноз при разных коэффициентах a приведена на графике.
Если производится прогнозирование с использованием модели экспоненциального сглаживания, обычно на некотором тестовом наборе строятся прогнозы при a=[0.01, 0.02, ..., 0.98, 0.99] и отслеживается, при каком a точность прогнозирования выше. Это значение a затем используется при прогнозировании в дальнейшем.
Хотя описанные выше модели ("наивные" алгоритмы, методы, основанные на средних, скользящих средних и экспоненциального сглаживания) используются при бизнес-прогнозировании в не очень сложных ситуациях, например, при прогнозировании продаж на спокойных и устоявшихся западных рынках, мы не рекомендуем использовать эти методы в задачах прогнозирования в виду явной примитивности и неадекватности моделей.
Вместе с этим хотелось бы отметить, что описанные алгоритмы вполне успешно можно использовать как сопутствующие и вспомогательные для предобработки данных в задачах прогнозирования. Например, для прогнозирования продаж в большинстве случаев необходимо проводить декомпозицию временных рядов (т.е. выделять отдельно тренд, сезонную и нерегулярную составляющие). Одним из методов выделения трендовых составляющих является использование экспоненциального сглаживания.
Постоянные сглаживания в методе Хольта идеологически играют ту же роль, что и постоянная в простом экспоненциальном сглаживании. Подбираются они, например, путем перебора по этим параметрам с каким-то шагом. Можно использовать и менее сложные в смысле количества вычислений алгоритмы. Главное, что всегда можно подобрать такую пару параметров, которая дает большую точность модели на тестовом наборе и затем использовать эту пару параметров при реальном прогнозировании.
Частным случаем метода Хольта является метод Брауна, когда a=ß.
В более простом варианте линейной регрессионной модели зависимость зависимой переменной от независимых имеет вид:
Здесь - подбираемые коэффициенты регрессии,
- компонента ошибки. Предполагается, что все ошибки независимы и нормально распределены.
Для построения регрессионных моделей необходимо иметь базу данных наблюдений примерно такого вида:
переменные | |||||
---|---|---|---|---|---|
независимые |
зависимая | ||||
№ | X1 | X2 | ... | XN | Y |
1 | x_11 | x_12 | ... | x_1N | Y_1 |
2 | x_21 | x_22 | ... | x_2N | Y_2 |
... | ... | ... | ... | ... | ... |
m | x_M1 | x_M2 | ... | x_MN | Y_m |
При работе с регрессией надо соблюдать определенную осторожность и обязательно проверить на адекватность найденные модели. Существуют разные способы такой проверки. Обязательным является статистический анализ остатков, тест Дарбина-Уотсона. Полезно, как и в случае с нейронными сетями, иметь независимый набор примеров, на которых можно проверить качество работы модели.
AR(p)+MA(q)->ARMA(p,q)->ARMA(p,q)(P,Q)->ARIMA(p,q,r)(P,Q,R)->...
Y(t)=f_0+f_1*Y(t-1)+f_2*Y(t-2)+...+f_p*Y(t-p)+E(t)
где
Y(t)-зависимая переменная в момент времени t.
f_0, f_1, f_2, ..., f_p - оцениваемые параметры.
E(t) - ошибка от влияния переменных, которые не учитываются в данной модели.
Задача заключается в том, чтобы определить f_0, f_1, f_2, ..., f_p. Их можно оценить различными способами. Правильнее всего искать их через систему уравнений Юла-Уолкера, для составления этой системы потребуется расчет значений автокорреляционной функции. Можно поступить более простым способом - посчитать их методом наименьших квадратов.
Y(t)=m+e(t)-w_1*e(t-1)-w_2*e(t-2)-...-w_p*e(t-p)
Где Y(t)-зависимая переменная в момент времени t. w_0, w_1, w_2, ..., w_p - оцениваемые параметры.
При использовании нейронных сетей легко исследовать зависимость прогнозируемой величины от независимых переменных. Например, есть предположение, что продажи на следующей неделе каким-то образом зависят от следующих параметров:
Хотелось бы построить систему, которая бы все это естесственным образом учитывала и строила бы краткосрочные прогнозы.
В такой постановке задачи большая часть классических методов прогнозирования будет просто несостоятельной. Можно попробовать построить систему на основе нелинейной множественной регрессии, или вариации сезонного алгоритма ARIMA, позволяющей учитывать внешние параметры, но это будут модели скорее всего малоэффективные (за счет субъективного выбора модели) и крайне негибкие.
Используя же даже самую простую нейросетевую архитектуру (персептрон с одним скрытым слоем) и базу данных (с продажами и всеми параметрами) легко получить работающую систему прогнозирования. Причем учет, или не учет системой внешних параметров будет определяться включением, или исключением соответствующего входа в нейронную сеть.
Более искушенный эксперт может с самого начала воспользоваться каким-либо алгоритмом определения важности (например, используя Нейронную сеть с общей регрессией и генетической подстройкой) и сразу определить значимость входных переменных, чтобы потом исключить из рассмотрения мало влияющие параметры.
Еще одно серьезное преимущество нейронных сетей состоит в том, что эксперт не является заложником выбора математической модели поведения временного ряда. Построение нейросетевой модели происходит адаптивно во время обучения, без участия эксперта. При этом нейронной сети предъявляются примеры из базы данных и она сама подстраивается под эти данные.
Недостатком нейронных сетей является их недетерминированность. Имеется в виду то, что после обучения имеется "черный ящик", который каким-то образом работает, но логика принятия решений нейросетью совершенно скрыта от эксперта. В принципе, существуют алгоритмы "извлечения знаний из нейронной сети", которые формализуют обученную нейронную сеть до списка логических правил, тем самым создавая на основе сети экспертную систему. К сожалению, эти алгоритмы не встраиваются в нейросетевые пакеты, к тому же наборы правил, которые генерируются такими алгоритмами достаточно объемные. Подробнее об этом можно почитать в книге А.А. Ежова, С.А. Шумского "Нейрокомпьютинг и его применения в экономике и бизнесе".
Тем не менее, для людей, умеющих работать с нейронными сетями и знающими нюансы настройки, обучения и применения, в практических задачах непрозрачность нейронных сетей не является сколь-нибудь серьезным недостатком.
Если входных параметров много, крайне рекомендуется не сбрасывать их сразу в нейронную сеть, а попытаться вначале провести предобработку данных, для того чтобы понизить их размерность, или представить в правильном виде. Вообще, предобработка данных - отдельная большая тема, которой следует уделить достаточно много времени, так как это ключевой этап в работе с нейронной сетью. В большинстве практических задач по прогнозированию продаж предобработка состоит из разных частей. Вот лишь один пример.
Пусть в предыдущем примере у нас есть не только историческая база данных о продажах продукта, которые мы прогнозируем, но и данные о его рекламе на телевидении. Эти данные могут выглядеть следующим образом
При использовании многослойных нейронных сетей в бизнес-прогнозировании в общем и прогнозировании продаж в частности полезно также помнить о том, что нужно аккуратно делать нормировку и что для выходного нейрона лучше использовать линейную передаточную функцию. Обобщающие свойства от этого немного ухудшаются, но сеть будет намного лучше работать с данными, содержащими тренд.
Если персептрон во время обучения запоминал предъявляемые примеры постепенно подстраивая свои внутренние параметры, то сети с общей регрессией запоминают примеры в буквальном смысле. Каждому примеру - отдельный нейрон в скрытом слое сети, а затем, во время применения сеть сравнивает предъявляемый пример с примерами, которые она помнит. Смотрит, на какие из них текущий пример похож и в какой степени и на основе этого сравнения выдаст ответ.
Отсюда следует первый недостаток такой архитектуры - когда база данных о продажах, или других величинах, которые мы прогнозируем велика, сеть станет слишком большой и будет медленно работать. С этим можно бороться предварительной кластеризацией базы данных.
Второй недостаток таких сетей особенно заметен в задачах бизнес прогнозирования - они совсем не способны "продлевать" тренд. Поэтому такие сети можно использовать только в случаях, когда рынок устойчивый, либо, после декомпозиции данных, тренд прогнозировать другими архитектурами нейронных сетей, или любыми классическими методами.