Как превратить линейную регрессию в классификатор?

«Как превратить линейную регрессию в классификатор?» — вопрос из категории Классическое ML, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Прямое использование линейной регрессии (LinearRegression) для классификации — плохая практика, так как модель предсказывает непрерывные, неограниченные значения, которые нельзя интерпретировать как вероятность класса. Вместо этого я использую логистическую регрессию, которая является линейной моделью для классификации.

Принцип работы: Логистическая регрессия применяет к линейной комбинации признаков z = w*x + b сигмоидную функцию (логит-преобразование), которая «сжимает» результат в интервал (0, 1), интерпретируемый как вероятность P(y=1|x).

Практический пример (бинарная классификация на scikit-learn):

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

# Генерация синтетических данных
X, y = make_classification(n_samples=1000, n_features=10, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# Создание и обучение модели
# Параметр C контролирует силу регуляризации (обратная величина)
model = LogisticRegression(C=1.0, solver='lbfgs', max_iter=1000)
model.fit(X_train, y_train)

# Предсказание вероятностей и классов
probabilities = model.predict_proba(X_test)[:, 1] # Вероятность положительного класса
predictions = model.predict(X_test) # Классы (порог по умолчанию 0.5)

Ключевые отличия и настройки:

  • Многоклассовая классификация: По умолчанию LogisticRegression использует схему «one-vs-rest» (OvR). Для истинного многоклассового логита можно задать multi_class='multinomial', что задействует функцию softmax.
  • Порог принятия решения: Порог 0.5 не всегда оптимален. Я анализирую ROC-кривую и выбираю порог, исходя из бизнес-требований (например, максимизация F1-score или Precision).
  • Регуляризация: Логистическая регрессия по умолчанию включает L2-регуляризацию (контролируется параметром C). Это критически важно для избежания переобучения, особенно когда признаков много.

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