Логистическая регрессия: классификация и вероятность класса
Логистическая регрессия решает задачу классификации, несмотря на слово «регрессия» в названии. Она вычисляет линейную комбинацию признаков, преобразует её в значение от нуля до…
Логистическая регрессия решает задачу классификации, несмотря на слово «регрессия» в названии. Она вычисляет линейную комбинацию признаков, преобразует её в значение от нуля до единицы и сравнивает полученную оценку с порогом для выбора класса.
От оценки к классу
Для бинарной задачи модель сначала получает число 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. Для каждого варианта посчитайте пропущенные положительные случаи и ложные тревоги, затем выберите порог для сценария, где пропуск в пять раз дороже проверки.
Что важно запомнить
- Логистическая регрессия является линейным классификатором.
- predict_proba даёт оценку, а порог превращает её в класс.
- Порог зависит от цены ложных тревог и пропусков.
- Коэффициенты и вероятности требуют осторожной интерпретации.