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.

Способы борьбы:

  1. Больше данных. Самый надёжный путь — если есть возможность собрать.
  2. Регуляризация. L1 (Lasso) — обнуляет коэффициенты, отбирает фичи. L2 (Ridge) — уменьшает, не обнуляет. Elastic Net — комбинация.
  3. Уменьшение сложности. Меньше параметров, меньше глубина дерева, меньше нейронов в слое.
  4. Cross-validation. Подробнее — cross-validation.
  5. Early stopping. В нейросетях и gradient boosting — остановить обучение до начала ухудшения val-метрики.
  6. Dropout. В нейросетях — случайно «выключать» нейроны на обучении.
  7. Ансамбли. 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 — только для соответствующих команд.

Смотрите также