Обобщение и валидация
Смещение и разброс, проклятие размерности, double descent, дисциплина train/validation/test, схемы кросс-валидации и четыре формы утечки данных.
11 вопросов
JuniorТеорияОчень частоЧто такое k-fold кросс-валидация и когда нужен её стратифицированный вариант?
Что такое k-fold кросс-валидация и когда нужен её стратифицированный вариант?
Данные режутся на k равных частей; модель переобучается k раз, каждый раз одна часть откладывается для оценки, и k метрик усредняются. Каждая строка оценивается один раз, поэтому оценка устойчивее одного деления. Стратификация сохраняет доли классов в частях.
Типичные ошибки
- ✗Усреднять метрики на обучающих частях вместо отложенных
- ✗Брать обычный k-fold при редком классе и получать части без позитивов
- ✗Считать, что кросс-валидация отменяет финальный нетронутый test
Уточняющие вопросы
- →Как выбор k меняет баланс между разбросом оценки и стоимостью вычислений?
- →Почему обычный k-fold ломается, когда несколько строк принадлежат одному пользователю?
JuniorТеорияОчень частоДля чего нужны train, validation и test, и в каком порядке вы делите данные и обучаете?
Для чего нужны train, validation и test, и в каком порядке вы делите данные и обучаете?
На train настраиваются параметры модели, на validation выбираются гиперпараметры и момент ранней остановки, test даёт одну несмещённую оценку в конце. Делить нужно до любого обучения, доли около 60/20/20. Любое преобразование обучается только на train.
Типичные ошибки
- ✗Подбирать гиперпараметры на test и его же указывать как итоговую метрику
- ✗Обучать скейлеры или энкодеры на всей таблице до деления
- ✗Переделивать данные с новым seed после каждого неудачного запуска
Уточняющие вопросы
- →Когда фиксированную validation-выборку стоит заменить на k-fold кросс-валидацию?
- →Как меняются доли деления, если размеченных строк десять миллионов?
JuniorТеорияЧастоЧто такое компромисс смещения и разброса, и где на нём дерево глубины 2 и глубины 30?
Что такое компромисс смещения и разброса, и где на нём дерево глубины 2 и глубины 30?
Смещение — ошибка от слишком жёсткой модели, не улавливающей сигнал; разброс — насколько обученная модель меняется от выборки к выборке. Дерево глубины 2 даёт высокое смещение и недообучение, дерево глубины 30 — высокий разброс и запоминание шума.
Типичные ошибки
- ✗Называть высокую ошибку на обучении разбросом, а не смещением
- ✗Считать, что более глубокое дерево всегда обобщает лучше неглубокого
- ✗Считать разброс свойством меток, а не обученной модели
Уточняющие вопросы
- →Как ансамблевый метод
baggingснижает разброс, почти не трогая смещение? - →Какой член двигает L2-штраф (ridge-регуляризация) и в какую сторону?
MiddleТеорияЧастоПочему kNN и k-means деградируют с ростом размерности и что это значит для эмбеддингов?
Почему kNN и k-means деградируют с ростом размерности и что это значит для эмбеддингов?
Объём растёт экспоненциально с размерностью, поэтому выборка становится разреженной, а расстояния концентрируются: ближайший и самый дальний сосед почти равноудалены, и окрестность перестаёт быть локальной. Эмбеддинги выживают, так как данные лежат на маломерном многообразии.
Типичные ошибки
- ✗Считать проклятие вычислительной проблемой, а не геометрической
- ✗Думать, что эмбеддинг в 768 измерений так же разрежен, как 768 one-hot столбцов
- ✗Ждать, что новые признаки будут бесконечно улучшать модель на расстояниях
Уточняющие вопросы
- →Почему косинусная близость часто ведёт себя лучше евклидова расстояния на эмбеддингах?
- →Как приближённые индексы поиска соседей, например
HNSW, меняют картину?
MiddleТеорияЧастоГрупповая, стратифицированная и вложенная CV — когда обычный k-fold завышает качество?
Групповая, стратифицированная и вложенная CV — когда обычный k-fold завышает качество?
Обычный k-fold предполагает независимость строк. Когда один пользователь, пациент или почти дубликат попадает в разные части, модель узнаёт сущность, а не закономерность, — нужны групповые части. Стратификация держит доли классов, вложенная CV прячет подбор во внутренний цикл.
Типичные ошибки
- ✗Перемешивать строки одной сущности и считать полученные части независимыми
- ✗Показывать метрику CV после подбора, не обернув поиск внешним циклом
- ✗Оставлять почти дублирующиеся строки и доверять усреднённой метрике по частям
Уточняющие вопросы
- →Как строить части, если данные сгруппированы по пользователю и упорядочены во времени?
- →О чём говорит разрыв между внутренней и внешней метрикой вложенной CV?
MiddleДебаггингЧастоCV показывает 0.92, а прод 0.71 — какие каналы утечки объясняют этот разрыв?
CV показывает 0.92, а прод 0.71 — какие каналы утечки объясняют этот разрыв?
Четыре канала: утечка цели из поля, заполняемого после исхода, загрязнение дублями строк в разных частях, групповая утечка при одном пользователе по обе стороны и временная утечка от перемешивания упорядоченных данных. Устранение канала роняет метрику.
Открыть задачу →Типичные ошибки
- ✗Списывать на дрейф разрыв, который полностью объясняется признаком из будущего
- ✗Считать перемешанное деление безопасным на упорядоченных во времени данных
- ✗Доверять усреднённой метрике, пока дубли лежат в разных частях
Уточняющие вопросы
- →Как вы упорядочите четыре канала по обычному размеру наносимого ущерба?
- →Какая проверка ловит признак из будущего ещё до обучения любой модели?
MiddleДебаггингЧастоСкейлер, импутер и отбор признаков обучены до деления — что именно утекает и как это чинить?
Скейлер, импутер и отбор признаков обучены до деления — что именно утекает и как это чинить?
Обучение их на всей таблице заносит отложенные строки в статистики обучения: скейлер несёт средние и дисперсии отложенных строк, импутер заполняет из них, а отбор читает отложенные метки — худшая утечка. Pipeline переобучает каждый шаг на обучающей части.
Открыть задачу →Типичные ошибки
- ✗Считать преобразования без учителя безопасными, раз они не читают цель
- ✗Масштабировать всё заранее ради удобства и делить массив уже после
- ✗Отбирать признаки на всей таблице и потом кросс-валидировать выживших
Уточняющие вопросы
- →Почему target encoding требует внутреннего деления даже внутри корректного pipeline?
- →Как применить ту же дисциплину к шагу ресемплинга, например
SMOTE?
MiddleТеорияЧастоПочему test трогают один раз и как выглядит переобучение на validation после 200 запусков?
Почему test трогают один раз и как выглядит переобучение на validation после 200 запусков?
Каждое решение, принятое по метрике, просачивает этот набор в модель, поэтому набор для отбора перестаёт быть несмещённым. После 200 запусков лучшая метрика — максимум из 200 шумных значений, завышенный отбором; признак этого — растущий разрыв validation и test.
Типичные ошибки
- ✗Считать максимум по многим запускам несмещённой оценкой качества
- ✗Переоценивать test между экспериментами ради мониторинга прогресса
- ✗Считать, что одна кросс-валидация снимает смещение отбора гиперпараметров
Уточняющие вопросы
- →Как вложенная кросс-валидация возвращает честную оценку при интенсивном подборе?
- →Что меняется, если поиск ведёт байесовский оптимизатор, а не случайный перебор?
SeniorТеорияЧастоМодель держится на случайном делении 80/20, но падает на следующем месяце — постройте протокол
Модель держится на случайном делении 80/20, но падает на следующем месяце — постройте протокол
Случайное деление измеряет интерполяцию между соседними днями, а прод — экстраполяцию в невиданный период. Замените его на прокатываемые деления, где обучение на прошлом, а оценка на строго более позднем окне с зазором под задержку меток, затем прогоните adversarial validation.
Типичные ошибки
- ✗Читать метрику случайного деления как оценку качества на следующем месяце
- ✗Добавить сырую метку времени и ждать, что модель продолжит тренд вперёд
- ✗Списывать на разброс и перезапускать seed, когда причина — сдвиг распределения
Уточняющие вопросы
- →Как выбрать ширину зазора, когда задержка меток и скорость дрейфа расходятся?
- →Какое действие оправдывает высокий AUC у adversarial validation?
MiddleТеорияИногдаРазложите ожидаемую ошибку на test на смещение, разброс и шум — что двигает каждый член?
Разложите ожидаемую ошибку на test на смещение, разброс и шум — что двигает каждый член?
Ожидаемая квадратичная ошибка в точке делится на квадрат смещения, разброс и неустранимый шум. Ёмкость и бустинг снижают смещение; усреднение по bootstrap-выборкам, регуляризация и больше строк снижают разброс. Шум — предел данных, его двигают лишь новые признаки или чистые метки.
Типичные ошибки
- ✗Считать, что лучшая модель или долгий подбор снижают неустранимый шум
- ✗Путать рычаги — думать, что ёмкость снижает разброс, а bagging снижает смещение
- ✗Читать три члена как три набора данных, а не как источники ошибки
Уточняющие вопросы
- →Как эмпирически оценить уровень шума по повторным разметкам одних и тех же объектов?
- →Как кривая double descent соотносится с этим разложением?
SeniorДизайнИногдаВы отвечаете за модель карточного фрода. Транзакция получает метку фрода только когда держатель карты её оспорил, а споры приходят в течение 60 дней после операции, поэтому у последних двух месяцев метки ещё дозревают — неотмеченный фрод сейчас выглядит как честный платёж. Мошеннические группы перестраиваются за недели, поэтому доминирующие в этом квартале схемы в прошлом квартале почти отсутствовали. Доля позитивов около 0.2%, один держатель карты порождает много транзакций, модель переобучается и выкатывается раз в две недели. Спроектируйте схему валидации, по которой вы решаете, годится ли модель в прод: деление, построение частей, что вы придерживаете и что показываете, — и явно назовите, чего эта схема стоит в данных, свежести и честности оценки.
Вы отвечаете за модель карточного фрода. Транзакция получает метку фрода только когда держатель карты её оспорил, а споры приходят в течение 60 дней после операции, поэтому у последних двух месяцев метки ещё дозревают — неотмеченный фрод сейчас выглядит как честный платёж. Мошеннические группы перестраиваются за недели, поэтому доминирующие в этом квартале схемы в прошлом квартале почти отсутствовали. Доля позитивов около 0.2%, один держатель карты порождает много транзакций, модель переобучается и выкатывается раз в две недели. Спроектируйте схему валидации, по которой вы решаете, годится ли модель в прод: деление, построение частей, что вы придерживаете и что показываете, — и явно назовите, чего эта схема стоит в данных, свежести и честности оценки.
Делите вперёд по времени с 60-дневным зазором перед окном валидации под задержку меток. Прокатывайте окно по нескольким периодам и стройте части по держателю карты. Показывайте точность при фиксированной ёмкости проверки; цена — устаревшая оценка и неиспользованные свежие данные.
Типичные ошибки
- ✗Валидировать на самом свежем окне, у которого метки ещё не дозрели
- ✗Считать пока не оспоренную транзакцию подтверждённо честной меткой
- ✗Судить о быстро дрейфующей модели по одному окну вместо нескольких прокатанных
Уточняющие вопросы
- →Как выстроить мониторинг после выката, если метрика оседает лишь через 60 дней?
- →Что добавит adversarial validation о сдвиге между обучением и продом?