← Назад к списку
ТехническаяData Science и MLMiddle

Зачем нужна кросс-валидация и какие схемы вы выберете для разных типов данных?

Короткий ответ

  • Оценка качества устойчивее, чем одно разбиение
  • K-fold: k обучений, каждый блок побывает валидацией
  • Stratified k-fold сохраняет баланс классов в фолдах
  • Group k-fold — когда объекты одного юзера связаны
  • Для временных рядов только разбиение по времени
  • Тестовую выборку в кросс-валидацию не включают
  • Препроцессинг фитится внутри каждого фолда

Кросс-валидация даёт устойчивую оценку качества и честный подбор гиперпараметров, но схему разбиения нужно выбирать под структуру данных — классы, группы, время.

Как сказать вслух

пример ответа

Кросс-валидация нужна, чтобы оценка качества не зависела от удачного разбиения: мы делим данные на несколько частей и по очереди учимся на одних, проверяемся на другой, а потом усредняем. Схему выбираю под данные: при дисбалансе — стратификацию, если есть повторные записи одного клиента — разбиение по клиентам, а для временных рядов — только по времени, чтобы не учиться на будущем.

Подробный ответ

Основной ответ

Кросс-валидация решает две задачи: даёт устойчивую оценку обобщающей способности и позволяет честно подбирать гиперпараметры, не трогая тест. В классическом k-fold данные делятся на k блоков, модель обучается k раз, метрики усредняются, а разброс по фолдам показывает стабильность. Схему выбирают под структуру данных: stratified k-fold при дисбалансе классов, group k-fold — когда несколько строк принадлежат одному пользователю или сессии и не должны попадать одновременно в train и validation, TimeSeriesSplit (расширяющееся или скользящее окно) — для временных рядов, где учиться на будущем нельзя. Критично выполнять весь препроцессинг — скейлинг, отбор признаков, кодирование таргетом — внутри каждого фолда, иначе возникает утечка.

Ключевые моменты

  • Зачем, а не как. Главная цель — несмещённая оценка и выбор модели; одно случайное разбиение может повезти или не повезти.
  • Группы и время. Нарушение независимости (один юзер в train и validation, будущее в обучении) — самый частый источник завышенных метрик.
  • Пайплайн внутри фолда. Fit любых трансформаций только на train-части фолда; в sklearn это решает Pipeline внутри cross_val_score.
  • Цена и компромиссы. K-fold в k раз дороже; на больших данных часто достаточно одного honest holdout по времени.

Практический контекст

Вопрос проверяет зрелость кандидата лучше многих: junior расскажет про k-fold, middle объяснит, когда k-fold вреден. В реальных задачах ошибки валидации — главная причина, почему модель с хорошими офлайн-метриками проваливается в проде. Интервьюеры любят кейс: «данные — покупки клиентов за два года, как валидируете?» — правильный ответ сочетает разбиение по времени и по клиентам.

Частые ошибки

  • Применяют случайный k-fold к временным рядам или связанным записям одного пользователя
  • Делают скейлинг и отбор признаков до разбиения, получая утечку
  • Подбирают гиперпараметры и оценивают финальное качество на одних и тех же фолдах

ИП Кочкин Алексей Сергеевич · ИНН 390509026279 · ОГРНИП 325390000030973 · jiniys2005@yandex.ru