ML-теория на собеседовании Data Scientist
Зачем DS спрашивают теорию ML
Теоретическая база отличает Data Scientist от инженера, использующего sklearn-cookbook. На собесе DS теорию проверяют не ради знания формул — а ради понимания, какие алгоритмы подходят к задаче, какие нет, как разобраться, когда модель плохая.
Слабая теория = модели «по шаблону», ошибки в выборе метрики, паника при overfitting. Сильная теория = осознанные решения, аргументация с CDO/менеджером, способность отладить и улучшить. На собесе Data Scientist ML-теория — обязательный этап на 60-90 минут.
Bias-variance trade-off
Bias — систематическая ошибка из-за слишком простой модели. Линейная регрессия на нелинейных данных — высокий bias.
Variance — нестабильность модели на конкретной выборке. Сложная нейросеть на маленьких данных — высокий variance.
Total error = bias² + variance + irreducible error.
Простая модель: высокий bias, низкий variance → underfitting. Сложная: низкий bias, высокий variance → overfitting. Цель — баланс.
Как балансировать на собесе: объясни через примеры. «Линейная регрессия на маркетплейс-данных будет underfit — не учитывает нелинейные взаимодействия. Глубокая нейросеть на 1000 примерах будет overfit — не на чем учить столько параметров. CatBoost с правильным tuning — обычно середина».
Overfitting и regularization
Признаки overfitting: метрика на train сильно лучше, чем на validation. Если train accuracy 95%, а validation 70% — overfitting.
Способы борьбы:
- Больше данных. Самый надёжный путь — если есть возможность собрать.
- Регуляризация. L1 (Lasso) — обнуляет коэффициенты, отбирает фичи. L2 (Ridge) — уменьшает, не обнуляет. Elastic Net — комбинация.
- Уменьшение сложности. Меньше параметров, меньше глубина дерева, меньше нейронов в слое.
- Cross-validation. Подробнее — cross-validation.
- Early stopping. В нейросетях и gradient boosting — остановить обучение до начала ухудшения val-метрики.
- Dropout. В нейросетях — случайно «выключать» нейроны на обучении.
- Ансамбли. Bagging (random forest), boosting (XGBoost/CatBoost).
Алгоритмы — что в каких задачах
Linear / logistic regression — interpretable baseline. Хорошо работает на линейно разделимых задачах с тщательно feature-engineered признаками. Используется в скоринге, простых прогнозах. Подробнее — например, в статье о причинно-следственных моделях.
Decision trees — interpretable, нелинейные, не нуждаются в нормализации. Сами по себе слабые, но основа для ансамблей.
Random forest — bagging деревьев. Robust, мало overfit. Хорош для middle-quality baseline.
Gradient boosting (XGBoost / LightGBM / CatBoost) — главный «рабочий лошадка» для табличных данных. Часто SOTA на бизнес-задачах. CatBoost — лучший для категориальных признаков.
Neural networks — для CV, NLP, sequential data. Для табличных задач редко лучше gradient boosting (исключения — очень большие датасеты).
KNN — простой, редко в production. Используется как baseline.
Naive Bayes — для текстов и быстрого baseline.
SVM — реже сейчас, требует тюнинга, не очень масштабируется.
Clustering (K-means, DBSCAN) — unsupervised, для сегментации.
Метрики качества
Зависят от задачи.
Регрессия: MAE, MSE, RMSE, R². MAE — устойчив к выбросам. MSE/RMSE — наказывает большие ошибки сильнее.
Бинарная классификация: Accuracy (только при сбалансированных классах), Precision, Recall, F1, AUC-ROC, AUC-PR (для несбалансированных).
Многоклассовая: macro/micro/weighted versions of F1.
Ranking: NDCG, MAP, MRR.
Несбалансированные данные: используй stratified split, weighted classes, AUC-PR вместо AUC-ROC.
Подробнее — accuracy vs F1.
Feature engineering
Числовые признаки:
- Нормализация / стандартизация для линейных моделей
- Log-transform для skewed данных
- Биннинг для нелинейных эффектов
Категориальные:
- One-hot для маленькой кардинальности
- Target encoding / CatBoost native — для большой
- Hash encoding — экстремально большая кардинальность
Временные:
- Lag-фичи, rolling-средние, разности
- Календарные фичи (день недели, час, праздник)
Текстовые:
- TF-IDF — baseline
- Word2Vec / fastText — embeddings
- BERT-embeddings — современный подход
Взаимодействия:
- Полиномиальные признаки для линейных
- Gradient boosting сам находит взаимодействия
Типичные вопросы
«Какую модель выберешь для скоринга и почему?» Скоринг — табличные данные, важна интерпретируемость. Logistic regression — interpretable baseline. CatBoost — production-чемпион. Для регулятора — иногда logistic regression предпочтительнее (объяснимость).
«Что делать, если модель overfit?» Перечислить варианты: больше данных → регуляризация → уменьшить сложность → CV → early stopping → ансамбли. Объяснить, что попробуешь первым.
«Какая разница между bagging и boosting?» Bagging (random forest) — параллельное обучение, голосование, снижает variance. Boosting (XGBoost) — последовательное обучение, каждая модель исправляет ошибки предыдущей, снижает bias.
«Что такое L1 vs L2 регуляризация?» L1 — Lasso, штраф |w|, обнуляет коэффициенты → feature selection. L2 — Ridge, штраф w², уменьшает но не обнуляет. Elastic Net — комбинация обоих.
«Как выбрать порог классификатора?» Зависит от бизнес-задачи. Для fraud — высокий precision (мало false positives), для скрининга болезней — высокий recall (не пропустить больных). Метод: precision-recall curve, выбрать точку по бизнес-критерию.
Частые ошибки
- Зубрить формулы без понимания. Знать формулу cross-entropy — не означает понимать, почему она работает
- Игнорировать данные. «Применю XGBoost» без анализа данных — слабо
- Не объяснять trade-off-ы. Каждый выбор алгоритма — компромисс
- Защищать любимую модель. Если интервьюер говорит про SVM, а ты упорно про boosting — провал
- Не уметь упростить. DS должен объяснить bias-variance продакту за 2 минуты
FAQ
Сколько алгоритмов нужно знать наизусть?
Глубоко: linear/logistic regression, decision trees, random forest, gradient boosting (XGBoost/LightGBM/CatBoost), KNN. На senior — нейросети (полносвязные, CNN, RNN/Transformer).
Нужно ли уметь выводить формулы?
Junior — нет, понимать смысл достаточно. Senior — выведение gradient descent, обратное распространение в нейросетях, нормальные уравнения линейной регрессии — желательно.
Какие книги читать?
«Introduction to Statistical Learning» (ISLR) — фундамент. «Elements of Statistical Learning» — глубже. «Hands-On ML with Scikit-Learn» (Géron) — практика. Видео-курсы StatQuest, fast.ai.
Сколько времени тратить на ML-теорию при подготовке?
Минимум 30% подготовки. Остальное — практика (SQL/Python), кейсы, ML system design.
Стоит ли заниматься deep learning, если идёшь на classical ML?
Базу — да. Современный DS должен понимать, что такое нейросеть, embedding, transformer. Глубокий DL — только для соответствующих команд.