Почему логистическая регрессия пережила десятки более модных моделей
Логистическая регрессия кажется скромной только до того момента, пока не понимаешь, насколько много она объясняет про классификацию вообще. В ней видно почти все основные идеи: линейную комбинацию признаков, переход от score к вероятности, связь с функцией потерь, важность масштаба признаков, работу регуляризации и интерпретацию коэффициентов. Поэтому логистическая регрессия полезна не только как baseline, но и как учебная модель, через которую удобно понять машинное обучение глубже.
Главная ее сила — прозрачность. Ты можешь посмотреть на коэффициенты, понять, какой признак двигает вероятность вверх или вниз, и увидеть, как решение зависит от порога. Это делает модель особенно ценной там, где нужна объяснимость.
Как из линейной части появляется вероятность
Если взять обычную линейную комбинацию признаков, можно получить любое число: от очень большого отрицательного до очень большого положительного. Для бинарной классификации это неудобно, потому что нам хочется работать с вероятностью в диапазоне от нуля до единицы. Именно здесь и появляется сигмоида: она сжимает линейный score в понятный вероятностный интервал.
$$ P(y=1 \mid x) = \frac{1}{1 + e^{-(w^T x + b)}} $$Линейная часть модели сначала собирает общий score из признаков, а сигмоида превращает его в вероятность положительного класса.
P(y=1 \mid x)— вероятность положительного класса для объекта xw— вектор весов признаковx— вектор признаков объектаb— свободный член моделиe— основание натурального логарифма
Геометрически логистическая регрессия строит разделяющую гиперплоскость. По одну сторону от нее вероятность стремится к нулю, по другую — к единице. Чем дальше объект от границы в подходящем направлении, тем увереннее модель.
Где логистическая регрессия особенно полезна
Она хорошо работает как baseline почти в любой табличной задаче классификации. Ею удобно проверять качество признаков, смотреть на интерпретируемость, быстро строить первый рабочий пайплайн. Во многих практических задачах именно логистическая регрессия оказывается достаточно сильной, если данные хорошо подготовлены и признаки содержательны.
Что у нее чаще всего ломают новички
Во-первых, забывают о масштабе признаков. Логистическая регрессия намного лучше ведет себя, когда числовые признаки приведены к сопоставимому масштабу. Во-вторых, недооценивают роль порога: модель выдает вероятность, а не готовую «истину». В-третьих, смотрят только на accuracy и пропускают ситуацию, где нужно контролировать recall или precision.
import pandas as pd # используем таблицу как привычный объект для признаков
from sklearn.pipeline import Pipeline # собираем preprocessing и модель в единый контур
from sklearn.preprocessing import StandardScaler # нормализуем числовые признаки перед моделью
from sklearn.linear_model import LogisticRegression # берем интерпретируемую baseline-модель
data = pd.DataFrame({ # создаем маленький пример пользовательских наблюдений
'sessions': [1, 2, 3, 4, 5, 6, 7, 8], # число сессий пользователя
'avg_time': [2, 3, 3, 5, 6, 7, 8, 10], # среднее время взаимодействия
'converted': [0, 0, 0, 0, 1, 1, 1, 1] # целевой класс конверсии
})
X = data[['sessions', 'avg_time']] # выделяем только признаки для обучения
y = data['converted'] # сохраняем целевую переменную отдельно
pipe = Pipeline([ # задаем последовательность преобразований и модели
('scaler', StandardScaler()), # масштабируем признаки перед классификатором
('model', LogisticRegression(max_iter=2000)) # обучаем логистическую регрессию
])
pipe.fit(X, y) # подгоняем параметры модели по данным
proba = pipe.predict_proba(X)[:, 1] # берем вероятности положительного класса
print(pd.Series(proba).round(3).tolist()) # смотрим, как модель ранжирует объекты по вероятностиКогда логистическая регрессия понятна на таком уровне, дальше уже проще переходить к регуляризации, калибровке вероятностей, метрикам и сравнению с более сложными моделями. Она хорошо дисциплинирует мышление и показывает, что классификация — это не магия, а аккуратная работа с вероятностным score.