Классическая ML на собеседовании Data Scientist

Зачем классику спрашивают на собесе DS

90% production-моделей DS — это не нейросети, а классическая ML: линейные модели, деревья, градиентный бустинг (XGBoost / LightGBM / CatBoost). На бизнес-данных табличного формата они почти всегда выигрывают у deep learning.

На собесе Data Scientist классическую ML спрашивают в двух режимах: как понимаешь основы (junior) и как выбираешь модель под задачу (senior). Без классики не пройти ни одну DS-вакансию.

Линейные модели

Линейная регрессия: y = β₀ + β₁x₁ + ... + βₙxₙ + ε. Минимизирует MSE. Обучение — нормальные уравнения или градиентный спуск.

Логистическая регрессия: для бинарной классификации. Линейная комбинация → сигмоида → вероятность. Минимизирует log-loss.

Когда использовать:

  • baseline на любой задаче
  • скоринг (важна интерпретируемость, регулятор требует объяснимости)
  • маленькие данные (linear почти не overfit)

Когда не подходят:

  • сильные нелинейности (без feature engineering)
  • большие категориальные фичи без encoding
  • сложные взаимодействия признаков

Подробнее — регуляризация L1/L2 на собесе DS.

Деревья решений

Дерево решений делит пространство признаков на области с похожим target. Жадно выбирает split, минимизирующий impurity (Gini / Entropy для классификации, MSE для регрессии).

Плюсы:

  • интерпретируемое (можно нарисовать)
  • не нуждается в нормализации
  • работает с категориальными признаками

Минусы:

  • легко overfit (особенно без max_depth)
  • нестабильное (маленькое изменение в данных → другое дерево)
  • слабый baseline сам по себе

Подробнее — bagging vs boosting на собесе DS.

Random Forest

Bagging деревьев: каждое обучается на random sample (bootstrap) + random subset фичей на каждом split.

Что снижает: variance (за счёт усреднения). Bias почти не меняется vs одного дерева.

Гиперпараметры, которые могут спросить:

  • n_estimators (число деревьев): 100-500 типично
  • max_depth: ограничивает глубину
  • min_samples_leaf: минимум объектов в листе
  • max_features: sqrt(n_features) для классификации, n_features/3 для регрессии

Feature importance: среднее decrease impurity по всем split на каждом дереве. Robust, но biased в сторону continuous и high-cardinality фичей.

Gradient Boosting

Главный рабочий конь production DS. Каждое следующее дерево исправляет ошибки предыдущего:

F_m(x) = F_{m-1}(x) + η * h_m(x)

где h_m обучается на residuals (для регрессии) или градиенте loss (общий случай).

Что снижает: bias (за счёт итеративного добавления слабых моделей).

XGBoost vs LightGBM vs CatBoost:

Speed Сategoricals Memory Особенности
XGBoost Medium One-hot Medium Industry standard
LightGBM Fast Native Low Histogram-based, быстрый
CatBoost Medium Native (best) Medium Symmetric trees, ordered boosting

Когда какой: CatBoost для категориальных-heavy данных. LightGBM для скорости. XGBoost для портабельности.

Подробнее — gradient boosting и XGBoost, boosting pitfalls.

Интерпретация моделей

На собесе ждут не «модель работает», а «понимаю, почему работает».

SHAP values: game-theoretic feature attribution. Для каждого предсказания показывает, сколько каждая фича добавила к итоговому скору. Стандарт для скоринга и регулятора.

Permutation importance: случайно перемешиваем значения фичи → смотрим падение метрики. Если падение большое — фича важна.

Partial Dependence Plot (PDP): среднее предсказание модели при фиксированной фиче и усреднении остальных. Показывает marginal effect.

ICE plot: PDP, но отдельной кривой для каждого объекта. Показывает, насколько marginal effect стабилен.

Типичные вопросы

«Какую модель выберешь для классификации фрода?»

Шаги: имбаланс (fraud rate 0.1%-1%) → CatBoost / LightGBM с class_weight. Метрика — PR-AUC (не ROC-AUC, на имбалансе врёт). Порог — по precision-recall trade-off бизнеса.

«Почему CatBoost обычно лучше XGBoost?»

Native обработка категориальных через ordered target encoding. Меньше overfit на noisy фичах. Symmetric trees ускоряют inference.

«Что происходит с linear regression на 1M фичей и 1k объектах?»

Сильный overfit. Решение: L1 регуляризация (Lasso) для feature selection, или просто меньше фичей. Логистическая регрессия с L2 — то же самое, но для классификации.

«Bagging vs boosting — когда что?»

Bagging (random forest) — снижает variance, parallel training, robust baseline. Boosting (XGBoost) — снижает bias, sequential training, обычно лучше на бизнес-задачах при правильном tuning.

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

  • «Возьму нейронку». Для табличных данных классика почти всегда лучше. Объясни trade-off, прежде чем тянуть deep learning
  • Игнор feature engineering. «Просто закину фичи в CatBoost» — junior. Senior строит фичи под задачу
  • Без интерпретации. ROC-AUC 0.85 без SHAP — для скоринга мало
  • Не учесть imbalance. Accuracy на 99% fraud = 99% — модель просто угадывает большинство
  • Default-параметры. XGBClassifier() без tuning — оставляет производительность на столе

FAQ

Сколько алгоритмов нужно знать наизусть?

Глубоко: linear / logistic regression, decision trees, random forest, XGBoost / LightGBM / CatBoost. На senior — добавь SVM, KNN, Naive Bayes на уровне «когда используют».

Нужно ли уметь выводить gradient descent?

Junior — нет, понимание интуиции достаточно. Senior — вывод gradient descent и логистической регрессии желателен.

CatBoost от Яндекса — это плюс для собеса там?

Знание CatBoost глубже среднего — да, ценится. Но не «только CatBoost», основа должна быть универсальной.

Linear regression vs logistic regression — основная разница?

Linear — predicts continuous target. Logistic — predicts probability of class через sigmoid поверх линейной комбинации.

Когда XGBoost проигрывает классике?

На очень маленьких выборках (< 1k объектов) логрег с L2 часто стабильнее. На очень больших разреженных данных (текст) — линейные модели с TF-IDF.

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