Сначала зафиксируйте grain данных, допущения, метрику и риск leakage, затем обсуждайте модель, инструмент или инфраструктуру.
Вопросы и ответы
10 подробных ответов
01Объясните bias-variance tradeoff.
concept
Короткий ответ: Ожидаемая ошибка модели раскладывается на bias² + variance + неустранимый шум. Bias — систематическая ошибка слишком простой модели (недообучение), variance — чувствительность к шуму конкретной выборки (переобучение). Снижая одно, обычно поднимаешь другое; задача — найти баланс.
Подробно:
- Разложение — E[(y − ŷ)²] = bias² + variance + σ²; шум σ² не лечится никакой моделью.
- Высокий bias — модель проще истинной зависимости: плохо и на трейне, и на валидации. Пример: линейная регрессия на нелинейных данных.
- Высокая variance — модель ловит шум: трейн почти идеален, валидация проваливается. Пример: глубокое дерево без ограничений.
- Рычаги — сложность модели, регуляризация, ансамбли (бэггинг режет variance). Больше данных снижает variance, но не bias.
- Диагностика — разрыв train/validation: большой разрыв → variance; обе ошибки высокие → bias.
ошибка │ bias² ↓ ↑ variance
│ ─._ _.─'
│ '─.______.─' ← оптимум
└───────────────────► сложность модели
⚠️ Частая ошибка: рассказать формулу разложения, не связав её с пере- и недообучением. Интервьюер ждёт диагностику (learning curves, разрыв train/val) и рычаги, а не определение наизусть.
02Что такое переобучение, как его обнаружить и как с ним бороться?
junior
Короткий ответ: Переобучение — модель выучила шум трейна вместо закономерности: на трейне ошибка низкая, на новых данных — высокая. Обнаруживают по разрыву train/validation, лечат регуляризацией, упрощением модели, ранней остановкой и бóльшим объёмом данных.
Подробно:
- Обнаружение — сравнить ошибку на трейне и на валидации; learning curves: train-ошибка падает, validation-ошибка стоит или растёт → модель начала запоминать шум.
- Лечение — уменьшить ёмкость или добавить сигнала, а не «крутить» метрику.
| Обнаружить | Исправить | |
|---|---|---|
| Разрыв метрик | train ≈ 0, валидация заметно хуже | регуляризация (L1/L2), проще модель |
| Learning curves | кривые расходятся с ростом эпох | early stopping |
| Кросс-валидация | нестабильные метрики по фолдам | больше данных, аугментация |
| Сложность модели | глубокие деревья, миллионы весов | ограничить глубину, срезать фичи |
⚠️ Частая ошибка: сказать «кросс-валидация предотвращает переобучение». CV его лишь обнаруживает — честно оценивает качество. Предотвращают регуляризация, упрощение модели и данные.
03В чём разница между L1- и L2-регуляризацией и почему именно L1 зануляет веса?
middle
Короткий ответ: L1 (lasso) штрафует Σ|w| и даёт точные нули — разреженную модель со встроенным отбором фич. L2 (ridge) штрафует Σw² и плавно ужимает все веса, не обнуляя их; на коррелированных фичах ведёт себя стабильнее. Нули у L1 — следствие геометрии штрафа.
Подробно:
- Геометрия — множество уровня L1 — ромб с углами на осях координат; оптимум с высокой вероятностью попадает в угол, где часть весов ровно 0. L2-шар гладкий — касание почти никогда не лежит на оси.
- Субградиент — производная |w| около нуля константна (±λ): штраф «давит» с той же силой и у самого нуля, поэтому выгодно дожать вес до нуля. У L2 градиент штрафа 2λw исчезает при w → 0 — вес лишь бесконечно приближается к нулю.
- Байесовский взгляд — L1 = априор Лапласа (острый пик в нуле), L2 = гауссовский априор.
- Коррелированные фичи — L1 произвольно берёт одну из группы, L2 делит вес между ними; когда нужно и то и другое — elastic net.
L1: |w₁|+|w₂| ≤ t L2: w₁²+w₂² ≤ t
◆ углы на осях ● гладкий круг
оптимум часто в углу касание вне осей
→ w₂ = 0 (точный ноль) → нулей нет, усадка
⚠️ Частая ошибка: сказать «L1 отбирает фичи» без объяснения механизма. Вопрос-дифференциатор именно «почему нули»: интервьюер ждёт геометрию или субградиент.
04Как работает k-fold кросс-валидация и в каких случаях она — неправильный инструмент?
middle
Короткий ответ: Данные делятся на k фолдов; k раз обучаемся на k−1 фолдах и валидируемся на оставшемся, метрику усредняем. Схема корректна только для независимых наблюдений: временные ряды, группы и сильный дисбаланс требуют специальных сплиттеров.
Подробно:
- Механика — каждая точка ровно один раз побывает в валидации; получаем оценку качества и её разброс по фолдам, а не одно число.
- Временные ряды — shuffle кладёт будущее в трейн: модель «видит» то, чего в реальности ещё нет, оценка завышена. Нужен forward-chaining: трейн строго до теста.
- Группы — один юзер (пациент, девайс) попадает и в трейн, и в валидацию: модель узнаёт юзера, а не закономерность. Группа целиком уходит в один фолд.
- Дисбаланс классов — в маленьких фолдах редкий класс может исчезнуть; стратификация сохраняет доли классов в каждом фолде.
from sklearn.model_selection import (KFold, TimeSeriesSplit,
GroupKFold, StratifiedKFold)
KFold(5, shuffle=True) # i.i.d.-данные — база
TimeSeriesSplit(5) # время: трейн строго до теста
GroupKFold(5) # юзер/пациент не рвётся между фолдами
StratifiedKFold(5) # дисбаланс: доли классов сохранены
⚠️ Частая ошибка: рассказать механику и не знать оговорок. Вопрос почти всегда продолжается «а для временных рядов?» — и без forward-chaining ответ не засчитают.
05Зачем делить данные на трейн/валидацию/тест — почему недостаточно трейн/тест?
junior
Короткий ответ: Валидация нужна для подбора гиперпараметров и выбора модели. Если тюнить по тесту, вы переобучаетесь на тест: каждое решение подгоняет модель под конкретную выборку, и репортуемая метрика становится оптимистичной. Тест трогают ровно один раз — в самом конце.
Подробно:
- Три роли — трейн подбирает веса; валидация сравнивает модели и гиперпараметры; тест даёт несмещённую оценку финальной модели.
- Почему тест «сгорает» — выбирая из сотни конфигураций лучшую по тесту, вы выбираете и ту, которой повезло именно на этих точках. Метрика теста перестаёт предсказывать качество на новых данных.
- Валидация тоже «сгорает» — но это её работа: она расходуется на решения, а тест остаётся чистым для отчёта.
- Мало данных — вместо фиксированной валидации использовать кросс-валидацию на трейне; тест всё равно отдельный.
train ──► обучение весов
val ──► выбор модели и гиперпараметров (много раз)
test ──► финальная оценка (ровно один раз)
⚠️ Частая ошибка: считать валидацию и тест взаимозаменяемыми — «у меня же есть отложенная выборка». Если по ней принимались решения, это уже валидация, и для честной оценки нужен нетронутый тест.
06Как подбирать гиперпараметры: grid search, random search или байесовская оптимизация?
middle
Короткий ответ: Grid перебирает сетку и взрывается комбинаторно. Random при том же бюджете обычно лучше в высокой размерности: реально важны немногие гиперпараметры, и случайный поиск пробует больше их значений (Bergstra & Bengio). Байесовская оптимизация (Optuna) строит модель «параметры → качество» и тратит попытки на перспективные области. Тюнить — только по валидации/CV, никогда по тесту.
Подробно:
- Почему random бьёт grid — если из 5 гиперпараметров важны 2, сетка 3×3×…×3 даёт лишь 3 уникальных значения каждого важного, а 243 случайные точки — 243 значения.
- Когда grid уместен — 1–2 параметра, дешёвая модель, нужна воспроизводимая карта качества.
- Байесовский поиск — суррогатная модель + acquisition-функция: баланс исследования и добивания лучших зон; окупается при дорогом обучении. Плюс прунинг заведомо слабых конфигураций.
| Grid | Random | Bayesian (Optuna) | |
|---|---|---|---|
| Бюджет | комбинаторный взрыв | фиксированный, любой | фиксированный, тратится умно |
| Высокая размерность | плохо | хорошо | хорошо |
| Параллелится | идеально | идеально | хуже (последовательный) |
| Когда брать | 1–2 параметра | быстрый бейзлайн | дорогое обучение |
⚠️ Частая ошибка: подобрать гиперпараметры по тестовой выборке. Это утечка: тест участвовал в выборе модели, и репортуемая метрика завышена.
07Модель отлично выглядит в кросс-валидации, но проваливается на живом holdout. Какие гипотезы вы проверите?
senior
Короткий ответ: Четыре главных подозреваемых: утечка внутри CV (препроцессинг обучен на всей выборке, дубликаты между фолдами), сдвиг распределения во времени, переобучение через множество CV-решений самого аналитика и групповая утечка. У каждой гипотезы — свой конкретный способ проверки.
Подробно:
| Гипотеза | Механизм | Как проверить |
|---|---|---|
| Лик в CV | скалер/отбор фич обучены до сплита; дубли и почти-дубли в разных фолдах | весь препроцессинг — внутрь Pipeline; поиск дубликатов |
| Сдвиг распределения | holdout позже по времени, данные «уехали» | сравнить распределения фич (PSI, adversarial validation); валидировать по времени |
| Переобучен аналитик | сотни решений (фичи, модели, пороги) приняты по одной CV-метрике | nested CV; свежий holdout, которого решения не видели |
| Групповая утечка | один юзер/объект и в трейне, и в валидации | пересобрать CV с GroupKFold и сравнить метрику |
- Порядок действий — сначала дешёвые проверки (дубли, PSI), потом пересборка пайплайна и honest re-validation.
- Красный флаг — CV-метрика «слишком хороша» относительно бейзлайна и здравого смысла: чаще это лик, а не гениальная модель.
⚠️ Частая ошибка: ответить одним словом «переобучение». Интервьюер ждёт механизмы и проверки: чем именно CV-оценка могла быть завышена и как это подтвердить.
08Что такое проклятие размерности и какие модели страдают от него сильнее всего?
middle
Короткий ответ: С ростом числа фич объём пространства растёт экспоненциально: данные становятся разреженными, а расстояния между точками концентрируются — «ближайший» сосед почти не ближе самого дальнего. Сильнее всего страдают методы, построенные на расстояниях: kNN, k-means, ядровые методы.
Подробно:
- Разреженность — чтобы сохранить плотность покрытия, объём данных должен расти экспоненциально с размерностью; на практике данных столько не бывает.
- Концентрация расстояний — в высокой размерности отношение (max − min)/min расстояний стремится к нулю: понятие «ближайший» теряет смысл, а с ним и kNN.
- Кто страдает и кто держится:
| Модель | Уязвимость | Почему |
|---|---|---|
| kNN, k-means | максимальная | целиком построены на расстояниях |
| Ядровые (SVM-RBF) | высокая | ядро — функция расстояния |
| Линейные + регуляризация | умеренная | штраф ограничивает ёмкость |
| Деревья/бустинг | умеренная | сплиты по одной фиче, но шумные фичи мешают отбору |
- Митигации — отбор фич, PCA/эмбеддинги, регуляризация, больше данных.
⚠️ Частая ошибка: произнести термин без следствия. Интервьюер ждёт конкретики: что именно ломается (расстояния, плотность) и что вы с этим делаете.
09В чём разница между генеративными и дискриминативными моделями? Сравните Naive Bayes и логистическую регрессию.
concept
Короткий ответ: Генеративные модели учат совместное распределение P(x, y) и получают P(y|x) через формулу Байеса; дискриминативные учат P(y|x) или границу классов напрямую. Naive Bayes — генеративный, логистическая регрессия — дискриминативная; при достатке данных на чистой классификации обычно выигрывает дискриминативная.
Подробно:
- Что покупает генеративность — модель «знает», как устроены сами данные: может генерировать примеры, работать с пропущенными фичами (проинтегрировать их), быстро сходится на малых выборках, если её допущения верны.
- Что покупает дискриминативность — никаких допущений о распределении x: вся ёмкость тратится на границу классов, поэтому с ростом данных асимптотическое качество обычно выше (классика — Ng & Jordan, 2001).
- Naive Bayes — предполагает условную независимость фич; допущение почти всегда ложно, но модель дёшева и на удивление живуча (спам-фильтры).
| Naive Bayes (генеративная) | Логистическая регрессия (дискриминативная) | |
|---|---|---|
| Моделирует | P(x, y) | P(y|x) |
| Допущения | независимость фич при данном классе | линейность логита |
| Мало данных | сходится быстрее | нужно больше |
| Много данных | упирается в ложное допущение | обычно точнее |
| Пропуски/генерация | умеет | не умеет |
⚠️ Частая ошибка: перепутать, кто есть кто, — назвать логистическую регрессию генеративной, потому что «она вероятностная». Вероятностность ≠ генеративность: важно, что моделируется — P(x, y) или P(y|x).
10Чем параметрические модели отличаются от непараметрических?
concept
Короткий ответ: У параметрических моделей число параметров фиксировано и не зависит от объёма данных — форма зависимости задана заранее (линейная и логистическая регрессия). У непараметрических ёмкость растёт вместе с данными (kNN, деревья): меньше допущений, но больше аппетит к данным.
Подробно:
- Параметрические — сильное допущение о форме (например, «логит линеен по фичам»): быстро обучаются, мало данных, устойчивы к шуму — но если форма угадана неверно, упираются в потолок (высокий bias).
- Непараметрические — форма «вырастает» из данных: kNN хранит всю выборку, дерево наращивает сплиты. Гибкость даёт низкий bias, но повышает variance и требования к объёму данных.
- Экстраполяция — параметрическая модель продолжает свою формулу за пределы обучающих данных; kNN и деревья вне области данных выдают константу — предсказывать «наружу» они не умеют.
| Параметрические | Непараметрические | |
|---|---|---|
| Параметры | фиксированное число | растут с данными |
| Примеры | линейная/логистическая регрессия | kNN, деревья, ядровые оценки |
| Допущения | сильные (форма задана) | слабые |
| Данных нужно | мало | много |
| Экстраполяция | по формуле | константа вне данных |
⚠️ Частая ошибка: «непараметрические = без параметров». Параметры есть — их число не фиксировано и растёт с выборкой: kNN хранит все точки, дерево — все сплиты.
Источники
Источники и редакционная политика
Материалы RecallDeck сопоставлены с официальной документацией и открытыми публикациями компаний, когда первичный источник доступен. Мы не связаны с упомянутыми работодателями, не публикуем конфиденциальные задания и не продаём места в подборках. Формат найма может меняться — уточняйте его у рекрутера.
От чтения к воспроизведению
Отрепетируйте полный цикл интервью.
RecallDeck возвращает сложные темы по расписанию и помогает удерживать в памяти язык, SQL, архитектуру и поведенческие истории.