Classification vs regression
Карьерник — квиз-тренажёр в Telegram с 1500+ вопросами для собесов аналитика. SQL, Python, A/B, метрики. Бесплатно.
Зачем это знать
Classification и regression — две главные задачи в supervised learning. Путать их на собеседовании — фейл уровня junior. Classification предсказывает категорию (churn / no churn), regression — число (LTV в рублях).
От выбора зависит всё: какой алгоритм, какая loss function, какие метрики, как интерпретировать. На работе тоже критично: «предсказать вероятность churn» — classification (probability 0-1). «Предсказать, сколько пользователь потратит» — regression.
В статье:
- Короткий ответ
- Примеры каждой
- Алгоритмы
- Метрики оценки
- Иногда граница размыта (ordinal, probabilistic)
Короткий ответ
- Classification: target — категория (discrete). Churn yes/no, категория товара (A/B/C).
- Regression: target — число (continuous). Revenue, time, price.
Примеры
Classification
- Binary: churn / no churn
- Multi-class: категория товара (Electronics, Clothing, Food)
- Multi-label: теги поста (может быть несколько одновременно)
Regression
- Цена дома по характеристикам
- LTV клиента
- Время до churn
- Ожидаемое количество orders в следующем месяце
Алгоритмы
Classification
- Logistic Regression
- Decision Trees, Random Forest
- XGBoost
- Neural Networks (softmax output)
- SVM
- k-NN
- Naive Bayes
Regression
- Linear Regression
- Decision Trees, Random Forest
- XGBoost (regression objective)
- Neural Networks (single continuous output)
- Elastic Net / Ridge / Lasso
- SVR (SVM for regression)
Заметьте: многие алгоритмы работают и для classification, и для regression.
Метрики
Classification
- Accuracy — доля правильных
- Precision / Recall / F1 — на imbalanced
- ROC AUC — threshold-independent
- Log-loss — probabilistic
Regression
- MAE (Mean Absolute Error) — среднее abs ошибок
- MSE (Mean Squared Error) — среднее квадратов ошибок
- RMSE (√MSE) — в оригинальных единицах
- R² — доля объяснённой дисперсии
- MAPE — mean absolute percentage error
В коде
Classification
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import f1_score
model = RandomForestClassifier()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
f1 = f1_score(y_test, y_pred)Regression
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error
model = RandomForestRegressor()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
mae = mean_absolute_error(y_test, y_pred)Иногда граница размыта
Probabilistic classification
predict_proba возвращает числа 0-1. Технически — регрессия probability.
Ordinal classification
Target — порядок (low/mid/high). Можно как classification, так и как regression (потом binning).
Logistic regression
Название «regression», но это classification (предсказывает probability).
Когда что выбрать
Classification
- Вопрос "какой класс?"
- Target discrete
- Минимум 2 класса (binary)
- Классы известны заранее
Regression
- Вопрос "сколько?"
- Target continuous или дискретный numeric (counts)
- Допустима любая числовая оценка
Сложности
Imbalanced classification
Если классов сильно неравно (1% fraud), нужны:
- F1 вместо accuracy
- Oversampling (SMOTE) / undersampling
- Class weights в loss
Heteroskedasticity в regression
Error variance меняется по X. Требует внимания. См. heteroskedasticity.
Outliers
В regression outliers в y сильно влияют на модель. Используйте robust regressors или Huber loss.
На собесе
«Разница?» Classification — категории. Regression — числа.
«Как выбрать метрику?» Classification: F1 для imbalanced, accuracy для balanced. Regression: MAE или RMSE.
«Logistic regression — classification?» Да, несмотря на «regression» в названии.
«Churn prediction — какая задача?» Обычно classification (churn / no churn). Можно как regression (вероятность churn).
Частые ошибки
1. Accuracy на imbalanced
См. accuracy vs F1.
2. Linear regression на nonlinear данных
Полезно проверить residuals.
3. Treat ordinal как nominal
"Low/Mid/High" → 3 независимых класса? Лучше ordinal regression.
4. Регрессия target с жёсткими границами
Предсказываете probability (0-1) через linear regression → может получить отрицательное или > 1. Логистическая регрессия безопаснее.
Связанные темы
- Supervised vs unsupervised
- Логистическая регрессия
- Линейная регрессия
- Accuracy vs F1
- XGBoost vs Random Forest
FAQ
Как перевести classification в regression?
Если target — числовой код категорий (ordinal), можно. Иначе нет.
RMSE в процентах?
MAPE (Mean Absolute Percentage Error) — для этого.
Multi-label classification — что?
Каждый пример может иметь несколько labels одновременно. Отдельная подзадача.
Predict probabilities?
В classification — predict_proba. Это пробабилистические predictions.
Тренируйте ML — откройте тренажёр с 1500+ вопросами для собесов.