<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=3oleg+krylov</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=3oleg+krylov"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/3oleg_krylov"/>
		<updated>2026-06-11T18:40:53Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78762</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78762"/>
				<updated>2021-01-17T20:06:27Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Методы увеличения производительности */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Блок [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[Оценка качества в задачах классификации и регрессии|sсредняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Методы увеличения производительности===&lt;br /&gt;
&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов,&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза),&lt;br /&gt;
*Агрегация начальных данных.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Подробнее о глобальном подходе [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78761</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78761"/>
				<updated>2021-01-17T20:06:06Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Как еще больше повысить производительность */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Блок [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[Оценка качества в задачах классификации и регрессии|sсредняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Методы увеличения производительности===&lt;br /&gt;
&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов,&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза),&lt;br /&gt;
*Агрегация начальных данных.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Подробнее о глобальном подходе [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78760</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78760"/>
				<updated>2021-01-17T20:04:35Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Как еще больше повысить производительность */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Блок [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[Оценка качества в задачах классификации и регрессии|sсредняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов,&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза),&lt;br /&gt;
*Агрегация начальных данных.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Подробнее о глобальном подходе [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78759</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78759"/>
				<updated>2021-01-17T20:02:45Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Как еще больше повысить производительность */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Блок [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[Оценка качества в задачах классификации и регрессии|sсредняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов;&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза);&lt;br /&gt;
*Агрегация начальных данных;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод можно резюмировать следующим образом:&lt;br /&gt;
*Разложение исходного временного ряда;&lt;br /&gt;
*Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты;&lt;br /&gt;
*Подбор модели для каждого временного ряда;&lt;br /&gt;
*Вывод средних прогнозов каждой модели;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Подробнее о глобальном подходе [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78758</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78758"/>
				<updated>2021-01-17T20:01:43Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Заключительные замечания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Блок [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[Оценка качества в задачах классификации и регрессии|sсредняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов;&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза);&lt;br /&gt;
*'''Агрегация начальных данных;'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод можно резюмировать следующим образом:&lt;br /&gt;
*Разложение исходного временного ряда;&lt;br /&gt;
*Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты;&lt;br /&gt;
*Подбор модели для каждого временного ряда;&lt;br /&gt;
*Вывод средних прогнозов каждой модели;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Подробнее о глобальном подходе [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78757</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78757"/>
				<updated>2021-01-17T20:00:43Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Заключительные замечания */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Блок [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[Оценка качества в задачах классификации и регрессии|sсредняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов;&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза);&lt;br /&gt;
*'''Агрегация начальных данных;'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод можно резюмировать следующим образом:&lt;br /&gt;
*Разложение исходного временного ряда;&lt;br /&gt;
*Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты;&lt;br /&gt;
*Подбор модели для каждого временного ряда;&lt;br /&gt;
*Вывод средних прогнозов каждой модели;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Глобальный подход [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78756</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78756"/>
				<updated>2021-01-17T19:57:48Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Оценка */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Блок [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[Оценка качества в задачах классификации и регрессии|sсредняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов;&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза);&lt;br /&gt;
*'''Агрегация начальных данных;'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод можно резюмировать следующим образом:&lt;br /&gt;
*Разложение исходного временного ряда;&lt;br /&gt;
*Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты;&lt;br /&gt;
*Подбор модели для каждого временного ряда;&lt;br /&gt;
*Вывод средних прогнозов каждой модели;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78755</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78755"/>
				<updated>2021-01-17T19:48:52Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* LSTM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Блок [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[средняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов;&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза);&lt;br /&gt;
*'''Агрегация начальных данных;'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод можно резюмировать следующим образом:&lt;br /&gt;
*Разложение исходного временного ряда;&lt;br /&gt;
*Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты;&lt;br /&gt;
*Подбор модели для каждого временного ряда;&lt;br /&gt;
*Вывод средних прогнозов каждой модели;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78754</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78754"/>
				<updated>2021-01-17T19:47:57Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* LSTM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Модели [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[средняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов;&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза);&lt;br /&gt;
*'''Агрегация начальных данных;'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод можно резюмировать следующим образом:&lt;br /&gt;
*Разложение исходного временного ряда;&lt;br /&gt;
*Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты;&lt;br /&gt;
*Подбор модели для каждого временного ряда;&lt;br /&gt;
*Вывод средних прогнозов каждой модели;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78753</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78753"/>
				<updated>2021-01-17T19:47:41Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* LSTM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Модели [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[средняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов;&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза);&lt;br /&gt;
*'''Агрегация начальных данных;'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод можно резюмировать следующим образом:&lt;br /&gt;
*Разложение исходного временного ряда;&lt;br /&gt;
*Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты;&lt;br /&gt;
*Подбор модели для каждого временного ряда;&lt;br /&gt;
*Вывод средних прогнозов каждой модели;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78752</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78752"/>
				<updated>2021-01-17T19:47:27Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* LSTM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Модели [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[средняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов;&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза);&lt;br /&gt;
*'''Агрегация начальных данных;'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод можно резюмировать следующим образом:&lt;br /&gt;
*Разложение исходного временного ряда;&lt;br /&gt;
*Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты;&lt;br /&gt;
*Подбор модели для каждого временного ряда;&lt;br /&gt;
*Вывод средних прогнозов каждой модели;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78751</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78751"/>
				<updated>2021-01-17T19:45:52Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* NNETAR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Модели [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[средняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов;&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза);&lt;br /&gt;
*'''Агрегация начальных данных;'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод можно резюмировать следующим образом:&lt;br /&gt;
*Разложение исходного временного ряда;&lt;br /&gt;
*Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты;&lt;br /&gt;
*Подбор модели для каждого временного ряда;&lt;br /&gt;
*Вывод средних прогнозов каждой модели;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78746</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78746"/>
				<updated>2021-01-17T18:51:42Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* NNETAR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |right|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Модели [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[средняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов;&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза);&lt;br /&gt;
*'''Агрегация начальных данных;'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод можно резюмировать следующим образом:&lt;br /&gt;
*Разложение исходного временного ряда;&lt;br /&gt;
*Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты;&lt;br /&gt;
*Подбор модели для каждого временного ряда;&lt;br /&gt;
*Вывод средних прогнозов каждой модели;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78745</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78745"/>
				<updated>2021-01-17T18:51:18Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* NNETAR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |right|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Модели [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[средняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов;&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза);&lt;br /&gt;
*'''Агрегация начальных данных;'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод можно резюмировать следующим образом:&lt;br /&gt;
*Разложение исходного временного ряда;&lt;br /&gt;
*Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты;&lt;br /&gt;
*Подбор модели для каждого временного ряда;&lt;br /&gt;
*Вывод средних прогнозов каждой модели;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78744</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78744"/>
				<updated>2021-01-17T18:50:34Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* NNETAR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |right|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Модели [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[средняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов;&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза);&lt;br /&gt;
*'''Агрегация начальных данных;'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод можно резюмировать следующим образом:&lt;br /&gt;
*Разложение исходного временного ряда;&lt;br /&gt;
*Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты;&lt;br /&gt;
*Подбор модели для каждого временного ряда;&lt;br /&gt;
*Вывод средних прогнозов каждой модели;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78743</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78743"/>
				<updated>2021-01-17T18:49:58Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* NNETAR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |right|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Модели [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[средняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов;&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза);&lt;br /&gt;
*'''Агрегация начальных данных;'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод можно резюмировать следующим образом:&lt;br /&gt;
*Разложение исходного временного ряда;&lt;br /&gt;
*Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты;&lt;br /&gt;
*Подбор модели для каждого временного ряда;&lt;br /&gt;
*Вывод средних прогнозов каждой модели;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78742</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78742"/>
				<updated>2021-01-17T18:49:41Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* NNETAR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |right|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Модели [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[средняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов;&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза);&lt;br /&gt;
*'''Агрегация начальных данных;'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод можно резюмировать следующим образом:&lt;br /&gt;
*Разложение исходного временного ряда;&lt;br /&gt;
*Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты;&lt;br /&gt;
*Подбор модели для каждого временного ряда;&lt;br /&gt;
*Вывод средних прогнозов каждой модели;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78741</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78741"/>
				<updated>2021-01-17T18:49:15Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* NNETAR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |right|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Модели [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[средняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов;&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза);&lt;br /&gt;
*'''Агрегация начальных данных;'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод можно резюмировать следующим образом:&lt;br /&gt;
*Разложение исходного временного ряда;&lt;br /&gt;
*Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты;&lt;br /&gt;
*Подбор модели для каждого временного ряда;&lt;br /&gt;
*Вывод средних прогнозов каждой модели;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78740</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=78740"/>
				<updated>2021-01-17T18:48:37Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}}  это актуальный инструмент, применимый во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенности, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Временно́й ряд (или ряд динамики)''' {{---}} собранный в разные моменты времени статистический материал о значении каких-либо параметров (в простейшем случае одного) исследуемого процесса. Каждая единица статистического материала называется измерением или отсчётом. Во временном ряде для каждого отсчёта должно быть указано время измерения или номер измерения по порядку.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Как и большинство других видов анализа, анализ временных рядов предполагает, что данные содержат систематическую составляющую (обычно включающую несколько компонент) и случайный шум (ошибку), который затрудняет обнаружение регулярных компонент. Большинство методов исследования временных рядов включает различные способы фильтрации шума, позволяющие увидеть регулярную составляющую более отчетливо. Большинство регулярных составляющих временных рядов принадлежит к двум классам: они являются либо трендом, либо сезонной составляющей. Тренд представляет собой общую систематическую линейную или нелинейную компоненту, которая может изменяться во времени. Сезонная составляющая {{---}} это периодически повторяющаяся компонента. Оба эти вида регулярных компонент часто присутствуют в ряде одновременно.&lt;br /&gt;
&lt;br /&gt;
==Валидирование и тестирование модели временного ряда==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Данные упорядочены относительно неслучайных моментов времени, и, значит, в отличие от случайных выборок, могут содержать в себе дополнительную информацию, поэтому нельзя пользоваться обычными способами валидации. Чтобы избежать смещения оценки необходимо удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующиx наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 1.] Кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описана следующей картинкой (рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если необходимо предсказать следующие $n$ шагов, то можно заранее кросс-валидировать $1,2,...,n$.&amp;lt;br&amp;gt; Таким образом можно также сравнить качество предсказаний для разных временных горизонтов.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, можно применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна&amp;lt;ref&amp;gt;[https://wiki.loginom.ru/articles/windowing-method.html loginom: Метод скользящего окна]&amp;lt;/ref&amp;gt;, который используем при кросс-валидации, но без переподсчёта параметра модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 2.] Набор данных описывающий график производства электрооборудования]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В данной части используется несколько разных моделей для предсказания изменений в промышленном производстве,&amp;lt;br&amp;gt; которые для примера будем оценивать численно, как количество электрооборудования, произведённого в зоне Евро (рис. 2, 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|right|300px|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 3.] Сезонные колебания]]&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования (компьютеры электрические и оптические приборы) в зоне евро (17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
&lt;br /&gt;
Существует 10 моделей прогнозирования, у каждой имеются свои достоинства и недостатки. Ниже, используя каждую модель, предскажем 12 месяцев, соответственно, значение $t+1, t+2, …, t + 12$.&lt;br /&gt;
Имеет смысл использовать среднюю абсолютную ошибку для работы оценки модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивное предсказание===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 4.] Наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаемому значению&lt;br /&gt;
$Y(t + h|t) = Y(t)$.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; модель генерирует [[Участник:Mk17.ru|случайное блуждание]].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 5.] Cезонно-наивная]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели сезонно-наивная модель (англ. Season Naive, SNAIVE) {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности $T$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE-модели описываются формулой $\dot{Y}(t+h|t) = Y(t+h-T)$.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующие $T$ шагов совпадают с предыдущими $T$ шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий графики показывают предсказания двух моделей для 2007 года (рис. 4, 5).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 6.] Методы разложения ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они восприимчивы к периодическим (сезонным) изменениям (ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$Y(t) = S(t) + T(t) + R(t)$&amp;lt;br&amp;gt;&lt;br /&gt;
$S(t)$ {{---}} сезонный компонент.&amp;lt;br&amp;gt;&lt;br /&gt;
$T(t)$ {{---}} компонент трендового цикла.&amp;lt;br&amp;gt;&lt;br /&gt;
$R(t)$ {{---}} остаток.&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы оценить тренд $T(t)$ через скользящее среднее, посчитать $S(t)$, как среднее без тренда $Y(t) - T(t)$ для каждого сезона.&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как $R(t) = Y(t) - T(t)-S(t)$.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 7.] Сезонные индексы ряда]]&lt;br /&gt;
Классическое разложение можно расширить несколькими способами.&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
* непостоянной величине сезона;&lt;br /&gt;
* посчитать начальные и конечные значения декомпозиции;&lt;br /&gt;
* избежать лишнего сглаживания;&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Используется реализация из стандартной библиотеки (рис. 6).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1) Разложить обучающий набор алгоритмом.&amp;lt;br&amp;gt;&lt;br /&gt;
2) Посчитать сезонное отклонение ряда $Y(t) - S(t)$, используя любую модель для прогнозирования сезонно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3) Добавить прогнозам сезонность последнего временного периода во временном ряду (в нашем случае $S(t)$ для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 8.] Декомпозиция и наивная модель]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает расчёты для 2007 года с использованием декомпозиции и наивной модели (рис. 8) для сезонно-изменяемого временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 9.] Данные полученные для 2007 года с использованием модели экспоненциального сглаживания]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме он называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
$Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …$&amp;lt;br&amp;gt;&lt;br /&gt;
где''''' $0&amp;lt;⍺&amp;lt;1$ '''''. Если $⍺ = 0$, то текущие наблюдения игнорируются, если же $⍺ = 1$, то полностью игнорируются предыдущие наблюдения.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 10.] Данные полученные для 2007 года, с использованием модели экспоненциального сглаживания и декомпозиции]]&lt;br /&gt;
&lt;br /&gt;
Заметно, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны [https://otexts.com/fpp2/taxonomy.html здесь].&lt;br /&gt;
&lt;br /&gt;
Следующие графики (рис. 9, 10) описывают прогнозы данных полученные для 2007 года, с использованием модели экспоненциального сглаживания (выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 11.] SARIMA]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, интегрированная модель авторегрессии скользящего среднего  (англ. autoregressive integrated moving average, ARIMA) также часто используются для прогноза временных рядов.&lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Авторегрессионная модель''' {{---}} модель временных рядов, в которой значения временного ряда в данный момент линейно зависят от предыдущих значений этого же ряда.&lt;br /&gt;
}} &lt;br /&gt;
{{Определение &lt;br /&gt;
|definition = &lt;br /&gt;
'''Процесс авторегрессии''' {{---}} последовательная зависимость элементов временного ряда, выразается следующим уравнением:&lt;br /&gt;
$x(t) = \psi + \phi_1 * x_(t-1) + \phi_2 * x_(t-2) + \phi_3 * x_(t-3) + ... + \epsilon$&amp;lt;br&amp;gt;&lt;br /&gt;
Где $\psi$ {{---}} свободный член (константа).&amp;lt;br&amp;gt;&lt;br /&gt;
$\phi_1, \phi_2, \phi_3, ...$ {{---}} параметры авторегрессии.&lt;br /&gt;
}}&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Скользящее среднее''' {{---}} общее название для семейства функций, значения которых в каждой точке определения равны некоторому среднему значению исходной функции за предыдущий период.&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{Определение&lt;br /&gt;
|definition =&lt;br /&gt;
'''Процесс скользящего среднего''' {{---}} в процессе скользящего среднего каждый элемент ряда подвержен суммарному воздействию предыдущих ошибок. В общем виде это можно записать следующим образом:&lt;br /&gt;
$x_t = \mu + \epsilon_t - \theta_1 * \epsilon_{t-1} - \theta_2 * \epsilon_{t-2} - ...$ &amp;lt;br&amp;gt;&lt;br /&gt;
Где $\mu$ {{---}} константа.&amp;lt;br&amp;gt;&lt;br /&gt;
$\theta_1, \theta_2, \theta_3, ...$ {{---}} параметры скользящего среднего.&lt;br /&gt;
}} &lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 12.] SARIMA декомпозированная]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуются стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд.&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд.&lt;br /&gt;
&lt;br /&gt;
Сезонная интегрированная модель авторегрессии скользящего среднего (англ. season autoregressive integrated moving average, SARIMA) учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза.&lt;br /&gt;
Более подробную информацию про ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке].&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года, с использованием модели SARIMA (рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 13.] ARMA]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях считалось, что слагаемое ошибки в стохастическом процессе генерации временного ряда имело одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARСH-модели (англ. Generalized AutoRegressive Conditional Heteroscedasticity, GARCH) предполагается, что слагаемое ошибки следуют авторегрессионному скользящему среднему (англ. AutoRegressive Moving Average, ARMA), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется (рис. 13).&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, более подробное введение в Garsh можно найти [https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf здесь].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 14.] DLM]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов (рис. 14).&lt;br /&gt;
Идея заключается в том, что в каждый момент времени $t$ эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = ⍺(t) + tβ(t) + w(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$⍺(t) = ⍺(t-1) + m(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$β(t) = β(t-1) + r(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$w(t)$ ~ $N(0,W)$, $m(t)$ ~ $N(0,M)$, $r(t)$ ~ $N(0,R)$.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты $a(t)$ и $b(t)$ следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf здесь].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 15.] DLM]]&lt;br /&gt;
TBATS (англ. Trigonometric seasonality, Box-Cox transformation, ARMA errors, Trend and Seasonal components) {{---}} это модели, которые основаны на экспоненциальном сглаживании (рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на [[L 2-теория рядов Фурье|рядах Фурье]]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями (рис. 16). &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука ([https://facebook.github.io/prophet/ ссылка]).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 16.] Prophet]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть разложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
$y(t) = g(t) + s(t) + h(t) + ε(t)$,&amp;lt;br&amp;gt;&lt;br /&gt;
$g(t)$ {{---}} тренд,&amp;lt;br&amp;gt;&lt;br /&gt;
$s(t)$ {{---}} сезонность,&amp;lt;br&amp;gt;&lt;br /&gt;
$h(t)$ {{---}} каникулы, т.е аномальные данные,&amp;lt;br&amp;gt;&lt;br /&gt;
$ε(t)$ {{---}} ошибки.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье&amp;lt;ref&amp;gt;[[Определение ряда Фурье]]&amp;lt;/ref&amp;gt;. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель Prophet вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturing.png |right|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 17.] NNETAR]]&lt;br /&gt;
Модель авторегрессии нейронной сети (англ. Neural NETwork AutoRegression, NNETAR) представляет собой полносвязную [https://neerc.ifmo.ru/wiki/index.php?title=Нейронные_сети,_перцептрон нейронную сеть]. &lt;br /&gt;
[[Файл:NNETARElectriacalequipmntManufacturingDecomposition.png |left|300px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 18.] NNETAR c декомпозицией]]&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени $t$ и выводит прогнозируемое значение в момент времени $t + 1$. Для выполнения многоэтапных прогнозов сеть применяется итеративно. &lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Модели [[:Долгая_краткосрочная_память|cети долго-краткосрочной памяти]] (англ. Long short-term memory, LSTM) могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов (как показано [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 19.] MAE с перекрестной проверкой для каждой модели]]&lt;br /&gt;
Выполнен выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Не рассчитывая его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке показана [[средняя абсолютная ошибка]] (англ. Mean Absolute Error, MAE) с перекрестной проверкой для каждой модели и для каждого временного горизонта (рис. 17): &lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для данной задачи, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, вычислим MAE на тестовом наборе (рис. 18), получив оценку, равную 5,24. На следующем рисунке можно увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb Рисунок 20.] MAE, тестовый набор]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов;&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза);&lt;br /&gt;
*'''Агрегация начальных данных;'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод можно резюмировать следующим образом:&lt;br /&gt;
*Разложение исходного временного ряда;&lt;br /&gt;
*Создание набора похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты;&lt;br /&gt;
*Подбор модели для каждого временного ряда;&lt;br /&gt;
*Вывод средних прогнозов каждой модели;&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае необходимо обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования версий c ошибками.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание, что в данном конспекте рассматривается случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните [https://arxiv.org/abs/1704.04110 здесь].&lt;br /&gt;
&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
* [[Графовые нейронные сети]]&lt;br /&gt;
* [[Компьютерное зрение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* [http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru]&lt;br /&gt;
*[https://ru.wikipedia.org/wiki/Временной_ряд Википедия: Временной ряд]&lt;br /&gt;
*[http://statsoft.ru/home/textbook/modules/sttimser.html StatSoft: Анализ временных рядов]&lt;br /&gt;
*[https://chaos.phys.msu.ru/loskutov/PDF/Lectures_time_series_analysis.pdf Лоскутов А.Ю. физ. фак. МГУ: Анализ Временных Рядов]&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:NNETARElectriacalequipmntManufacturingDecomposition.png&amp;diff=78738</id>
		<title>Файл:NNETARElectriacalequipmntManufacturingDecomposition.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:NNETARElectriacalequipmntManufacturingDecomposition.png&amp;diff=78738"/>
				<updated>2021-01-17T18:46:45Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:NNETARElectriacalequipmntManufacturing.png&amp;diff=78737</id>
		<title>Файл:NNETARElectriacalequipmntManufacturing.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:NNETARElectriacalequipmntManufacturing.png&amp;diff=78737"/>
				<updated>2021-01-17T18:43:15Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77500</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77500"/>
				<updated>2021-01-11T14:41:37Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Garch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL.&amp;lt;br&amp;gt;&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке]&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
[[Файл:GARCH.png |thumb|left|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|Рисунок 14. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов(рис. 14).&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|Рисунок 15. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
TBATS {{---}} это модели, которые основаны на экспоненциальном сглаживании(рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука (рис. 16).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|Рисунок 16. Prophet&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|Рисунок 17. MAE с перекрестной проверкой для каждой модели&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта(рис. 17): &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе(рис. 18), получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|Рисунок 18. MAE, тестовый набор&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77499</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77499"/>
				<updated>2021-01-11T14:38:26Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Экспоненциальное сглаживание */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL.&amp;lt;br&amp;gt;&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Экспоненциальное сглаживание&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Экспоненциальное_сглаживание Википедия: Экспоненциальное сглаживание]&amp;lt;/ref&amp;gt; {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке]&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
[[Файл:GARCH.png |thumb|right|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|Рисунок 14. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов(рис. 14).&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|Рисунок 15. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
TBATS {{---}} это модели, которые основаны на экспоненциальном сглаживании(рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука (рис. 16).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|Рисунок 16. Prophet&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|Рисунок 17. MAE с перекрестной проверкой для каждой модели&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта(рис. 17): &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе(рис. 18), получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|Рисунок 18. MAE, тестовый набор&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77498</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77498"/>
				<updated>2021-01-11T14:31:53Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Как валидировать и тестировать модель временного ряда? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется [[Кросс-валидация|кросс-валидацией]] временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL.&amp;lt;br&amp;gt;&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке]&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
[[Файл:GARCH.png |thumb|right|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|Рисунок 14. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов(рис. 14).&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|Рисунок 15. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
TBATS {{---}} это модели, которые основаны на экспоненциальном сглаживании(рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука (рис. 16).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|Рисунок 16. Prophet&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|Рисунок 17. MAE с перекрестной проверкой для каждой модели&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта(рис. 17): &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе(рис. 18), получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|Рисунок 18. MAE, тестовый набор&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77497</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77497"/>
				<updated>2021-01-11T14:28:51Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой [[Вариации регрессии|регрессии]], существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс&amp;lt;ref&amp;gt;[https://ru.wikipedia.org/wiki/Стохастичность Википедия: Стохастичность]&amp;lt;/ref&amp;gt; Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL.&amp;lt;br&amp;gt;&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке]&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
[[Файл:GARCH.png |thumb|right|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|Рисунок 14. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов(рис. 14).&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|Рисунок 15. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
TBATS {{---}} это модели, которые основаны на экспоненциальном сглаживании(рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука (рис. 16).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|Рисунок 16. Prophet&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|Рисунок 17. MAE с перекрестной проверкой для каждой модели&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта(рис. 17): &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе(рис. 18), получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|Рисунок 18. MAE, тестовый набор&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77495</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77495"/>
				<updated>2021-01-11T14:18:20Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Оценка */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL.&amp;lt;br&amp;gt;&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке]&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
[[Файл:GARCH.png |thumb|right|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|Рисунок 14. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов(рис. 14).&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|Рисунок 15. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
TBATS {{---}} это модели, которые основаны на экспоненциальном сглаживании(рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука (рис. 16).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|Рисунок 16. Prophet&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
[[Файл:Evaluation.png |right|600px|thumb|Рисунок 17. MAE с перекрестной проверкой для каждой модели&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта(рис. 17): &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе(рис. 18), получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Cross-validated MAE.png |left|thumb|Рисунок 18. MAE, тестовый набор&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77494</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77494"/>
				<updated>2021-01-11T14:12:53Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Prophet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL.&amp;lt;br&amp;gt;&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке]&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
[[Файл:GARCH.png |thumb|right|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|Рисунок 14. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов(рис. 14).&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|Рисунок 15. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
TBATS {{---}} это модели, которые основаны на экспоненциальном сглаживании(рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука (рис. 16).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|Рисунок 16. Prophet&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77493</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77493"/>
				<updated>2021-01-11T14:12:11Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* TBATS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL.&amp;lt;br&amp;gt;&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке]&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
[[Файл:GARCH.png |thumb|right|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|Рисунок 14. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов(рис. 14).&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|Рисунок 15. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
TBATS {{---}} это модели, которые основаны на экспоненциальном сглаживании(рис. 15).&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|Рисунок 16. Prophet&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77491</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77491"/>
				<updated>2021-01-11T14:10:30Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Prophet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL.&amp;lt;br&amp;gt;&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке]&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
[[Файл:GARCH.png |thumb|right|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|Рисунок 14. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов(рис. 14).&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|Рисунок 15. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
TBATS {{---}} это модели, которые основаны на экспоненциальном сглаживании.&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Prophet.png |right|thumb|Рисунок 16. Prophet&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77490</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77490"/>
				<updated>2021-01-11T14:08:29Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* TBATS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL.&amp;lt;br&amp;gt;&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке]&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
[[Файл:GARCH.png |thumb|right|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|Рисунок 14. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов(рис. 14).&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|Рисунок 15. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
TBATS {{---}} это модели, которые основаны на экспоненциальном сглаживании.&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77489</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77489"/>
				<updated>2021-01-11T14:07:55Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* TBATS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL.&amp;lt;br&amp;gt;&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке]&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
[[Файл:GARCH.png |thumb|right|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|Рисунок 14. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов(рис. 14).&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|Рисунок 15. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
TBATS {{---}} это модели, которые основаны на экспоненциальном сглаживании.&amp;lt;br&amp;gt; Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77488</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77488"/>
				<updated>2021-01-11T14:06:24Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* TBATS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL.&amp;lt;br&amp;gt;&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке]&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
[[Файл:GARCH.png |thumb|right|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|Рисунок 14. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов(рис. 14).&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
[[Файл:TBATS_Electrical.png |left|thumb|Рисунок 15. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. &amp;lt;br&amp;gt;Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77486</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77486"/>
				<updated>2021-01-11T14:02:56Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Динамические линейные модели */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL.&amp;lt;br&amp;gt;&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке]&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
[[Файл:GARCH.png |thumb|right|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
[[Файл:DLM+Decomposition.png|right|thumb|Рисунок 14. DLM&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов(рис. 14).&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77485</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77485"/>
				<updated>2021-01-11T14:00:40Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Garch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL.&amp;lt;br&amp;gt;&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке]&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
[[Файл:GARCH.png |thumb|right|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77484</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77484"/>
				<updated>2021-01-11T13:59:47Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* ARIMA, SARIMA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL.&amp;lt;br&amp;gt;&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
[[Файл:SARIMA.png |thumb|left|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|thumb|right|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по [https://otexts.com/fpp2/arima.html ссылке]&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12).&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
[[Файл:GARCH.png |thumb|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77480</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77480"/>
				<updated>2021-01-11T13:55:40Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Экспоненциальное сглаживание */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL.&amp;lt;br&amp;gt;&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|left|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|right|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по ссылке&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
[[Файл:GARCH.png |thumb|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77478</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77478"/>
				<updated>2021-01-11T13:53:49Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Разделение по сезонам + любая модель */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|left|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&amp;lt;br&amp;gt;&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL.&amp;lt;br&amp;gt;&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда.&amp;lt;br&amp;gt;&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|right|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по ссылке&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
[[Файл:GARCH.png |thumb|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77477</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77477"/>
				<updated>2021-01-11T13:48:12Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Наивная */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года)&lt;br /&gt;
&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по ссылке&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
[[Файл:GARCH.png |thumb|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77476</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77476"/>
				<updated>2021-01-11T13:47:03Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Наивная */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&lt;br /&gt;
&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года)&lt;br /&gt;
&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по ссылке&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
[[Файл:GARCH.png |thumb|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77475</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77475"/>
				<updated>2021-01-11T13:45:47Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Наивная */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&lt;br /&gt;
&lt;br /&gt;
Расширение наивной модели (рис. 5)SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|left|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Прогнозы SNAIVE - модели описываются формулой &amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года)&lt;br /&gt;
&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по ссылке&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
[[Файл:GARCH.png |thumb|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77474</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77474"/>
				<updated>2021-01-11T13:42:13Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Наивная */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|middle|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
 Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&lt;br /&gt;
&lt;br /&gt;
Расширение наивной модели (рис. 5) {{---}} SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T. &amp;lt;br&amp;gt;Прогнозы SNAIVE - модели описываются формулой&lt;br /&gt;
&amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года)&lt;br /&gt;
&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по ссылке&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
[[Файл:GARCH.png |thumb|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77473</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77473"/>
				<updated>2021-01-11T13:40:15Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Краткое исследование данных */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]] Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&lt;br /&gt;
&lt;br /&gt;
Расширение наивной модели (рис. 5) {{---}} SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T. &amp;lt;br&amp;gt;Прогнозы SNAIVE - модели описываются формулой&lt;br /&gt;
&amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|middle|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года)&lt;br /&gt;
&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по ссылке&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
[[Файл:GARCH.png |thumb|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77472</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77472"/>
				<updated>2021-01-11T13:38:14Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Как валидировать и тестировать модель временного ряда? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]] Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&lt;br /&gt;
&lt;br /&gt;
Расширение наивной модели (рис. 5) {{---}} SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T. &amp;lt;br&amp;gt;Прогнозы SNAIVE - модели описываются формулой&lt;br /&gt;
&amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|middle|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года)&lt;br /&gt;
&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по ссылке&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
[[Файл:GARCH.png |thumb|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77471</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77471"/>
				<updated>2021-01-11T13:37:06Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано [https://robjhyndman.com/hyndsight/tscv/ здесь]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]] Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&lt;br /&gt;
&lt;br /&gt;
Расширение наивной модели (рис. 5) {{---}} SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T. &amp;lt;br&amp;gt;Прогнозы SNAIVE - модели описываются формулой&lt;br /&gt;
&amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|middle|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года)&lt;br /&gt;
&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по ссылке&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
[[Файл:GARCH.png |thumb|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77470</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77470"/>
				<updated>2021-01-11T13:36:02Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано здесь [https://robjhyndman.com/hyndsight/tscv/]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]] Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&lt;br /&gt;
&lt;br /&gt;
Расширение наивной модели (рис. 5) {{---}} SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T. &amp;lt;br&amp;gt;Прогнозы SNAIVE - модели описываются формулой&lt;br /&gt;
&amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|middle|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&amp;lt;br&amp;gt;&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&amp;lt;br&amp;gt;&lt;br /&gt;
Посчитать остаток, как &amp;lt;br&amp;gt;&lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года)&lt;br /&gt;
&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по ссылке&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
[[Файл:GARCH.png |thumb|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77468</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77468"/>
				<updated>2021-01-11T12:54:10Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано здесь [https://robjhyndman.com/hyndsight/tscv/]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|300px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 4. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]] Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание(рис. 4).&lt;br /&gt;
&lt;br /&gt;
Расширение наивной модели (рис. 5) {{---}} SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T. &amp;lt;br&amp;gt;Прогнозы SNAIVE - модели описываются формулой&lt;br /&gt;
&amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png|thumb|Рисунок 5. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&lt;br /&gt;
Посчитать остаток, как &lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по [https://otexts.com/fpp2/decomposition.html ссылке]. Мы воспользуемся реализацией из стандартной библиотеки(рис. 6), которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png|thumb|Рисунок 6. Методы разложения ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года)&lt;br /&gt;
&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности (рис. 7):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png |thumb|Рисунок 7. Сезонные индексы ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели(рис. 8) для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png|thumb|Рисунок 8. Декомпозиция и наивная модель&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешенному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени.&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики(рис. 9, 10) описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ExpSmoothing.png|thumb|Рисунок 9. данные полученные для 2007 года с использованием модели экспоненциального сглаживания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png|thumb|Рисунок 10. данные полученные для 2007 года с использованием модели экспоненциального сглаживания и декомпозиции&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по ссылке&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA(рис. 11,12):&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png |thumb|Рисунок 11. SARIMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png|Рисунок 12. SARIMA декомпозированная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Garch===&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели(рис. 13) мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
[[Файл:GARCH.png |thumb|Рисунок 13. ARMA&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77462</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77462"/>
				<updated>2021-01-11T12:25:04Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано здесь [https://robjhyndman.com/hyndsight/tscv/]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|400px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|400px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png |thumb|right|500px|Рисунок 4. Сезонная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание.&lt;br /&gt;
&lt;br /&gt;
Расширение наивной модели {{---}} SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T. &amp;lt;br&amp;gt;Прогнозы SNAIVE - модели описываются формулой&lt;br /&gt;
&amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png|thumb|left|500px|Рисунок 3. Наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt; ]]&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png |thumb|right|500px|Рисунок 4. Сезонно наивная&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&lt;br /&gt;
Посчитать остаток, как &lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по ссылке***ссылка***. Мы воспользуемся реализацией из стандартной библиотеки, которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года)&lt;br /&gt;
&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешеному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ExpSmoothing.png]]&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png]]&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по ссылке&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png]]&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png]]&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
===Garch===&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
[[Файл:GARCH.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77460</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77460"/>
				<updated>2021-01-11T12:07:59Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано здесь [https://robjhyndman.com/hyndsight/tscv/]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|500px|Рисунок 2. Набор данных описывающий график производства электрооборудования&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания(рис. 3). Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png|thumb|left|500px|Рисунок 3. Сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
[[Файл:PolarSeasonalPlotMonthlyManufactureOfElectricalEquipment.png|thumb|left|500px|Рисунок 4. Полярные сезонные колебания&amp;lt;ref&amp;gt;[https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами(рис. 4).&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание.&lt;br /&gt;
&lt;br /&gt;
Расширение наивной модели {{---}} SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T. &amp;lt;br&amp;gt;Прогнозы SNAIVE - модели описываются формулой&lt;br /&gt;
&amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png]]&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png]]&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&lt;br /&gt;
Посчитать остаток, как &lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по ссылке***ссылка***. Мы воспользуемся реализацией из стандартной библиотеки, которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года)&lt;br /&gt;
&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешеному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ExpSmoothing.png]]&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png]]&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по ссылке&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png]]&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png]]&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
===Garch===&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
[[Файл:GARCH.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77457</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77457"/>
				<updated>2021-01-11T11:53:40Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано здесь [https://robjhyndman.com/hyndsight/tscv/]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы)(рис. 2) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png|thumb|left|500px|Рисунок 2. Набор данных описывающий график производства электрооборудования]]&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания. Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png]]&lt;br /&gt;
[[Файл:PolarSeasonalPlotMonthlyManufactureOfElectricalEquipment.png]]&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами.&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание.&lt;br /&gt;
&lt;br /&gt;
Расширение наивной модели {{---}} SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T. &amp;lt;br&amp;gt;Прогнозы SNAIVE - модели описываются формулой&lt;br /&gt;
&amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png]]&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png]]&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&lt;br /&gt;
Посчитать остаток, как &lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по ссылке***ссылка***. Мы воспользуемся реализацией из стандартной библиотеки, которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года)&lt;br /&gt;
&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешеному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ExpSmoothing.png]]&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png]]&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по ссылке&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png]]&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png]]&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
===Garch===&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
[[Файл:GARCH.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* [https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77456</id>
		<title>Анализ временных рядов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D1%80%D1%8F%D0%B4%D0%BE%D0%B2&amp;diff=77456"/>
				<updated>2021-01-11T11:50:47Z</updated>
		
		<summary type="html">&lt;p&gt;3oleg krylov: /* Краткое исследование данных */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Временные ряды {{---}} это актуальный инструмент применимые во множестве решений, от предсказания цен на акции, прогнозов погоды, планирования бизнеса, до распределения ресурсов. Несмотря на то, что прогнозирование может быть сведено к построению контролируемой регрессии, существуют особенноссти, связанные с временным характером наблюдений, которые необходимо учитывать, используя специальные инструменты.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Временной ряд==&lt;br /&gt;
Обычно временной ряд представляется как стохастический процесс Y(t), то есть ряд случайных переменных. В момент предсказания мы находимся в моменте t и нужно предположить  значение Y(t+b), использую только информацию, доступную в момент t.&lt;br /&gt;
&lt;br /&gt;
==Как валидировать и тестировать модель временного ряда?==&lt;br /&gt;
Из-за временных зависимостей данных временных рядов, мы не можем пользоваться обычными способами валидации. Чтобы избежать смещения оценки мы должны удостовериться, что обучающие наборы данных содержат только наблюдения, которые произошли до событий из валидирующий наборов.&lt;br /&gt;
&lt;br /&gt;
Возможным способом преодоления данной проблемы будет использование скользящего окна, как описано здесь [https://robjhyndman.com/hyndsight/tscv/]. Эта процедура называется кросс-валидацией временного ряда и может быть вкратце описано следующей картинкой(рис. 1), в которой синие точки обозначают тренировочный набор данных, а красные соответствующие валидационные наборы данных.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:TimeSeriesCross-validation.png |thumb|left|400px|Рисунок 1. кросс-валидация временного ряда]]&amp;lt;br&amp;gt;&lt;br /&gt;
Если мы хотим предсказать следующие n шагов, то можно заранее кросс-валидировать 1,2,...,n шагов. Таким образов можно также сравнить качество предсказаний для разных [[временные горизонты|временных горизонтов]] &amp;lt;sup&amp;gt;[на 07.01.21 не создан]&amp;lt;/sup&amp;gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Определив лучшую модель, мы можем применить её ко всему обучающему набору и оценить его работу на следующем во времени наборе данных. Оценка работы может быть дана с использованием метода скользящего окна, который мы использовали при кросс-валидации, но без переподсчёта параметром модели.&lt;br /&gt;
&lt;br /&gt;
==Краткое исследование данных==&lt;br /&gt;
В следующей части мы попробуем использовать несколько разных моделей для предсказания изменений в промышленного производства, которое будем оценивать численно, как количество электро оборудования, произведённого в зоне Евро.&lt;br /&gt;
&lt;br /&gt;
Данные легко получить из пакета [https://cran.r-project.org/package=fpp2 fpp2] в R. Чтобы набор можно было использовать вне R просто запустите следующий код в среде R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''library'''(fpp2)&lt;br /&gt;
 '''write.csv'''(elecequip,file = “elecequip.csv”,row.names = FALSE)&lt;br /&gt;
&lt;br /&gt;
Набор данных описывает ежемесячное производство электрооборудования(компьютеры электрические и оптические приборы) в зоне евро(17 стран) в период с января 1996 по март 2012 года (см. график ниже). Последние два года будем использовать при тестировании.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:ManufactureOfElectricalEquipment.png]]&lt;br /&gt;
&lt;br /&gt;
Временной ряд имеет пик в конце 2000 и другой в течение 2007. Также наблюдается большой спад в конце 2008 года, который, видимо, совпал с мировым финансовым кризисом,который случился в том же году.&lt;br /&gt;
&lt;br /&gt;
В течение каждого года можно увидеть повторяющийся рисунок, описывающий сезонные колебания. Посмотрим ближе на графики каждого года, чтобы лучше его понять, представим графики в декартовых и полярных координатах.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:SeasonalPlotMonthluSeasonalPattern.png]]&lt;br /&gt;
[[Файл:PolarSeasonalPlotMonthlyManufactureOfElectricalEquipment.png]]&lt;br /&gt;
&lt;br /&gt;
Можно наблюдать сильно выраженные сезонные изменения, особенно большой спад в августе, связанный с летними каникулами.&lt;br /&gt;
&lt;br /&gt;
==Модели прогнозирования временных рядов==&lt;br /&gt;
#Наивный&lt;br /&gt;
#Разделение по сезонам (+ любая модель)&lt;br /&gt;
#Экспоненциальное сглаживание&lt;br /&gt;
#ARIMA, SARIMA&lt;br /&gt;
#GARCH&lt;br /&gt;
#Динамические линейные модели&lt;br /&gt;
#TBATS&lt;br /&gt;
#Prophet&lt;br /&gt;
#NNETAR&lt;br /&gt;
#LSTM&lt;br /&gt;
&lt;br /&gt;
Будем предсказывать 12 месяцев, соответсвтенно, значение t+1, t+2, …, t + 12.&lt;br /&gt;
&lt;br /&gt;
Будем использовать Среднюю абсолютную ошибку(MAE) для оценки работы модели.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Наивная===&lt;br /&gt;
Предсказания для каждого горизонта соотвествуют последнему наблюдаему значению&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t + h|t) = Y(t)&amp;lt;/code&amp;gt;.&lt;br /&gt;
Такие предскания предполагают, что стохастическая модель генерирует случайное блуждание.&lt;br /&gt;
&lt;br /&gt;
Расширение наивной модели {{---}} SNAIVE {{---}} сезонно-наивная модель предполагает, что временной ряд имеет сезонную компоненту, и что период сезонности T. &amp;lt;br&amp;gt;Прогнозы SNAIVE - модели описываются формулой&lt;br /&gt;
&amp;lt;code&amp;gt;Y*(t+h|t) = Y(t+h-T) &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Получаемые прогнозы следующий T шагов совпадают с предыдущими T шагами. &lt;br /&gt;
Эти модели часто используются как ориентировочные модели. Следующий график показывает предсказания двух моделей для 2007 года.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:NaiveElectricalEquipmentManufacturing.png]]&lt;br /&gt;
[[Файл:SeasonalNaiveElectricalEquipmentManufacturing.png]]&lt;br /&gt;
&lt;br /&gt;
Модели были имплементированы с помощью встроенных функций naive и snaive из пакета forecast в R.&lt;br /&gt;
&lt;br /&gt;
===Разделение по сезонам + любая модель===&lt;br /&gt;
Если данные показывают, что они воспроиимчивы к периодическим-сезонным изменениям(ежедневно, еженедельно, ежеквартально, ежегодно), то будет полезным разложить исходный временной ряд на сумму трёх компонентов.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Y(t) = S(t) + T(t) + R(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
S(t) {{---}} сезонный компонент&lt;br /&gt;
T(t) {{---}} компонент трендового цикла&lt;br /&gt;
R(t){{---}} остаток&lt;br /&gt;
&lt;br /&gt;
Существуют несколько способов для такого разложения, но наиболее простой называется классическим разложением и заключается в том, чтобы&lt;br /&gt;
Оценить тренд T(t) через скользящее среднее&lt;br /&gt;
Посчитать S(t), как среднее без тренда Y(t) - T(t) для каждого сезона&lt;br /&gt;
Посчитать остаток, как &lt;br /&gt;
		R(t) = Y(t) - T(t)-S(t)&lt;br /&gt;
&lt;br /&gt;
Классическое разложение можно расширить несколькими способами&lt;br /&gt;
Расширение позволяет использовать данный метод при:&lt;br /&gt;
	*непостоянной величине сезона&lt;br /&gt;
	*посчитать начальные и конечные значение декомпозиции&lt;br /&gt;
	*избежать лишнего сглаживания&lt;br /&gt;
&lt;br /&gt;
Обзор методов разложений ряда можно увидеть по ссылке***ссылка***. Мы воспользуемся реализацией из стандартной библиотеки, которая достаточно универсальна и надёжна.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:STL_docompositionOnIndustrialProductionIndexData.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
Одним из способов использования декомпозиции для прогнозирования будет:&lt;br /&gt;
1)разложить обучающий набор алгоритмом из STL&lt;br /&gt;
2)посчитать сезонное отклонение ряда Y(t)-S(t), используя любую модель для прогнозирования сезоно-чувствительного временного ряда&lt;br /&gt;
3)Добавить прогнозам сезонность последнего временного периода во временном ряду(в нашем случае S(t) для прошлого года)&lt;br /&gt;
&lt;br /&gt;
На следующем графике показаны сезонные индексы ряда с учётом сезонности:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedIndustrial.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Следующий график показывает предсказания полученные для 2007 года с использованием STL декомпозиции и наивной модели для сезонно-изменяемого временного ряда:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SeasonallyAdjustedTimeSeries.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
Декомпозиция была исплементирована с помощью встроенной в стандартную либу функции.&lt;br /&gt;
&lt;br /&gt;
===Экспоненциальное сглаживание ===&lt;br /&gt;
Экспоненциальное сглаживание {{---}} один из наиболее успешных классических методов предсказаний. В своей базовой форме оно называется простым экспоненциальный сглаживанием и его прогнозы описываются формулами:&lt;br /&gt;
&amp;lt;code&amp;gt;Ŷ(t+h|t) = ⍺y(t) + ⍺(1-⍺)y(t-1) + ⍺(1-⍺)²y(t-2) + …&amp;lt;/code&amp;gt;&lt;br /&gt;
'''''with 0&amp;lt;⍺&amp;lt;1.'''''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заметим, что прогнозы равны взвешеному среднему от старых наблюдений, и что соответствующие веса убывают экспоненциально по мере хода времени&lt;br /&gt;
&lt;br /&gt;
Некоторые методы для расширения алгоритма позволяют добавить тренд, его затухание и сезонность.&lt;br /&gt;
Экспоненциальное сглаживание состоит из 9 моделей, которые подробно описаны здесь(ссылка)&lt;br /&gt;
&lt;br /&gt;
Следующие графики описывают прогнозы данные полученные для 2007 года с использованием модели экспоненциального сглаживания(выбраны автоматически), которые подходили исходному и сезонно-чувствительному временному ряду.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ExpSmoothing.png]]&lt;br /&gt;
[[Файл:ExpSmoothing+Decomposition.png]]&lt;br /&gt;
Модели были имплементированы с помощью функции ets в forecast пакете R.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ARIMA, SARIMA===&lt;br /&gt;
Также как и экспоненциальное сглаживание, ARIMA также часто используются для прогноза временных рядов. Название является акронимом AutoRegressive Integrated Moving Average Саморегрессивное интегрированное скользящее среднее&lt;br /&gt;
&lt;br /&gt;
Саморегрессивность {{---}} линейная комбинация старых значений. &lt;br /&gt;
Скользящее среднее {{---}} линейная комбинация прошлых ошибок.&lt;br /&gt;
&lt;br /&gt;
ARIMA {{---}} комбинация этих двух подходов. Так как эти подходы требуют стационарности временного ряда, может понадобится продифференциировать/проинтегрировать ряд&lt;br /&gt;
То есть рассматировать ряд разностей, а не исходный ряд&lt;br /&gt;
&lt;br /&gt;
SARIMA учитывает сезонность, добавляя линейную комбинацию прошлых сезонных значений и/или прошлых ошибок прогноза&lt;br /&gt;
Для полного ввода в ARIMA, SARIMA читайте по ссылке&lt;br /&gt;
&lt;br /&gt;
Данные графики показывают предсказания полученные для 2007 года с использованием модели SARIMA:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:SARIMA.png]]&lt;br /&gt;
[[Файл:SARIMA_Decomposition.png]]&lt;br /&gt;
&lt;br /&gt;
Имплементация с помощью встроенной в R функции auto.arima.&amp;lt;br&amp;gt;&lt;br /&gt;
===Garch===&lt;br /&gt;
В предыдущих моделях мы считали, что слагаемое ошибки в стохастическом процессе генерации временного ряды имели одинаковую дисперсию.&lt;br /&gt;
&lt;br /&gt;
В GARSH-модели мы преполагаем, что слагаемое ошибки следуют ARMA процессу(саморегрессирующее скользящее среднее), соответственно слагаемое меняется по ходу времени. Это особенно полезно при моделировании финансовых временных рядов, так как диапазон изменений тоже постоянно меняется.&lt;br /&gt;
&lt;br /&gt;
Обычно ARMA используется и для учёта среднего, для подробного введения в Garsh модели смотри здесь:&lt;br /&gt;
[[Файл:GARCH.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===Динамические линейные модели===&lt;br /&gt;
Динамические линейные модели представляют другой класс моделей предсказания временных рядов&lt;br /&gt;
Идея заключается в том, что каждый моменты времени t эти модели соответствуют линейной модели, но коэффициент регрессии постоянно меняется. &amp;lt;br&amp;gt;Пример динамической линейной модели ниже:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = ⍺(t) + tβ(t) + w(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;⍺(t) = ⍺(t-1) + m(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;β(t) = β(t-1) + r(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;w(t)~N(0,W) , m(t)~N(0,M) , r(t)~N(0,R)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В предыдущей модели коэффициенты a(t) и b(t) следуют случайному блужданию.&lt;br /&gt;
Динамические линейные модели могут быть построены в рамках Байесовской системы. Тем не менее и этот метод можно улучшить, подробности читайте [https://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
===TBATS===&lt;br /&gt;
Это модели, которые основаны на экспоненциальном сглаживании. Главной особенностью TBATS является возможность взаимодействия с несколькими сезонностями. Моделируя каждую функцию сезонности отдельным тригонометрическим отображением построенным на рядах Фурье. Классическим примером комплексной сезонности будет отображение ежедневных объемов продаж, которые имеет, как еженедельные колебания, так и ежегодные.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Больше информации можно прочиать [https://robjhyndman.com/papers/ComplexSeasonality.pdf тут].&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:DLM+Decomposition.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Prophet===&lt;br /&gt;
Ещё одна модель, способная взаимодействовать с несколькими сезонностями. &lt;br /&gt;
Это ПО с открытым исходным кодом от Фейсбука.&amp;lt;br&amp;gt;&lt;br /&gt;
Prophet считает, что временной ряд может быть расложен следующим образом:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;y(t) = g(t) + s(t) + h(t) + ε(t)&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
g(t) {{---}} тренд&amp;lt;br&amp;gt;&lt;br /&gt;
s(t) {{---}} сезонность&amp;lt;br&amp;gt;&lt;br /&gt;
h(t) {{---}} каникулы&amp;lt;br&amp;gt;&lt;br /&gt;
ε(t) {{---}} ошибки&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подгонка модели представляет собой упражнение по подгонке кривой, поэтому она явно не учитывает структуру временной зависимости в данных. Это также позволяет проводить наблюдения с нерегулярным интервалом.&amp;lt;br&amp;gt;&lt;br /&gt;
Есть два варианта временных рядов тренда: модель насыщающего роста и кусочно-линейная модель. Модель многопериодной сезонности основана на рядах Фурье. Эффект известных и заказных выходных дней может быть легко включен в модель.&amp;lt;br&amp;gt;&lt;br /&gt;
Модель пророка вставлена в байесовскую структуру и позволяет сделать полный апостериорный вывод, чтобы включить неопределенность параметров модели в неопределенность прогноза.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Prophet.png]]&lt;br /&gt;
===NNETAR===&lt;br /&gt;
Модель NNETAR представляет собой полностью связанную нейронную сеть. Аббревиатура расшифровывается как Neural NETwork AutoRegression.&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR принимает на вход последние элементы последовательности до момента времени t и выводит прогнозируемое значение в момент времени t + 1. Для выполнения многоэтапных прогнозов сеть применяется итеративно.&lt;br /&gt;
&lt;br /&gt;
===LSTM===&lt;br /&gt;
Модели LSTM могут использоваться для прогнозирования временных рядов (а также других рекуррентных нейронных сетей). &amp;lt;br&amp;gt;LSTM {{---}} это аббревиатура от Long-Short Term Memories.&amp;lt;br&amp;gt;&lt;br /&gt;
Состояние сети LSTM представлено через вектор пространства состояний. Этот метод позволяет отслеживать зависимости новых наблюдений от прошлых (даже очень далеких).&amp;lt;br&amp;gt;&lt;br /&gt;
Вообще говоря, LSTM представляют собой сложные модели, и они редко используются для прогнозирования одного временного ряда, поскольку для их оценки требуется большой объем данных.&amp;lt;br&amp;gt;Однако они обычно используются, когда необходимы прогнозы для большого количества временных рядов(проверьте [https://arxiv.org/abs/1704.04110 здесь]).&lt;br /&gt;
&lt;br /&gt;
==Оценка==&lt;br /&gt;
Мы выполнили выбор модели с помощью процедуры перекрестной проверки, описанной ранее. Мы не рассчитывали его для динамических линейных моделей и моделей LSTM из-за их высокой вычислительной стоимости и низкой производительности.&amp;lt;br&amp;gt;&lt;br /&gt;
На следующем рисунке мы показываем MAE с перекрестной проверкой для каждой модели и для каждого временного горизонта: &lt;br /&gt;
[[Файл:Evaluation.png]]&lt;br /&gt;
&lt;br /&gt;
Мы видим, что для временных горизонтов больше 4 модель NNETAR с сезонно скорректированными данными работает лучше, чем другие. Давайте проверим общую MAE, вычисленную путем усреднения по разным временным горизонтам.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Модель NNETAR по сезонно скорректированным данным была лучшей моделью для этого приложения, поскольку она соответствовала самому низкому значению MAE, прошедшему перекрестную проверку.&amp;lt;br&amp;gt;&lt;br /&gt;
Чтобы получить объективную оценку наилучшей производительности модели, мы вычислили MAE на тестовом наборе, получив оценку, равную 5,24. На следующем рисунке мы можем увидеть MAE, оцененную на тестовой выборке для каждого временного горизонта.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Файл:Cross-validated MAE.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Как еще больше повысить производительность===&lt;br /&gt;
Другие методы повышения производительности моделей:&lt;br /&gt;
*Использование разных моделей для разных временных горизонтов&lt;br /&gt;
*Объединение нескольких прогнозов (например, с учетом среднего прогноза)&lt;br /&gt;
*''Агрегация начальных данных''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Последний метод у можно резюмировать следующим образом:&lt;br /&gt;
*Разложите исходный временной ряд (например, используя STL)&lt;br /&gt;
*Создайте набор похожих временных рядов путем случайного перемешивания фрагментов оставшейся компоненты.&lt;br /&gt;
*Подбирайте модель для каждого временного ряда&lt;br /&gt;
*Средние прогнозы каждой модели&lt;br /&gt;
&lt;br /&gt;
==Заключительные замечания==&lt;br /&gt;
Целью этого проекта было не подобрать наилучшую возможную модель прогнозирования индекса промышленного производства, а дать обзор моделей прогнозирования. В реальном приложении много времени следует тратить на предварительную обработку, разработку функций и выбор функций.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Большинство ранее описанных моделей позволяют легко включать изменяющиеся во времени предикторы. Они могут быть извлечены из одного и того же временного ряда или могут соответствовать внешним предикторам (например, временному ряду другого индекса). В последнем случае мы должны обратить внимание на то, чтобы не использовать информацию из будущего, которая могла бы быть удовлетворена путем прогнозирования предикторов или использования их лаговых версий.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, обратите внимание, что в этой статье мы рассмотрели только случай, когда у нас есть один временной ряд для прогнозирования. Когда у нас много временных рядов, может быть предпочтительнее глобальный подход, поскольку он позволяет нам оценивать более сложную и потенциально более точную модель. Чтобы ознакомиться с глобальным подходом, щелкните здесь.&lt;br /&gt;
==См. Также==&lt;br /&gt;
* [[Кластеризация]]&lt;br /&gt;
* [[Уменьшение размерности]]&lt;br /&gt;
* [[Рекомендательные системы]]&lt;br /&gt;
* [[Анализ социальных сетей]]&lt;br /&gt;
&lt;br /&gt;
==Источники Информации==&lt;br /&gt;
* [https://towardsdatascience.com/an-overview-of-time-series-forecasting-models-a2fa7a358fcb towardsdatascience.com]&lt;br /&gt;
* Филатов, А. В. Заметки профайлера / А. В. Филатов. -Москва: Издательские решения, 2019. -522.&lt;br /&gt;
* http://www.machinelearning.ru/wiki/index.php?title=Временной_ряд machinelearning.ru&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Анализ временных рядов]]&lt;/div&gt;</summary>
		<author><name>3oleg krylov</name></author>	</entry>

	</feed>