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

Готовишься к собесу Data Scientist?
ML, Deep Learning, NLP, MLOps — вопросы с разборами в Telegram
Тренировать DS в Telegram

Что такое «классический ML»

Классический ML — модели, которые работают с табличными данными и feature engineering. В отличие от deep learning, не требуют GPU, объяснимы, тренируются за минуты на стандартных датасетах.

На собесе junior-DS 70-80% вопросов про классический ML, потому что это инструмент ежедневной работы продуктового DS.

Базовый стек:

  • Линейные модели (regression, logistic regression)
  • Деревья (decision trees)
  • Бустинг (XGBoost, LightGBM, CatBoost)
  • Кластеризация (k-means, DBSCAN, hierarchical)
  • Random Forest

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

Linear Regression

Предсказывает непрерывную величину как линейную комбинацию признаков. Loss — MSE. Решается аналитически (normal equation) или градиентным спуском.

На собесе: «Когда linear regression плохо работает?» Ответ:

  • Нелинейные зависимости в данных
  • Сильно коррелированные фичи (multicollinearity)
  • Категориальные фичи без правильного кодирования
  • Выбросы — MSE их сильно тянет

Logistic Regression

Для бинарной классификации. Sigmoid выход интерпретируется как вероятность. Loss — log loss (cross-entropy).

Multiclass: one-vs-rest (по одной модели на класс) или multinomial logistic regression (softmax).

На собесе важно уметь интерпретировать коэффициенты: коэффициент 0.5 у feature X означает «при росте X на 1 odds увеличиваются в exp(0.5) ≈ 1.65 раза».

Регуляризация

  • L1 (Lasso) — добавляет |w| к loss. Делает фичи нулевыми (feature selection)
  • L2 (Ridge) — добавляет w². Уменьшает все веса, но не до нуля
  • Elastic Net — комбинация L1 + L2

Зачем регуляризация: предотвращает переобучение, управляет ошибками при много фичах.

Деревья и градиентный бустинг

Decision Tree

Жадно делит признаковое пространство по правилам «if X > 5 then». Метрики разделения — Gini, entropy, MSE.

Плюсы: интерпретируется, не требует масштабирования. Минусы: переобучается при глубине, нестабильно к изменениям данных.

Random Forest

Bagging: тренирует много деревьев на bootstrap-выборках. Усредняет (regression) или мажоритарно голосует (classification).

Плюсы: устойчив, мало гиперпараметров. Минусы: медленнее единичного дерева, хуже на разреженных данных, чем бустинг.

Gradient Boosting

Последовательно строит деревья, каждое следующее предсказывает остатки предыдущего. Loss минимизируется градиентным спуском.

Имплементации:

  • XGBoost — старая база, по-прежнему сильная
  • LightGBM — быстрее, leaf-wise рост вместо level-wise
  • CatBoost — нативная поддержка категориальных фичей, симметричные деревья, меньше переобучения

На собесе: «XGBoost vs LightGBM vs CatBoost — что выберешь?» Ответ:

  • XGBoost — стабильный, дефолт на Kaggle
  • LightGBM — быстрее на больших данных, но прихотлив к настройке
  • CatBoost — лучший на табличных данных в проде, легко обучается, нативные категории

Кластеризация

k-means

Итеративно: выбирает k центроидов, кладёт точки к ближайшему, пересчитывает центроиды.

Плюсы: быстрый, простой. Минусы: нужно знать k заранее, чувствителен к инициализации, плох на не-сферических кластерах.

Выбор k — elbow method (где график WCSS перестаёт сильно падать) или silhouette score.

DBSCAN

Density-based. Группирует точки по плотности. Не нужно знать k.

Плюсы: находит кластеры произвольной формы, отделяет шум. Минусы: чувствителен к параметрам eps и min_samples, плохо работает на разной плотности.

Hierarchical clustering

Строит дерево кластеров. Можно резать на любом уровне.

Плюсы: визуализация через dendrogram. Минусы: медленный на больших данных (O(n²) или O(n³)).

Готовишься к собесу Data Scientist?
ML, Deep Learning, NLP, MLOps — вопросы с разборами в Telegram
Тренировать DS в Telegram

Feature engineering

Главный навык DS, без которого модели не работают.

Категориальные фичи

  • One-hot — для номинальных, мало категорий
  • Target encoding — категория → среднее target по этой категории. Осторожно с overfitting
  • Frequency encoding — категория → частота в трейне
  • CatBoost native — встроенная обработка через ordered statistics

Числовые фичи

  • Масштабирование (StandardScaler, MinMaxScaler) для линейных моделей и нейросетей
  • Логарифмирование длинных хвостов
  • Биннинг (превращение в категории)

Время

  • Декомпозиция: год, месяц, день недели, час
  • Циклические признаки: sin/cos для часа, дня
  • Лаги, скользящие средние, агрегаты по окнам

Пропуски

  • Заполнение средним/медианой/модой
  • Отдельная категория для категориальных
  • Indicator-фича «было пропущено»
  • Imputation с моделью (sklearn SimpleImputer, IterativeImputer)

Метрики и валидация

Метрики классификации

  • Accuracy — доля правильных. Бесполезна на несбалансированных классах
  • Precision — TP / (TP + FP). «Из тех, кого предсказали + класс»
  • Recall — TP / (TP + FN). «Из всех + класс — скольких поймали»
  • F1 — гармоническое среднее
  • ROC AUC — независим от threshold, хорош для общей оценки модели
  • PR AUC — лучше ROC AUC на несбалансированных данных

Метрики регрессии

  • RMSE — наказывает большие ошибки сильнее
  • MAE — устойчив к выбросам
  • MAPE — в процентах, но плохо при значениях около нуля
  • — какая доля дисперсии объяснена

Валидация

  • Hold-out — простой train/test split. На небольших данных нестабильный
  • K-Fold — k разбиений. Стандарт
  • Stratified K-Fold — сохраняет распределение target. Для классификации почти всегда
  • TimeSeriesSplit — для временных данных, без leak

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

Использовать accuracy на несбалансированных классах. При 95% positive accuracy 95% — это «всегда yes», бесполезная модель. Используй precision/recall/F1.

Data leakage. Применять scaler/encoder ко всему датасету до split → значения test участвовали в нормализации. Всегда fit на train, transform на val/test.

Не делать кросс-валидацию. Один train/test split — нестабильная оценка.

Игнорировать class imbalance. При 99% negative дефолтный classifier предскажет всем «negative». Class weights, SMOTE, undersampling.

Не объяснять модель. На собесе спросят «как объяснишь предсказание клиенту?». SHAP, feature importance, partial dependence — must-know.

FAQ

Какую библиотеку выбрать — XGBoost, LightGBM, CatBoost?

CatBoost для табличных данных в проде. XGBoost для классики. LightGBM для очень больших данных. Принципиально все три похожие.

Линейная регрессия всё ещё актуальна?

Да. Простая, объяснимая, быстрая. На многих задачах CatBoost превосходит её на 1-2%, а интерпретируемость стоит дороже.

Это официальная информация?

Нет. Статья основана на публичных источниках и опыте кандидатов.