Логистическая регрессия
Учимся решать задачи классификации — предсказываем вероятности принадлежности к классу.
От регрессии к классификации
Линейная регрессия предсказывает число. А что, если нам нужно предсказать класс — «спам / не спам», «болен / здоров»? Можно ли адаптировать линейную модель для классификации?
Можно! Идея простая: вместо того чтобы предсказывать число напрямую, мы пропустим выход линейной модели через специальную функцию, которая «сожмёт» результат в диапазон от 0 до 1. Получится вероятность принадлежности к классу.
Сигмоида — ключевая функция
Эта «сжимающая» функция называется сигмоида (logistic function):
- При z → +∞ сигмоида стремится к 1
- При z → -∞ сигмоида стремится к 0
- При z = 0 сигмоида равна 0.5
- Всегда возвращает значение в (0, 1) — удобно интерпретировать как вероятность
По сути, сигмоида превращает любое число в вероятность. Большое положительное число → «почти наверняка класс 1». Большое отрицательное → «почти наверняка класс 0».
Формула логистической регрессии
Подставляем линейную комбинацию признаков в сигмоиду:
Модель выдаёт вероятность того, что объект принадлежит положительному классу. Для финального предсказания обычно используют порог 0.5: если P ≥ 0.5 → класс 1, иначе → класс 0. Но порог можно двигать в зависимости от задачи!
🎤 Почему логистическая РЕГРЕССИЯ используется для КЛАССИФИКАЦИИ?
Название историческое. «Регрессия» — потому что модель предсказывает непрерывное число (вероятность от 0 до 1). Но конечная цель — классификация. По сути, мы делаем регрессию на вероятность принадлежности к классу.
Функция потерь: Cross-Entropy (Log Loss)
Для линейной регрессии мы использовали MSE. Для логистической — нужна другая функция потерь. MSE плохо работает с вероятностями, потому что создаёт невыпуклую поверхность с множеством локальных минимумов.
Вместо этого используется бинарная кросс-энтропия:
Интуиция: если истинный класс y=1, а модель предсказала p̂=0.01 — ошибка огромная (−ln(0.01) ≈ 4.6). Если модель предсказала p̂=0.99 — ошибка минимальная (−ln(0.99) ≈ 0.01). Функция «наказывает» модель за уверенные неправильные предсказания.
Log Loss vs Cross-Entropy
Это одно и то же! Log loss — название из ML, cross-entropy — из теории информации. На собесе можно использовать оба термина.
Decision Boundary
Логистическая регрессия создаёт линейную границу решений (decision boundary) — гиперплоскость, которая разделяет пространство признаков на два класса.
Граница проходит там, где модель выдаёт ровно 0.5:
- В 2D — это прямая линия
- В 3D — плоскость
- В nD — гиперплоскость
Это важное ограничение: логистическая регрессия может разделить классы только линейно. Если граница между классами нелинейная (например, один класс «окружает» другой), модель не справится без добавления полиномиальных признаков.
Многоклассовая классификация
Базовая логистическая регрессия работает с двумя классами. Для многоклассовой задачи есть два подхода:
One-vs-Rest (OvR)
Обучаем K отдельных классификаторов — каждый отличает «свой» класс от всех остальных. При предсказании выбираем класс с наибольшей вероятностью. Просто, но классификаторы не «знают» друг о друге.
Softmax (Multinomial)
Обобщение сигмоиды на K классов. Модель выдаёт вектор из K вероятностей, которые в сумме дают 1:
Softmax — единая модель, которая учитывает все классы одновременно. В sklearn это `LogisticRegression(multi_class="multinomial")`.
Итого
- Логистическая регрессия = линейная модель + сигмоида → вероятность класса
- Функция потерь: binary cross-entropy (log loss)
- Decision boundary — линейная граница в пространстве признаков
- Многоклассовая: One-vs-Rest или Softmax
- Простая, быстрая, интерпретируемая — отличный baseline для классификации
- Ограничение: линейная граница решений
Материалы
Теория и примеры кода на Python
Наглядное объяснение логистической регрессии от Josh Starmer
Курс Deep Learning School, раздел про классификацию
Документация sklearn по LogisticRegression