TGViewer
ML for Value / Ваня Максимов ML for Value / Ваня Максимов @ml4value · 5.69K subscribers
Post #384 3.68K
Дыры в данных и в прогнозах
Часто встречаются в прогнозе спроса, но и в других временных рядах тоже!

Один подписчик спрашивал, почему на Каггле в прогнозе разреженного спроса (в какие-то дни нет продаж - этого дня вообще нет в статистике) все считают лаги просто через lag(7), без заполнения пропусков 0?
Иногда это фактически получается лаг не в 7 дней, а 10 или 20

Ошибка классическая, ситуация страшная)) Простой способ заполнить нулями и потом делать lag работает, но и правда растит обьем датасета сильно

Так как быстро заполнить дыры в спросе и сварить датасет?

1. Уровень агрегации побольше
Обычно ~20% ненулевых продаж по магазин-товар-день. ИМХО, на этом уровне агрегации явно не стоит строить прогноз. Можно прогнозировать на уровне, например, товар + город / гео-зона. А потом по историческим долям восстанавливать спрос по магазинам:
- Лучше учатся зависимости спроса от сезонности, скидок и тд
- Итоговая точность часто по магазин-товар-день даже выше 🎯

В каких-то проектах можно агрегировать продажи не по дню, а по неделе. Например, я так делал для оптимизации промо-скидок (скидки длительностью 1-2 недели)

2. Заполнять пропуски 0 !
Да, станет больше данных, но уже не х5 раз, а сильно меньше, тк уровень агрегации выше. В моих кейсах это обычно х1.5-х2

3. Считать только важные лаги за 1 groupby
Обычно это lag(1), ..., lag(7), lag(14), lag(21), lag(28). Не читайте кагл-ноктбуки с генерацией всех фичей таким способом на 1_000+ строк кода 📈

4. Pivot_table + бесплатные фичи
Делаем pivot_table:
по строкам магазин (или город) + товар + дата,
по столбцам - разные лаги.

Дальше считаем агрегацию лагов простой операцией над нужными столбцами, а не еще сотней groupby:

- Среднее за последнюю неделю = mean(lag(1), ...., lag(7))
- Среднее запоследние 4 "понедельника" = mean(lag(7), lag(14), lag(21), lag(28))

В итоге, фичи считаются раз в 5-10 раз быстрее (и правильнее), чем в каггл-ноутбуке. В одной компании я так стал собирать датасет в 21 раз быстрее

P.S. Можно еще с pandas на polars переехать - еще сильнее ускориться 🚀
#timeseries@ml4value
  • 👍 29
  • 🔥 6
  • ❤ 1
More from @ml4value
  1. Sep 17, 2026Post #496
  2. Sep 14, 2026ML вообще работает? (эпизод 1) Давно не писал в канал. Понял, что сейчас сфокусирован на д…
  3. Jun 12, 2026The art of a strong baseline За последнее время все чаще понимаю, что создать сильный бейз…
  4. May 2, 2026Начинать писать после перерыва всегда непросто, поэтому пока легкий пост про мои новости)…
  5. Mar 29, 2026LLM - велосипед в новой обертке Холиварный пост выходного дня) Доля правды в этом есть - и…
  6. Mar 27, 2026LLM долгосрочные интересы пользователя Понемногу LLM-ки находят полезное применение в реко…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →