Классический ML на собеседовании Data Scientist
Содержание:
Что такое «классический 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³)).
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 — в процентах, но плохо при значениях около нуля
- R² — какая доля дисперсии объяснена
Валидация
- 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%, а интерпретируемость стоит дороже.
Это официальная информация?
Нет. Статья основана на публичных источниках и опыте кандидатов.