Что такое feature engineering для time series (lags, rolling stats, datetime features)?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Feature engineering для временных рядов — это преобразование исходного ряда в набор признаков, которые помогают модели улавливать тренд, сезонность и локальную динамику. Обычно используют лаги, скользящие статистики и признаки из даты/времени. Важно уметь делать это без утечки будущей информации.
Определение:
Feature engineering для time series — это создание дополнительных признаков на основе временной структуры данных.
Для временных рядов часто строят:
- Lags — значения ряда в прошлые моменты времени, например
y(t-1),y(t-7). - Rolling stats — статистики по скользящему окну, например среднее, медиана, стандартное отклонение за последние 7 дней.
- Datetime features — признаки из календаря: день недели, месяц, час, выходной, начало/конец месяца и т.д.
Цель таких признаков — дать модели контекст о прошлой динамике и календарных закономерностях, которые в исходном одном столбце обычно не видны.
Пример использования:
Допустим, нужно прогнозировать ежедневные продажи. Для каждого дня можно добавить продажи за вчера и неделю назад, средние продажи за последние 7 дней, а также день недели и месяц. Это помогает модели учитывать, что продажи в выходные и перед праздниками могут отличаться от будних дней.
import pandas as pd
df = pd.DataFrame({
"date": pd.date_range("2024-01-01", periods=10, freq="D"),
"sales": [10, 12, 11, 15, 14, 13, 18, 17, 16, 20]
})
df["lag_1"] = df["sales"].shift(1)
df["lag_7"] = df["sales"].shift(7)
df["roll_mean_3"] = df["sales"].shift(1).rolling(window=3).mean()
df["day_of_week"] = df["date"].dt.dayofweek
df["month"] = df["date"].dt.month
print(df)
Пояснение кода:
shift(1)создает лаг: значение предыдущего дня.shift(7)берет значение неделю назад.shift(1).rolling(window=3).mean()считает среднее по трем предыдущим значениям, не включая текущий день, чтобы не было утечки.dt.dayofweekиdt.monthизвлекают календарные признаки из даты.- Такие признаки можно подать в регрессию, деревья решений, бустинг или другие модели для прогнозирования временного ряда.
Ключевые моменты:
- Лаги дают модели доступ к прошлым значениям ряда и часто являются базовым сильным признаком.
- Rolling features помогают сгладить шум и показать локальный уровень/волатильность.
- Datetime features полезны для сезонности, календарных эффектов и циклов.
- Важно избегать data leakage: все признаки должны строиться только по прошлым данным относительно точки прогноза.
- Для временных рядов нельзя случайно перемешивать данные как в обычной ML-задаче; обычно нужен time-based split.