Прогнозирование

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Классификация подходов и валидация моделей, дополнение)
(Метрики качества и примеры (из первоначальной статьи), дополнение)
Строка 64: Строка 64:
При наличии лагов в признаках (например, если для прогноза на завтра нужен лаг недельной давности) между обучающей и тестовой выборками закладывается '''зазор''' (англ. ''gap''), чтобы исключить любое неявное проникновение информации.
При наличии лагов в признаках (например, если для прогноза на завтра нужен лаг недельной давности) между обучающей и тестовой выборками закладывается '''зазор''' (англ. ''gap''), чтобы исключить любое неявное проникновение информации.
 +
 +
== Метрики качества прогнозирования ==
 +
 +
Классические метрики регрессии (MSE, MAE) не всегда удобны в прогнозировании, так как они зависят от масштаба ряда и не позволяют сравнивать качество моделей на разных товарах или процессах. Для этого используются специфичные метрики:
 +
 +
=== MAPE (Mean Absolute Percentage Error) ===
 +
Средняя абсолютная процентная ошибка измеряет отклонение в процентах от истинных значений:
 +
<tex>\text{MAPE} = \frac{100\%}{n} \sum_{t=1}^n \left| \frac{y_t - \hat{y}_t}{y_t} \right|</tex>
 +
* '''Проблема''': если истинное значение <tex>y_t = 0</tex>, метрика уходит в бесконечность (деление на ноль). Кроме того, она асимметрична: сильнее штрафует за прогнозы, превышающие факт (перепрогноз), чем за заниженные прогнозы.
 +
 +
=== SMAPE (Symmetric Mean Absolute Percentage Error) ===
 +
Симметричная средняя абсолютная процентная ошибка пытается исправить асимметрию MAPE, добавляя прогноз в знаменатель:
 +
<tex>\text{SMAPE} = \frac{100\%}{n} \sum_{t=1}^n \frac{|y_t - \hat{y}_t|}{(|y_t| + |\hat{y}_t|)/2}</tex>
 +
* '''Проблема''': значение метрики нестабильно, когда и факт, и прогноз близки к нулю.
 +
 +
=== MASE (Mean Absolute Scaled Error) ===
 +
Средняя абсолютная масштабированная ошибка сравнивает среднюю ошибку модели с ошибкой базового («наивного») прогноза на обучающей выборке (где прогнозом на завтра является сегодняшнее значение):
 +
<tex>\text{MASE} = \frac{\frac{1}{n} \sum_{t=1}^n |y_t - \hat{y}_t|}{\frac{1}{T-1} \sum_{i=2}^T |y_i - y_{i-1}|}</tex>
 +
где <tex>T</tex> — длина обучающей выборки.
 +
* '''Интерпретация''': если <tex>\text{MASE} < 1</tex>, модель работает лучше, чем наивный прогноз. Если <tex>\text{MASE} > 1</tex>, то алгоритм хуже простейшей константной стратегии. Метрика устойчива к нулевым значениям и инвариантна к масштабу.
 +
 +
== Примеры прикладных задач прогнозирования ==
 +
 +
В рамках Ресурса представлены следующие примеры реализации и анализа прогнозных моделей:
 +
* [[Математический прогноз даты сильных землетрясений]] — применение статистических методов и анализа временных последовательностей в геофизике.
 +
* [[Прогнозирование количества телефонных звонков клиентов телекоммуникационной компании]] — пример классического краткосрочного бизнес-прогнозирования для оптимизации нагрузки колл-центров.

Версия 20:05, 15 июня 2026

Статья расширена с использованием LLM Gemini 3.5 Flash и проверена участником Vsevolod Peretiatko 23:58, 15 июня 2026 (MSD)


Прогнозирование (англ. forecasting) — область машинного обучения и прикладной статистики, задача которой заключается в предсказании будущих значений целевого процесса или величины на основе исторических данных, а также доступной сопутствующей информации.

В контексте анализа данных прогнозирование чаще всего сводится к анализу временных рядов (англ. time series forecasting). Главное отличие задачи прогнозирования от классической задачи регрессии заключается в нарушении предположения о независимости и одинаковой распределённости наблюдений (i.i.d.): данные в прогнозировании упорядочены во времени и обладают внутренней зависимостью (автокорреляцией).

Содержание

Математическая постановка задачи

