Автоматизация Feature Engineering для временных рядов в DataSphere: создание лагов и скользящих средних

Использование сырых временных рядов в градиентном бустинге без создания лагов снижает точность прогноза на 15–30%, так как модель не видит динамику процесса. В Yandex DataSphere Studio автоматизация Feature Engineering позволяет за считанные минуты превратить одномерный ряд в многомерный вектор признаков, который CatBoost интерпретирует как зависимости между прошлым и будущим.

Архитектура лагов и борьба с утечкой данных

Создание лагов (Lag Features) — это перенос значений целевой переменной из прошлого в текущий момент времени. Для краткосрочных прогнозов (на 1–3 шага) критически важно использовать лаги t-1, t-2 и t-7 (для недельной сезонности). Ошибка новичков — создание лага t-0 или использование данных из будущего, что ведет к переобучению и идеальным, но бесполезным метрикам на трейне при полном провале на тесте.

Кейс: при анализе почасового спроса на электроэнергию (датасет 500к строк) добавление лагов на 1, 24 и 168 часов снизило MAE на 12% по сравнению с моделью без лагов. Экспертный вывод: всегда проверяйте корреляцию лага с таргетом через ACF/PACF; лаги с корреляцией ниже 0.1 только зашумляют модель и увеличивают время обучения на 5–10%.

Скользящие средние: фильтрация шума в DataSphere

Скользящие средние (Rolling Means) сглаживают случайные колебания, позволяя CatBoost уловить локальный тренд. Оптимальный диапазон окон для ритейл-данных: короткое (3–7 дней) для захвата резких всплесков и длинное (30–90 дней) для определения сезонного тренда. В DataSphere использование метода .rolling().mean() в Pandas эффективно работает до объемов данных в 10–15 ГБ, после чего требуется переход на оптимизированные методы обработки.

Сравнение: модель со скользящим средним (окно 7) дает прирост точности в 4–6% на волатильных рядах, но при избыточном сглаживании (окно > 60) модель начинает «опаздывать» за реальными изменениями рынка. Экспертный вывод: комбинируйте среднее со скользящим стандартным отклонением (Rolling Std), чтобы модель видела не только уровень, но и волатильность актива.

Трансформация признаков под специфику CatBoost

CatBoost эффективно работает с числовыми признаками, но чувствителен к масштабу при использовании определенных типов регуляризации. Однако главной проблемой становится обработка пропусков, которые неизбежно возникают в начале ряда при создании лага (например, при лаге t-7 первые 7 строк будут NaN). Обработка пропусков в временных рядах для CatBoost: сравнение методов интерполяции и заполнения показывает, что forward fill (ffill) работает стабильнее, чем заполнение средним, так как сохраняет временную структуру.

Практика: при создании 20+ лагов размерность датасета растет кратно, что увеличивает потребление RAM в DataSphere. Для оптимизации используйте тип данных float32 вместо float64, что сокращает объем занимаемой памяти на 50% без потери точности прогноза. Экспертный вывод: автоматизируйте генерацию признаков через циклы, но ограничивайте количество лагов через анализ важности признаков (Feature Importance) после первого прогона.

Интеграция с гиперпараметрами для временных рядов

Создание большого количества лагов и скользящих средних увеличивает риск переобучения, особенно если объем данных ограничен 10–50 тысячами строк. В этом случае конфигурация гиперпараметров CatBoost для анализа временных рядов должна смещаться в сторону увеличения l2_leaf_reg (до 5–10) и ограничения глубины дерева depth до 4–6. Это предотвращает запоминание моделью конкретных дат и заставляет её искать общие паттерны в лагах.

Пример: на малом датасете (2к записей) без регуляризации разрыв между Train и Test RMSE составлял 40%. После настройки регуляризации и отсечения избыточных лагов разрыв сократился до 8%, а точность на тесте выросла на 5%. Экспертный вывод: чем больше синтетических признаков (лагов) создано, тем жестче должна быть регуляризация модели.

Вывод

Для достижения максимального качества прогноза в DataSphere Studio необходимо внедрить пайплайн: ACF-анализ → генерация лагов (t-1, t-n) → расчет скользящих средних (коротких и длинных) → ffill пропусков. Избегайте создания более 30-40 признаков на один ряд без последующего отбора по Feature Importance, так как это ведет к деградации модели. Начинайте с базовых лагов и постепенно добавляйте производные метрики, контролируя переобучение через L2-регуляризацию.