Выбор ответа Senior Окна и сдвиги обновлено

rolling с center=True в признаках

Вопрос

Для модели прогноза спроса сделали признак s.rolling(7, center=True).mean(). На валидации качество отличное, в проде плохое. Почему?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Центрированное окно берёт 3 будущих дня, которых в проде нет. С center=True окно для дня t берёт дни с t-3 по t+3: это утечка будущего.

Варианты ответа

  1. center=True медленнее и даёт неточные значения среднего
  2. Центрированное окно берёт 3 будущих дня, которых в проде нетправильный ответ
  3. rolling вообще нельзя использовать в признаках для моделей
  4. Нужно было min_periods=1, иначе первые дни выпадают из выборки

Разбор

С center=True окно для дня t берёт дни с t-3 по t+3: это утечка будущего. В проде будущих значений нет, и признак считается иначе. Для признаков окно должно заканчиваться не позже прошлого дня: s.shift(1).rolling(7).mean(). Точность вычислений тут ни при чём, а min_periods влияет только на начало ряда.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.