Пусть задан случайный процесс, наблюдаемый в дискретные моменты времени t = 1, 2, \dots, T. Значение целевой переменной в момент времени t обозначим как y_t \in \mathbb{R}.

Также в каждый момент времени может быть доступен вектор экзогенных (внешних) факторов \mathbf{x}_t \in \mathbb{R}^d, которые влияют на целевую переменную, но сами от неё не зависят (например, метеоусловия для прогноза энергопотребления).

Задача прогнозирования заключается в построении модели (алгоритма) f, которая по известной предыстории длины k предсказывает значения целевой переменной на h шагов вперёд. Величина h \ge 1 называется горизонтом прогнозирования (англ. forecasting horizon).

Точечный прогноз

Для фиксированного момента времени T (настоящее время) точечный прогноз на момент времени T+h вычисляется как: \hat{y}_{T+h} = f(y_T, y_{T-1}, \dots, y_{T-k+1}; \mathbf{x}_{T+h}, \mathbf{x}_{T+h-1}, \dots, \mathbf{x}_{1})

В зависимости от доступности экзогенных факторов на шаге T+h, их значения могут быть либо известны заранее (например, календарные признаки: день недели, праздники), либо сами являться результатами других прогнозных моделей.

Интервальный и вероятностный прогноз

Помимо точечного значения \hat{y}_{T+h}, в современных задачах машинного обучения часто требуется оценить неопределённость.

  • Интервальный прогноз задаёт границы [L_{T+h}, U_{T+h}], в которые истинное значение попадёт с заданной вероятностью 1 - \alpha.
  • Вероятностный прогноз (англ. probabilistic forecasting) строит оценку плотности распределения p(y_{T+h} \mid y_{\le T}, \mathbf{x}_{\le T+h}).

Обучение модели f заключается в минимизации ожидаемого риска (эмпирического функционала качества) на обучающей выборке по заданной функции потерь \mathcal{L}(y, \hat{y}).

Классификация подходов к прогнозированию

Методы прогнозирования временных рядов можно разделить на три парадигмы, каждая из которых эффективна в своём классе задач.

Классические статистические методы

Основаны на предположении о наличии фиксированной математической структуры в ряду (тренд, сезонность, циклы) и стационарности случайного процесса (или возможности свести его к стационарному через разности).

  • Экспоненциальное сглаживание (англ. exponential smoothing, ETS): модели, в которых прогноз формируется как взвешенное среднее прошлых наблюдений, где веса затухают экспоненциально с течением времени (например, метод Хольта-Винтерса).
  • Интегрированная модель авторегрессии — скользящего среднего (англ. Autoregressive Integrated Moving Average, ARIMA): семейство моделей, где текущее значение ряда линейно зависит от его собственных предыдущих значений (авторегрессия, p) и от прошлых ошибок прогноза (скользящее среднее, q). Её расширение SARIMA учитывает сезонные компоненты.

Эти методы эффективны для коротких и единичных временных рядов, обладают высокой интерпретируемостью, но плохо адаптируются к сложным нелинейным зависимостям и большим объёмам внешних данных.

Классическое машинное обучение

Переход от анализа временного ряда к стандартной задаче обучения с учителем осуществляется с помощью метода скользящего окна (англ. sliding window). Непрерывный ряд разбивается на объекты, где признаками (англ. features) выступают прошлые значения ряда (лаги, y_{t-1}, y_{t-2}, \dots), а также агрегированные статистики (скользящее среднее, стандартное отклонение за период).

  • Градиентный бустинг (LightGBM, XGBoost, CatBoost) и Случайный лес (англ. Random Forest): на сегодняшний день являются индустриальным стандартом для табличных данных и прогнозирования регулярных бизнес-метрик (например, продаж товаров).

Они отлично работают с тысячами разнородных рядов одновременно, легко интегрируют экзогенные факторы (цены, промо-акции, погоду) и нелинейные связи, однако требуют ручного конструирования признаков (англ. feature engineering).

Глубокое обучение

Использует специализированные нейросетевые архитектуры для автоматического извлечения временных закономерностей:

  • Рекуррентные нейронные сети (LSTM, GRU): моделируют последовательности за счёт внутреннего состояния (памяти), но могут страдать от затухания градиентов на длинных горизонтах.
  • Временные свёрточные сети (англ. Temporal Convolutional Networks, TCN): применяют причинные (казуальные) свёртки, исключающие заглядывание в будущее.
  • Трансформаторные архитектуры и Foundation-модели (Temporal Fusion Transformer, PatchTST, Chronos): адаптируют механизм внимания (англ. attention) для захвата долгосрочных зависимостей. Они способны обучаться на гигантских разнородных датасетах (англ. cross-series learning) и делать прогнозы для новых рядов «из коробки» (англ. zero-shot forecasting).

