Вопросы по временным рядам на собеседовании
Первое, что проверяют на этой теме, это валидация. Случайное перемешивание строк во временном ряду выдаёт человека мгновенно, потому что модель начинает подглядывать в будущее.
Из чего состоит тема
Так тема разложена в тренажёре: движок ведёт прогресс по каждой подтеме отдельно и возвращает те, где вы ошибаетесь.
- Модели прогноза15
- Основы рядов13
- Валидация рядов12
- Признаки рядов11
Разборы подтем
Конспект по каждой: что это, как отвечать вслух, на чём валятся, плюс вопросы для самопроверки.
- Признаки для временных рядов11 вопросов
- Временные ряды: с чего начинают13 вопросов
- Модели прогноза временных рядов15 вопросов
- Валидация моделей на временных рядах12 вопросов
Примеры вопросов с разбором
- Что такое лаг-признак (lag feature) в задаче прогноза?A)Значение самого ряда на N шагов назад, поданное как признак для предсказания текущей точкиB)Среднее вообще всех будущих значений ряда, специально усреднённых заранее для повышения точности прогнозаC)Случайно перемешанная копия целевой переменной, добавленная в датасет ради дополнительной регуляризации моделиD)Отметка о том, с каким именно техническим запаздыванием данные физически поступили в хранилище из источника
показать ответ и разбор
+A)Значение самого ряда на N шагов назад, поданное как признак для предсказания текущей точки// разбор: Лаг-признак — значение ряда (или связанной величины) со сдвигом назад: y(t-1), y(t-7), y(t-365). Это основной способ дать ML-модели (например, бустингу) историю ряда в табличном виде. Лаги строго из прошлого относительно прогнозируемой точки — иначе утечка. Усреднение будущего или копия таргета — это как раз ликаж, а не корректная фича.
- Чем прогнозирование временного ряда принципиально отличается от обычной табличной регрессии?A)Наблюдения упорядочены во времени и автокоррелированы — их нельзя перемешивать, будущее зависит от прошлогоB)Ровным счётом ничем: временной ряд — это та же самая регрессия, просто одна из колонок называется датойC)Во временных рядах запрещено использовать какие-либо признаки, кроме самого целевого значения рядаD)Временной ряд по определению стационарен, поэтому модель для него подбирать проще, чем в регрессии
показать ответ и разбор
+A)Наблюдения упорядочены во времени и автокоррелированы — их нельзя перемешивать, будущее зависит от прошлого// разбор: У ряда есть ось времени: соседние точки автокоррелированы, а прогноз строится строго из прошлого в будущее. Отсюда всё специфичное — валидация по времени (нельзя перемешивать, будущее не должно попадать в трейн), лаг-признаки, работа с трендом и сезонностью. Табличная регрессия считает строки взаимозаменяемыми и независимыми — тут это неверно.
- Почему для прогноза спроса по тысячам SKU на проде часто берут градиентный бустинг на лаг-признаках, а не ARIMA на каждый ряд?A)Одна модель на лагах и экзогенных признаках тянет тысячи рядов сразу, ловит нелинейности и легко масштабируетсяB)ARIMA технически неспособна выдать прогноз более чем на один шаг вперёд, поэтому её вообще не используют на практикеC)Градиентный бустинг точнее статистической модели временного ряда на большинстве данныхD)ARIMA требует обязательного наличия видеокарты для обучения, а бустинг обходится процессором, отсюда и выбор
показать ответ и разбор
+A)Одна модель на лагах и экзогенных признаках тянет тысячи рядов сразу, ловит нелинейности и легко масштабируется// разбор: ARIMA моделирует один ряд и требует настройки на каждый — на тысячах SKU это не масштабируется. Бустинг на лаг- и календарных признаках плюс экзогенные переменные учит одну модель на всех рядах сразу, ловит нелинейности и взаимодействия, легко добавляет промо и цены. ARIMA хороша на одиночном стабильном ряде, но не как прод-конвейер на тысячи рядов. Универсального «всегда точнее» не бывает.
- Почему для временного ряда нельзя валидироваться обычным случайным train/test split и k-fold?A)Случайное перемешивание сажает будущие точки в трейн — это утечка (look-ahead), метрики врутB)Случайный сплит для рядов запрещён из-за того, что он работает заметно медленнее по времени на больших исторических выборкахC)K-fold технически не получится применить к числовым данным, содержащим колонку с датойD)При случайном сплите итоговая обучающая выборка получается вдвое меньше, чем нужно модели
показать ответ и разбор
+A)Случайное перемешивание сажает будущие точки в трейн — это утечка (look-ahead), метрики врут// разбор: Случайный сплит и k-fold перемешивают наблюдения, и в обучающую выборку попадают точки из будущего относительно теста — модель косвенно подсматривает ответы (look-ahead leakage). Метрики выходят завышенными, а в проде, где будущего нет, модель проваливается. Валидируют строго по времени: обучают на прошлом, проверяют на следующем за ним отрезке.
- Зачем в прогноз спроса добавляют календарные признаки — день недели, месяц, праздник?A)Календарные признаки нужны для сортировки строк датасета по дате перед обучением моделиB)Спрос зависит от календаря (выходные, праздники, сезон); эти признаки объясняют регулярные всплески и провалыC)Они добавляются для того, чтобы искусственно увеличить число колонок и усложнить модельD)Праздники и дни недели не влияют на спрос, но их добавляют по устоявшейся привычке из шаблонов
показать ответ и разбор
+B)Спрос зависит от календаря (выходные, праздники, сезон); эти признаки объясняют регулярные всплески и провалы// разбор: Спрос сильно завязан на календарь: выходные, праздники, зарплатные дни, сезоны дают регулярные пики и провалы, которые лаги не всегда ловят (особенно перед редким праздником). Явные календарные признаки позволяют модели выучить эти эффекты. Особенно важны признаки предстоящих событий (завтра праздник) — они известны заранее и не создают утечки.
- Что значит, что временной ряд стационарен?A)Что ряд обязательно строго возрастает или строго убывает на всём своём протяжении без единого разворотаB)Что его статистики — среднее, дисперсия, автокорреляция — не меняются во времениC)Что все без исключения значения ряда равны между собой и образуют идеально горизонтальную прямую линиюD)Что ряд измеряется строго через равные промежутки времени без единого пропуска в наблюдениях
показать ответ и разбор
+B)Что его статистики — среднее, дисперсия, автокорреляция — не меняются во времени// разбор: Стационарность (в слабом смысле) — постоянство во времени среднего, дисперсии и структуры автокорреляции: у ряда нет тренда и меняющейся сезонной амплитуды. Многие классические модели (ARMA) требуют стационарности, поэтому ряд с трендом сначала дифференцируют. Это не про монотонность, не про равенство значений и не про равномерность отсчётов.
- Прогноз на 30 шагов вперёд: чем recursive-стратегия отличается от direct и в чём их трейдофф?A)Никакой разницы между ними нет: обе стратегии обучают одну и ту же модель ровно на один шаг вперёдB)Recursive катит прогноз шаг за шагом на своих же прогнозах; direct учит модель на каждый горизонтC)Recursive требует ровно 30 отдельных моделей, а direct обходится строго одной моделью на весь горизонт целикомD)Direct-стратегия применима к стационарным рядам, а recursive работает с нестационарными
показать ответ и разбор
+B)Recursive катит прогноз шаг за шагом на своих же прогнозах; direct учит модель на каждый горизонт// разбор: Recursive учит модель на один шаг и катит её вперёд, подставляя собственные прогнозы как лаги, — просто, но ошибка накапливается с горизонтом. Direct обучает отдельную модель под каждый горизонт h (или мультивыход), избегая накопления ошибки ценой большего числа моделей и данных. Трейдофф: простота и связность против устойчивости на длинном горизонте.
- Что такое forward-chaining (rolling-origin) бэктест временного ряда?A)Однократное обучение модели на второй половине ряда с проверкой её качества на первой, более ранней половинеB)Многократный прогон, где окно обучения растёт (или скользит) во времени, а тест всегда идёт сразу после негоC)Случайное разбиение ряда на много непересекающихся фолдов с последующим усреднением метрики по всем нимD)Обучение отдельной независимой модели на каждой отдельной точке ряда с последующим голосованием их прогнозов
показать ответ и разбор
+B)Многократный прогон, где окно обучения растёт (или скользит) во времени, а тест всегда идёт сразу после него// разбор: Rolling-origin (forward-chaining) — серия сплитов, где обучающее окно расширяется или скользит вперёд, а тест каждый раз берётся из периода сразу после трейна. Так модель много раз проверяется на разных «будущих» отрезках, метрика усредняется и устойчивее, при этом порядок времени нигде не нарушается. Обучение на будущем ради проверки прошлого — как раз то, чего этот метод избегает.
- Скользящее среднее (rolling mean) как признак — какая типичная ловушка на границе окна?A)Rolling mean не получится использовать как признак в задачах прогнозирования временных рядов вообщеB)Окно обязано включать ровно 30 точек, иначе признак становится полностью бесполезным для моделиC)Включить в окно текущую (и тем более будущую) точку — это утечка; окно должно считаться только по прошлому, со сдвигомD)Скользящее среднее обязательно нужно считать по всему ряду сразу, а не по локальному окну наблюдений
показать ответ и разбор
+C)Включить в окно текущую (и тем более будущую) точку — это утечка; окно должно считаться только по прошлому, со сдвигом// разбор: Rolling-агрегат для прогноза точки t должен считаться строго по данным до t. Частая ошибка — окно, центрированное на t или включающее саму t (а то и будущее): тогда в признак попадает то, что модель предсказывает, — утечка. Правильно: rolling с последующим shift(1), чтобы окно заканчивалось на t-1. Размер окна подбирают под задачу, это не фиксированные 30.
это 9 из 51
Ещё 42 вопросов по теме — в тренажёре, с движком повторения
Прочитать разбор и ответить самому — разные навыки. В Сеньорчике вопросы идут сессиями, а движок возвращает подтемы, где вы ошибаетесь, пока они не начнут отскакивать. Бесплатно, лимит по энергии.
Частые вопросы
Как валидировать модель на временных рядах?
Только с учётом времени: скользящее окно или расширяющееся обучение с проверкой на следующем отрезке. Случайные фолды дают утечку и завышают качество.
Зачем нужна стационарность?
Классические модели предполагают стабильные свойства ряда. Если есть тренд или меняющаяся дисперсия, ряд приводят к стационарному виду через разности и преобразования, иначе прогноз будет смещённым.