Ответ
Прямое использование линейной регрессии (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). Это критически важно для избежания переобучения, особенно когда признаков много.
Таким образом, я не «превращаю» линейную регрессию, а выбираю корректную линейную модель, разработанную для задач классификации.