Валидация моделей прогнозирования

При валидации моделей прогнозирования категорически запрещено использовать стандартный случайный скользящий контроль (K-fold cross-validation), так как случайное перемешивание данных приводит к утечке данных из будущего (англ. data leakage). Модель обучается на информации, которая в реальных условиях ещё не была бы известна, что приводит к оптимистично заниженной ошибке на валидации и провалу модели в продакшене.

На практике применяются следующие схемы:

Оценка на отложенной выборке вне периода обучения

  • Out-of-sample (OOS): оценка качества модели на данных, которые не использовались при настройке параметров модели. Ряд разбивается на две хронологические части: прошлое (обучение) и будущее (тест).
  • Out-of-time (OOT): частный и более строгий случай OOS в машинном обучении, когда тестовый набор данных сдвинут относительно обучающего на фиксированный временной интервал или представляет собой принципиально другой временно́й контекст (например, модель обучалась на стабильном периоде, а тестируется во время резкого изменения макроэкономики).

Блокированный скользящий контроль

Для полноценного кросс-валидационного оценивания используют методы, сохраняющие временную структуру (англ. Time Series Cross-Validation).

  • Схема с расширяющимся окном (англ. Expanding Window): на первой итерации модель обучается на блоке длины T_1 и тестируется на h шагах. На следующей итерации тестовый блок включается в обучающую выборку, и модель переобучается на блоке длины T_1 + h.
  • Схема с движущимся окном (англ. Rolling Window): размер обучающей выборки остаётся фиксированным (например, всегда ровно один год данных), а само окно обучения сдвигается вперёд на величину h на каждом шаге.

При наличии лагов в признаках (например, если для прогноза на завтра нужен лаг недельной давности) между обучающей и тестовой выборками закладывается зазор (англ. gap), чтобы исключить любое неявное проникновение информации.

Метрики качества прогнозирования

Классические метрики регрессии (MSE, MAE) не всегда удобны в прогнозировании, так как они зависят от масштаба ряда и не позволяют сравнивать качество моделей на разных товарах или процессах. Для этого используются специфичные метрики:

MAPE (Mean Absolute Percentage Error)

Средняя абсолютная процентная ошибка измеряет отклонение в процентах от истинных значений: \text{MAPE} = \frac{100\%}{n} \sum_{t=1}^n \left| \frac{y_t - \hat{y}_t}{y_t} \right|

  • Проблема: если истинное значение y_t = 0, метрика уходит в бесконечность (деление на ноль). Кроме того, она асимметрична: сильнее штрафует за прогнозы, превышающие факт (перепрогноз), чем за заниженные прогнозы.

SMAPE (Symmetric Mean Absolute Percentage Error)

Симметричная средняя абсолютная процентная ошибка пытается исправить асимметрию MAPE, добавляя прогноз в знаменатель: \text{SMAPE} = \frac{100\%}{n} \sum_{t=1}^n \frac{|y_t - \hat{y}_t|}{(|y_t| + |\hat{y}_t|)/2}

  • Проблема: значение метрики нестабильно, когда и факт, и прогноз близки к нулю.

MASE (Mean Absolute Scaled Error)

Средняя абсолютная масштабированная ошибка сравнивает среднюю ошибку модели с ошибкой базового («наивного») прогноза на обучающей выборке (где прогнозом на завтра является сегодняшнее значение): \text{MASE} = \frac{\frac{1}{n} \sum_{t=1}^n |y_t - \hat{y}_t|}{\frac{1}{T-1} \sum_{i=2}^T |y_i - y_{i-1}|} где T — длина обучающей выборки.

  • Интерпретация: если \text{MASE} < 1, модель работает лучше, чем наивный прогноз. Если \text{MASE} > 1, то алгоритм хуже простейшей константной стратегии. Метрика устойчива к нулевым значениям и инвариантна к масштабу.

Примеры прикладных задач прогнозирования

В рамках Ресурса представлены следующие примеры реализации и анализа прогнозных моделей:

Личные инструменты