Логистическая регрессия: классификация и вероятность класса

Логистическая регрессия решает задачу классификации, несмотря на слово «регрессия» в названии. Она вычисляет линейную комбинацию признаков, преобразует её в значение от нуля до…

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

От оценки к классу

Для бинарной задачи модель сначала получает число z = w × x + b, которое может быть любым. Сигмоидная функция преобразует его в диапазон от 0 до 1. Scikit-learn возвращает это значение через predict_proba, а predict по умолчанию применяет порог вероятности 0,5, эквивалентный нулю decision score.

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

Обучение модели в Pipeline

from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

X, original_y = load_breast_cancer(return_X_y=True)
# В исходном датасете 0 = malignant, 1 = benign. Для примера делаем
# злокачественный случай положительным классом 1.
y = (original_y == 0).astype(int)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

model = make_pipeline(
    StandardScaler(),
    LogisticRegression(max_iter=2_000),
)
model.fit(X_train, y_train)

probabilities = model.predict_proba(X_test)[:, 1]
predictions = probabilities >= 0.4
print(classification_report(y_test, predictions))

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

Что означают коэффициенты

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

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

Многоклассовая классификация

Для трёх и более классов модель оценивает несколько наборов весов и выбирает класс с наибольшей оценкой. Классы должны быть взаимоисключающими для обычной постановки. Если объект одновременно имеет несколько тегов, требуется multilabel-классификация с отдельными бинарными решениями.

Проверьте порядок model.classes_ перед тем, как связывать столбцы predict_proba с названиями. Нельзя полагаться на случайный порядок категорий в исходном файле.

Вероятность и уверенность

Число 0,8 выглядит как вероятность, но оценки модели могут быть плохо откалиброваны. Среди объектов с оценкой около 0,8 положительный исход должен встречаться примерно в 80% случаев, чтобы интерпретация была статистически оправдана. Это проверяют отдельно калибровочной кривой и на новых данных.

Практика: измените порог

Обучите бинарный классификатор и получите predict_proba. Сравните число положительных прогнозов при порогах 0,3, 0,5 и 0,8. Для каждого варианта посчитайте пропущенные положительные случаи и ложные тревоги, затем выберите порог для сценария, где пропуск в пять раз дороже проверки.

Что важно запомнить

Источники