Time series для начинающих: чем временные ряды отличаются от обычного ML

Time series для начинающих: чем временные ряды отличаются от обычного ML, почему время ломает привычную валидацию и как читать такие данные.

Содержание Следующие статьи
Содержание Time series для начинающих: чем временные ряды отличаются от обычного ML
  1. Почему время меняет саму природу задачи
  2. Что именно мы пытаемся предсказать
  3. Почему обычная валидация здесь опасна
  4. Как выглядит минимальный пример

Почему время меняет саму природу задачи

Во многих табличных задачах строки можно условно переставить местами, и смысл почти не изменится. Во временных рядах это невозможно. Порядок наблюдений становится частью самой информации. Вчера, сегодня и завтра — это не просто три строки, а три разных состояния процесса. Из-за этого временной ряд требует другого мышления: важно не только, какие значения мы видим, но и как они меняются во времени.

Именно поэтому time series нельзя воспринимать как обычный ML с дополнительной колонкой `date`. Время здесь — не метка, а структура зависимости.

Что именно мы пытаемся предсказать

Формула: раздел математики — математическая статистика и временные ряды
$$ y_t = f(y_{t-1}, y_{t-2}, \ldots, x_t) $$
Что означает эта формула

Во временных рядах текущее значение часто зависит от предыдущих состояний процесса и от внешних факторов в текущий момент. То есть прошлое становится частью входа для прогноза будущего.

Что означает каждый символ
  • y_t — значение ряда в текущий момент времени
  • y_{t-1}, y_{t-2} — предыдущие состояния ряда, от которых зависит прогноз
  • x_t — внешние признаки или факторы в текущий момент
  • f — правило или модель, связывающая прошлое и настоящее

Эта запись полезна тем, что сразу показывает ключевую разницу: в обычном ML объект часто рассматривается как независимый, а во временных рядах зависимость между соседними моментами времени почти всегда существенна.

Почему обычная валидация здесь опасна

Если случайно перемешать временной ряд и сделать обычный train/test split, модель может увидеть будущее в обучении и прошлое в тесте. Это ломает честность оценки. Во временных рядах train всегда должен быть раньше validation. Иначе мы проверяем не умение предсказывать будущее, а способность подглядывать в него через неправильное разбиение.

Из этой же логики растут лаги, rolling features, скользящие средние и time-based validation. Все они не просто инженерные приемы, а попытка сохранить причинный порядок данных.

Как выглядит минимальный пример

example.pyPython
import pandas as pd  # создаем простой временной ряд с дневными продажами

series = pd.Series([100, 105, 98, 110, 120, 125, 123], index=pd.date_range('2026-01-01', periods=7))  # задаем наблюдения по дням
frame = pd.DataFrame({'sales': series})  # превращаем ряд в таблицу для feature engineering
frame['lag_1'] = frame['sales'].shift(1)  # добавляем значение предыдущего дня как признак
frame['rolling_mean_3'] = frame['sales'].rolling(3).mean()  # считаем скользящее среднее за три дня
print(frame)  # смотрим, как время превращается в признаки, а не просто в индекс

Как только появляется такая таблица, становится видно, почему time series — это отдельный способ думать. Мы не просто берем значения. Мы учимся извлекать из прошлого те сигналы, которые помогут предсказать следующий шаг процесса.

Что читать дальше

Связанные статьи по этой теме

Canary deployment для моделей: как выкатывать новую версию без лишнего риска Latency в ML API: почему быстрая модель важна не меньше точной Batch inference и real-time inference: как выбирать режим работы модели
Вернуться в блог