Классификация и регрессия в Machine Learning: в чем разница

Классификация и регрессия без путаницы: чем действительно отличаются эти постановки, как меняются метрики и почему нельзя выбирать модель вслепую.

Содержание Следующие статьи
Содержание Классификация и регрессия в Machine Learning: в чем разница
  1. Почему разница между классификацией и регрессией глубже, чем просто тип ответа
  2. Как это влияет на выбор модели и метрики
  3. Где начинаются практические ошибки

Почему разница между классификацией и регрессией глубже, чем просто тип ответа

На первый взгляд все звучит просто: если предсказываем число — это регрессия, если класс — классификация. Но для практики этого определения мало. Разница начинается раньше: в том, как мы думаем о результате, как измеряем ошибку и какую структуру сигнала ожидаем увидеть. В регрессии нас интересует непрерывная величина и расстояние до нее. В классификации — граница решения, вероятность класса и цена разных типов ошибки.

Именно поэтому один и тот же датасет можно испортить неправильной постановкой. Если задачу на отток свести к числовому скору без понимания порога, можно потерять смысл решения. Если прогноз выручки искусственно превратить в классы, можно выбросить полезную количественную информацию.

Как это влияет на выбор модели и метрики

В регрессии естественны метрики типа MAE, RMSE, R2. Они измеряют, насколько далек прогноз от реального числа. В классификации на первый план выходят accuracy, precision, recall, F1, ROC-AUC и другие меры качества решения по классам. Модель тоже строится по-разному: линейная регрессия и логистическая регрессия похожи по форме, но смысл их выхода принципиально различается.

Если говорить еще глубже, классификация почти всегда приводит к разговору о пороге и вероятностях, а регрессия — к разговору о масштабе ошибки и устойчивости предсказаний.

Где начинаются практические ошибки

Новички часто пытаются сравнивать модели из разных постановок одинаковыми метриками или интерпретировать classification score как количественный прогноз. Еще одна ошибка — забывать о бизнесовом смысле. В одной задаче важнее правильно отделить объекты по группам, в другой — точно предсказать величину эффекта. Постановка должна отражать то решение, которое дальше будет принимать система или человек.

example.pyPython
import pandas as pd  # создаем две мини-задачи на одном и том же наборе признаков
from sklearn.linear_model import LinearRegression, LogisticRegression  # берем модели под регрессию и классификацию

data = pd.DataFrame({  # задаем маленький учебный набор наблюдений
    'sessions': [1, 2, 3, 4, 5, 6],  # числовой признак активности
    'avg_time': [2, 3, 4, 5, 6, 7],  # второй числовой признак
    'revenue': [100, 180, 260, 390, 520, 610],  # непрерывный target для регрессии
    'converted': [0, 0, 0, 1, 1, 1]  # бинарный target для классификации
})

X = data[['sessions', 'avg_time']]  # используем одни и те же признаки в двух постановках
reg = LinearRegression()  # модель для прогноза числа
clf = LogisticRegression(max_iter=2000)  # модель для предсказания класса
reg.fit(X, data['revenue'])  # обучаем регрессию на выручке
clf.fit(X, data['converted'])  # обучаем классификатор на конверсии
print(reg.predict(X[:2]).round(2).tolist())  # получаем непрерывные числовые предсказания
print(clf.predict_proba(X[:2])[:, 1].round(3).tolist())  # получаем вероятности положительного класса

Именно здесь разница становится наглядной. Один и тот же входной вектор может порождать либо число, либо вероятность класса. И выбор между этими режимами — это не косметика, а отражение того, какой вопрос мы задаем данным.

Что читать дальше

Связанные статьи по этой теме

Canary deployment для моделей: как выкатывать новую версию без лишнего риска Latency в ML API: почему быстрая модель важна не меньше точной Batch inference и real-time inference: как выбирать режим работы модели
Вернуться в блог