На форуме Математического бюро пользователь Евгений задал вопрос, который стеснительные читатели несколько раз к ряду задавали мне в почте: «Почему вы берете ряды такой большой длины, ведь, как правило, для построения регрессионной модели достаточно от 50 значений?» Мне бы хотелось подробнее ответить на данный вопрос в нашем блоге.
История вопроса
Полвека назад, когда прогнозирование временных рядов только-только начинало свое существование, Бокс и Дженкинс написали грандиозную книгу «Анализ временных рядов, прогноз и управление», которая и по сей день фигурирует во всех списках литературы и моя диссертация — не исключение.
В этой книге исследуются временные ряды от нескольких десятков до нескольких сотен значений, анализируются, а далее для ряда из них строится модель прогнозирования. За упомянутые десятилетия системы хранения данных совершили грандиозный скачок — теперь в базах данных мы имеем тысячи, десятки и сотни тысяч, миллионы значений различных временных рядов. И ровно с этими массивами приходится иметь дело аналитику и математику. Пол века назад было очень сложно себе представить, как выполнить обработку временного ряда в 100 000 значений длиной. Словом, развитие технологий серьезно усложнило задачу прогнозирования временных рядов. В своем автореферате я писала:
— В настоящее время компаниями осуществляется накопление исторических значений экономических и физических показателей в базах данных, что существенно увеличивает объемы входной информации для задачи прогнозирования. Вместе с тем, развитие аппаратных и программных средств предоставляет все более мощные вычислительные платформы, на которых возможна реализация сложных алгоритмов прогнозирования. Кроме того, современные подходы к экономическому и техническому управлению предъявляют все более жесткие требования к точности прогнозирования. Таким образом, задача прогнозирования временных рядов усложняется одновременно с развитием информационных технологий.
Так сколько же значений нужно при прогнозировании?
При прогнозировании работа с временным рядом делится на несколько этапов. Остановимся на них подробнее.
Подготовительный этап: анализ временного ряда
На первом этапе, когда происходит анализ параметров временного ряда, ознакомление с ним, требуется использовать все имеющиеся значения ряда. На данном этапе происходит предварительная обработка данных: интерполяция пропущенных значений и корректировка (фильтрация) заведомо некорректных значений. Далее, очищенный от пропусков и неясных всплесков и провалов временной ряд анализируется: для него определяются основные характеристики — среднее значение, дисперсия и т. д.
Если у математика большой опыт в прогнозировании временных рядов или он давно работает с временными рядами одной предметной области, то часто бывает достаточно «пристального взгляда» на график значений временного ряда.
Основной этап работы с временным рядом
Когда выполнен анализ временного ряда, необходимо сделать постановку задачи прогнозирования данного ряда, а также выбрать модель прогнозирования. О том, как выбрать модель прогнозирования временного ряда и какая из существующих моделей лучше, я уже писала. А уже после этого определяется сколько значений будет в модели учитываться, исходя из постановки задачи прогнозирования, имеющихся значений, а также требований модели.
Например, очень сложно провести корректное обучение нейронной сети на 50 значениях временного ряда, учитывая, что после этого необходимо оставить те значения, где полученная сеть будет тестироваться — так называемый, тестовый период. Другой пример: очень сложно провести идентификацию ARIMAX моделей и на 100 значений — современным регрессионные модели куда сложнее, а идентификация их куда более громоздкая, чем моделей, описанных Боксом и Дженкинсом. И для первой, и для второй модели прогнозирования, которые являются наиболее популярными, требуется от нескольких сотен до нескольких тысяч значений только для проведения идентификации модели. Для разработанной мною модели прогнозирования по выборке максимального подобия указано, что «длина временного ряда должна составлять не менее 500P - 700P», где P — время упреждения, то есть количество требуемых прогнозных значений ряда. Иначе применение модели по выборке максимального подобия не имеет смысла!
Кроме того, постановка задачи прогнозирования может быть такова, что вам и 1000 значений не хватит. Например, мы делаем прогноз значений цены и объемов энергопотребления на месяц вперед в почасовом разрешении, то есть прогнозируем каждый месяц на ~700 значений вперед. Чтобы построить такой прогноз нужна солидная история, в частности, у нас учитываются все имеющиеся значения временного ряда, а это составляет более 50 000 значений для каждого ряда. А прогнозов таких мы делаем 19 штук ежемесячно.
Вывод
На первом этапе необходимо исследование всех имеющихся в распоряжении значений временного ряда. Далее, количество значений, принимаемых в расчет, будет обуславливаться двумя важнейшими факторами: постановкой задачи прогнозирования и выбранной моделью прогнозирования. В случае регрессионной модели (я тут имею в виду и регрессию, и авторегрессию) в настоящее время и при современных вычислительных мощностях 50 значениями обойтись очень сложно.
Чем больше значений ряда мы способны обработать или учесть, тем лучше для прогноза. Но всегда ли нужны абсолютно все промежуточные значения, особенно когда их несколько тысяч? Известно, что в некоторых методах избавляются от промежуточных значений, например, методом сглаживания, с целью выделить основные черты временного ряда. Иначе говоря, в погоне за мелким можно пропустить главное.
На мой взгляд, предложенный вами метод Ирина содержит как раз такой недостаток. И даже если он дает теперь хорошые результаты, то не исключено, что он допустит серьезный сбой, неточный прогноз.
Всязи с этим предлагаю использовать этот метод в сочетании с другими известными методами (имеется ввиду для получения других прогнозов для сравнения и подстраховки).
В диссертации вы, Ирина, говорите о том, что пока этот метод успешно протестирован для некоторых временных рядов. На мой взгляд, особенностью таких рядов есть то, что они близки к стационарным.
Всвязи с эим вопрос: способен ли ваш метод выявить большой выброс, скачок, особенно если такого в предистории еще не было? Ведь это в прогнозировании крайне вожно.
Евгений, спасибо за комментарий, очень любопытно!
На вот это: «а мой взгляд, предложенный вами метод Ирина содержит как раз такой недостаток» я бы ответила следующим образом. В диссертации и статьях описан базовый алгоритм прогнозирования по выборке максимального подобия, самый, если говорить кратко, простой и понятный для реализации. Ни одного нюанса в диссертацию не включено и не должно быть включено, потому что, во-первых, такие нюансы будут понятны лишь тем, кто уже реализовал эту модель (а она нова и таких пока мало), во-вторых, это мое ноу-хау. То есть за 4 года расчетов я уловила такие тонкости, о которых знают единицы и если я готова легко и просто делиться знаниями в целом и общем, с целью и привлечения посетителей на наш сайт и с целью образовательной, но я не буду тут писать о тех нюансах, тонкостях, экспертных оценках, которые я имею в своей голове за более уже чем четырехлетний опыт прогнозирования на постоянной основе с применением самых современных моделей прогнозирования. Вы можете взять другие статьи, но мой опыт (я их гору перечитала в свое время) показывает, что и там вы найдете лишь базу, основу и никаких тонкостей. А советовать у нас все умеют — это известно.
Позвольте мне вопрос: а какие, на ваш взгляд, модели прогнозирования вообще способны надежно прогнозировать всплески? Насколько «надежен» будет такой прогноз? ARIMAX – стремится к устойчивости, к среднему, нейронные сети всплеска не дадут, если его в истории не было (так они устроены). Какие модели лучшие по вашему мнению? Поделитесь в целом (без нюансов) своим опытом прогнозирования в другой области (насколько я помню, что вы занимаетесь катастрофами) — мне как раз именно это интересно, другая область. Мы специализируемся только на рынке электроэнергии и мощности, но ведь прогнозирование нужно во многих предметных областях. Какие алгоритмы используют там, есть ли что-то вообще общее с прогнозирование временных рядов?
Мой опыт в прогнозировании не большой, хотя и четыре года - это только начало. Хотя. если вы разобрались в других методах и их используете - это очень хорошо, как я написал вчера это просто необходимо в вашем случае (и не только) т.к. ваш метод применим или приспособлен только к даным одного типа, что может вызвать серьезный сбой.
Конечно же всплески прогнозировать практически невозможно, но в этом как раз и суть прогнозирования (на мой взгляд).
А насчет вашых тонкостях, нюансах и ноу-хау, так это действительно только ваша информация и кстати совсем не интересна (покрайней мере на данный момент).
У меня пока нет публикаций по прогнозированию, но есть идеи, которые я надеюсь будут реализованы.
По поводу прогнозирования катастроф - я воспринимаю эти данные как временные рыды , например. за последние 10-50 лет с годовыми или месячными показателями. Поэтому эти ряды не очень длинные, я раболал с рядами длинной 60 -120 значений. При этом , используя в конечном итоге функцию регрессии, получал неплохие результаты. Еще одна особенность этих рядов - они содержат редкие но большые всплески , которые больше во много раз чем среднее.
Воспринимайте пожалуйста Ирина мои критические замечания только как желание разобраться и помочь.
Евгений, спасибо за понимание. Я спокойно ко всякой критике отношусь, мне довольно много такого пишут.
Согласна с вами, 4 года – только начало, но сделано уже немало. Наверное, если говорить о катастрофах, то я буду с этим согласна: «конечно же, всплески прогнозировать практически невозможно, но в этом как раз и суть прогнозирования (на мой взгляд)». Однако вот на оптовом рынке электроэнергии мощности прогноз – это ежедневная процедура, которая нужна для кучи расчетов от планирования до оптимизации работы на рынке. Там не стремятся, да это и не нужно прогнозировать всплески – это сложно и трудоемко и, как вы верно заметили, почти невозможно. Но в этой области важен прогноз и нужен и от его точности во многом финансовый результат зависит, так что тут прогнозируют постоянно на тех моделях, которыми мы, Математическое бюро, как раз и занимаемся.
Спасибо за разъяснения насчет ваших прогнозов. Мне кажется, что при такой длине ряда, конечно, нужно использовать все, что только есть. Например, в задачах прогнозирования бывают ряды длинной 150 000 значений (индексы биржевые, например), то тут 10 раз подумаешь, сколько использовать для модели, а когда ряд так короток, то, безусловно, нужно все имеющееся использовать. А что за регрессия у вас: просто авторегрессия? Или какая-то нелинейная?... Я вот только что по катастрофам статьЮ из Википедии прочитала – новая и интересная область. А вы какие катастрофы прогнозируете?
А насчет вот этого «ваших тонкостях, нюансах и ноу-хау, так это действительно только ваша информация и, кстати, совсем не интересна (по крайней мере, на данный момент)» - мои экспертные знания ориентированы, кстати, в большей степени на прогнозирование в нашей именно на рынке электроэнергии. Думаю, что в вашей области с годами и работами вы будут иметь аналогичные экспертные знания, но именно в прогнозировании катастроф. А вы планируете писать диссертацию по этому поводу? Или просто старается консолидированный опыт опубликовать в статье?
В первую очередь рад за вас и даже немного завидую, что вы уже прогнозируете реальный процес, т.с. - держите руку на пульсе (сам мечтаю заняться чем то реальным). На данный момент нашел данные в интернете по катастрофам (техногенным, природным и другим), которые произошли в США и европе за последние 60 лет (по одному значению в год). Построил прогноз по своей схеме (а может и методу). Если сравнивать со скользящим средним, то результат лучше. С другими методами пока на сравнивал.
Дело в том. что мой прогноз строится как среднее значение для нескольких будущих. поэтому однозначно сравнивать нет возможности. Использую пока линейную регрессию (хотя нелинейная допускается) для предварительно обработанных данных временого ряда. Как я уже говорил, результаты еще не опубликованы, поэтому говорить об качестве, или методе в подробностях еще слишком рано. Еще одной особенностю моего подхода есть то, что как раз много данных и не нужно - 60 120 вполне хватает, при этом коефициент корреляции в отдельных случаях достигает значений 0, 96.
На счет диссертации - я уже 9 лет как к.ф.-м.н. (защищался по механике). Прогнозированием занимаюсь второй год. Задача минимум - опубликовать несколько статей по прогнозированию, а там будет видно.
Спасибо за быстрые и подробные ответы, а также за вопросы.
И вам спасибо за комментарии, а то пишут к нам все в основном в почту, но мы теперь всех помаленьку переводим на форум, чтобы попугаями не работать. С вашей темой я вам удачи желаю!
Так как у нас ресурс образовательный в том числе, если будут у вас материалы, которыми вы б желали поделиться – даже не обязательно сугубо научная статья со всеми ее сухостями и формальностями, а просто краткий опыт, оформленный в виде материала блога (как у нас), то присылайте, мы можем у себя разместить с указанием авторства. В целом у нас ресурс о прогнозировании временных рядов и мы рады тем, кто этим вопросом занимается и готов делиться знаниями. Например, теперь договариваемся с одним аналитиком об обмене материалами – для нас это ценно.
Ирина, не прететдую на "сухость" или научность, но если позволите буду и дальше критиковать вашы подходы или методы. Очевидно не один метод не может учесть все подходы в прогнозировании, а ваш метод как мне кажется еще мало кто критиковал. вы уже многое сделали , в том числе уточнили, подстроились и исправились., но судя по вашым публикациям (поймите меня правильно , это не в обиду) - ваш метод как мне кажеться построен на аналогии (по сути вы его так и называете- отдать вам должное пишете правду в самом названии) , но что главное , (снова мне так кажется) на одной аналогии прогоз строить нельзя. Извините за грубую критику, но надеюсь, вы как математик, меня поймете.
И еще немного добавлю. Если используете ваш метод на реальных процесах, то наверяка (иначе это былобы просто глупо) вы используете классические методы прогозироавния в дополнении или как проверку вашых результатов.
И в завершении , давайте искать вы , я , и многие другие - может что то найдем. Прогнозирование - открытая область.
Евгений, вы неутомимы — хотите критиковать, критикуйте! В действительности, мне это все равно приятно, потому что в мои наработки народ вникает, а они не просто мертвым грузом тут лежат. Мне часто и вопросы задают с уточнениями, как то или се посчитать. Так что здесь могу лишь поблагодарить за внимание к моей работе!
Насчет вашего мнения: «главное, (снова мне так кажется) на одной аналогии прогноз строить нельзя». Вы знаете, фраза звучит несколько голословно, то есть если мы в математике говорим, что что-то можно и нельзя, то просто фразой тут отделаться сложно, надобно привести этому доказательства, обоснования.
Меня учили так: есть задача, ее нужно решить. Я решила задачу свою так, как сумела, решила на новый лад и всю новизну вынесла в диссертацию. В той же диссертации, как вы знаете, надобно доказать самым широким образом, что решение мое эффективно. Я это сделала весьма на большом числе временных рядов. Конечно, нельзя говорить, что есть одно универсальное решение для всего на свете, иначе бы мы имели только его — и все. Здесь же, как вы верно заметили, моделей и подходов много, народу занимается этим еще больше, так что не только тут откроют еще что-то новое, но и может, в конечном итоге, даже к некоторой универсальности придут.
Очень интересная дискуссия. Пожалуй, внесу свою лепту. :) Некоторое время назад я тоже частенько задавался вопросом, сколько же исторических данных нужно включить в анализ, чтобы получить достоверный прогноз. Просто голову над этим сломал и перепробовал без малого сотню разных способов, пока не нашел для себя ответ… Евгений, конечно прав, что стационарные временные ряды лучше поддаются прогнозированию с помощью регрессионной модели, нежели нестационарные. Но нюанс состоит в том, что стационарные временные ряды отличаются от нестационарных тем, что в последних мы просто «не видим» скрытую модель динамики ряда.
Так вот, возвращаясь к вопросу о том, сколько же нужно учитывать исторических данных в модели, я бы ответил так – учитывать нужно ровно столько, чтобы были включены все коррекции ряда, вызванные всеми влияющими факторами, которые для нас принципиальны. А как определить, влияние всех ли факторов включено в исследуемый кусок истории или нет? – Только эмпирическим методом. Если модель работает, значит все сделано правильно и все факторы учтены. Если применить эту же модель в другой предметной области, то нет никакой гарантии, что прогноз даст адекватный результат. Если Ирина говорит, что ее метод работает в энергетике, значит так оно и есть. И это совсем не означает, что аналогичная модель подойдет Евгению для анализа динамики катастроф – там другие релевантные факторы.
По моему опыту, можно получать достаточно точный прогноз даже на нестационарных рядах, включая в анализ лишь релевантные точки (они отражают динамику поведения ряда) и количество этих точек зависит лишь от требований к качеству прогноза и ни от чего более. Методика поиска таких точек полностью зависит от предметной области анализа.
Андрей, спасибо за комментарий!
В целом я согласна, вы правы: многое зависит от предметной области. Но не забывайте, что есть такие понятие, как квалификация специалиста. Если один человек прогнозировал только один ряд и течение года возьмется прогнозировать новый ряд, то не факт, что сможет быстро и качественно настроить свою модель. А если возьмется человек, который 10 лет прогнозировал сотни временных рядов, то, вероятнее всего, он сумеет найти нужный подход для нового ряда быстро.
Разработанная мною модель подтвердила свою эффективность на разных рядах, не только с энергетики (см четвертую главу диссертации). Да, сервис у нас ориентирован на ОРЭМ, однако прогнозировала я и на форексе, и временные ряды уровня сахара крови человека и пробки на дорогах, так что опыт ее применения показывают ее высокую эффективность для целого ряда задач. Думаю, что я сама, как ее разработчик, смогу ее весьма успешно адаптировать под множество временных рядов из различных предметный областей.
Я согласен, что идеология методики позволяет адаптировать ее практически к любой предметной области. Однако не исключено, что сам процесс адаптации будет настолько специфичен и зависим от этой предметной области, что составит едва ли не половину всей работы по применению методики в новой области. Спору нет, специалисту с многолетним опытом в предметной области проще выполнить такую работу. Однако я привык не доверяться только лишь опыту, я стараюсь вводить в используемую методику своеобразные «контрольные точки». Например, если мы хотим выяснить оптимальную длину ряда для построения прогноза заданной точности, то имеет смысл прогнать методику в аналогичных условиях на истории и/или на другом наборе аналогичных данных, а затем сравнить результаты и попытаться выявить их «сходимость». Если сходимости нет, то мы не все учли. Мне кажется, если поразмышлять глубже на эту тему, то можно выработать довольно универсальный подход по определению оптимального размера ряда для построения прогноза в любой предметной области.
Андрей,
вы противоречите сами себе :-) Сначала пишите: "Однако я привык не доверяться только лишь опыту", а далее: "если мы хотим выяснить оптимальную длину ряда для построения прогноза заданной точности, то имеет смысл прогнать методику в аналогичных условиях на истории и/или на другом наборе аналогичных данных, а затем сравнить результаты и попытаться выявить их «сходимость»"... Как по вашему второе предложение является тем, что называется накапливанием опыта? Если проделать такого рода тесты много-много раз, то и будешь понимать, сколько значений стоит учитывать, а сколько не стоит. По-моему, это и есть опыт!
Другое дело не доверять чужому опыту, а получить свой собственный. Я проходила этап такого рода тестов года 2 или даже 3 назад. Всего уже более 5,5 лет этой темой занимаюсь, так что имею как раз опыт вот таких проверок на разных рядах. У меня теперь другой этап, я теперь снова тестирую, но несколько в другой области, уж не на длине временного ряда :-) Это процесс бесконечный!
Я имел ввиду, что личный опыт - это полученное эмпирическим путем знание, которое дает весьма субъективную оценку объекту исследования. Поэтому подобная оценка требует проверки с помощью научного подхода. Т.е. нужна контрольная методика, которая позволит подтвердить или опровергнуть результаты, полученные с помощью экспертной оценки. Полагаю, такую методику можно выработать в том числе и для определения длины ряда для построения прогноза. Опять же, это мое мнение, основанное на собственном опыте, а значит оно так же субъективно. :)
:-))) Андрей, спасибо за мнение!
Да, именно, оно также субъективно. Пока в области анализа временных рядов нет того фундамента, который позволил бы давать оценку объективную — так что исследователям есть чем заняться.
А ваш опыт, на который вы ссылаетесь, он из какой предметной области, я так понимаю, что не из финансов и не из анализа временных рядов... Так?
Ну, почему же? Как раз из финансов, из нестационарных временных рядов. :) В своей области я точно знаю, как формализовать методику определения кол-во течек ряда, необходимую для прогноза...