Анализ временных рядов
Временные ряды — это актуальный инструмент применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.
Временной ряд
Определение: |
Временно́й ряд (или ряд динамики) — собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку. |
Валидирование и тестирование модели временного ряда
Из-за зависимости данных временных рядов, нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано здесь. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.
Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна[1], который используем при кросс-валидации, но без переподсчёта параметра модели.
Краткое исследование данных
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,
которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.
Модели прогнозирования временных рядов
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.
Наивное предсказание
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению $Y(t + h|t) = Y(t)$.
Такие предскания предполагают, что стохастическая[2] модель генерирует случайное блуждение.
Расширение наивной модели SNAIVE — сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.
Прогнозы SNAIVE — модели описываются формулой $Y*(t+h|t) = Y(t+h-T)$.
Получаемые прогнозы следующие T шагов совпадают с предыдущими T шагами.
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).
Разделение по сезонам + любая модель
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.
$Y(t) = S(t) + T(t) + R(t)$
$S(t)$ — сезонный компонент;
$T(t)$ — компонент трендового цикла;
$R(t)$ — остаток;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$
Классическое разложение можно расширить несколькими способами.
Расширение позволяет использовать данный метод при:
- непостоянной величине сезона
- посчитать начальные и конечные значения декомпозиции
- избежать лишнего сглаживания
Обзор методов разложений ряда можно увидеть по ссылке. Используется реализация из стандартной библиотеки (рис. 6).
Одним из способов использования декомпозиции для прогнозирования будет:
1)разложить обучающий набор алгоритмом из STL.
2)посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.
3)Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:
Декомпозиция была исплементирована с помощью встроенной в стандартную библиотеку функции.
Экспоненциальное сглаживание
Экспоненциальное сглаживание[3] — один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$
with $0<⍺<1.$
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность. Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка).
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.
ARIMA, SARIMA
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.
Определение: |
Саморегрессивность — линейная комбинация старых значений. |
Определение: |
Скользящее среднее — линейная комбинация прошлых ошибок. |
ARIMA — комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд То есть рассматировать ряд разностей, а не исходный ряд.
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза. Для полного ввода в ARIMA, SARIMA читайте по ссылке.
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA (рис. 11,12).
Garch
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имели одинаковую дисперсию.
В GARСH-модели (рис. 13) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти здесь
Динамические линейные модели
Динамические линейные модели представляют другой класс моделей предсказания временных рядов(рис. 14).
Идея заключается в том, что в каждый момент времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется.
Пример динамической линейной модели ниже:
$y(t) = ⍺(t) + tβ(t) + w(t)$
$⍺(t) = ⍺(t-1) + m(t)$
$β(t) = β(t-1) + r(t)$
$w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)$
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности здесь.
TBATS
TBATS — это модели, которые основаны на экспоненциальном сглаживании(рис. 15).
Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье.
Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.
Больше информации можно прочиать тут.
Prophet
Ещё одна модель, способная взаимодействовать с несколькими сезонностями.
Это ПО с открытым исходным кодом от Фейсбука (рис. 16).
Prophet считает, что временной ряд может быть расложен следующим образом:
$y(t) = g(t) + s(t) + h(t) + ε(t)$
$g(t)$ — тренд
$s(t)$ — сезонность
$h(t)$ — каникулы
$ε(t)$ — ошибки
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье[4]. Эффект известных и заказных выходных дней может быть легко включен в модель.
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.
NNETAR
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полностью связанную нейронную сеть.
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.
LSTM
Модели cети долго-краткосрочной памяти (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей).
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.
Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано здесь).
Оценка
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.
На следующем рисунке показана средняя абсолютная ошибка (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17):
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе(рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.
Как еще больше повысить производительность
Другие методы повышения производительности моделей:
- Использование разных моделей для разных временных горизонтов
- Объединение нескольких прогнозов (например, с учетом среднего прогноза)
- Агрегация начальных данных
Последний метод можно резюмировать следующим образом:
- Разложите исходный временной ряд (например, используя STL)
- Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.
- Подбирайте модель для каждого временного ряда
- Средние прогнозы каждой модели
Заключительные замечания
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.
См. Также
Примечания
Источники Информации
- Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.
- machinelearning.ru
- Википедия: Временной ряд