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) — в оригинальных единицах
  • — доля объяснённой дисперсии
  • 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. Логистическая регрессия безопаснее.

Связанные темы

FAQ

Как перевести classification в regression?

Если target — числовой код категорий (ordinal), можно. Иначе нет.

RMSE в процентах?

MAPE (Mean Absolute Percentage Error) — для этого.

Multi-label classification — что?

Каждый пример может иметь несколько labels одновременно. Отдельная подзадача.

Predict probabilities?

В classification — predict_proba. Это пробабилистические predictions.


Тренируйте ML — откройте тренажёр с 1500+ вопросами для собесов.