Обязательно

Логистическая регрессия

Учимся решать задачи классификации — предсказываем вероятности принадлежности к классу.

Время изучения: 20 мин

От регрессии к классификации

Линейная регрессия предсказывает число. А что, если нам нужно предсказать класс — «спам / не спам», «болен / здоров»? Можно ли адаптировать линейную модель для классификации?

Можно! Идея простая: вместо того чтобы предсказывать число напрямую, мы пропустим выход линейной модели через специальную функцию, которая «сожмёт» результат в диапазон от 0 до 1. Получится вероятность принадлежности к классу.

Сигмоида — ключевая функция

Эта «сжимающая» функция называется сигмоида (logistic function):

σ(z)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}
  • При z → +∞ сигмоида стремится к 1
  • При z → -∞ сигмоида стремится к 0
  • При z = 0 сигмоида равна 0.5
  • Всегда возвращает значение в (0, 1) — удобно интерпретировать как вероятность

По сути, сигмоида превращает любое число в вероятность. Большое положительное число → «почти наверняка класс 1». Большое отрицательное → «почти наверняка класс 0».

Формула логистической регрессии

Подставляем линейную комбинацию признаков в сигмоиду:

P(y=1x)=σ(wx+b)=11+e(wx+b)P(y = 1 \mid \mathbf{x}) = \sigma(\mathbf{w}^\top \mathbf{x} + b) = \frac{1}{1 + e^{-(\mathbf{w}^\top \mathbf{x} + b)}}

Модель выдаёт вероятность того, что объект принадлежит положительному классу. Для финального предсказания обычно используют порог 0.5: если P ≥ 0.5 → класс 1, иначе → класс 0. Но порог можно двигать в зависимости от задачи!

🎤 Почему логистическая РЕГРЕССИЯ используется для КЛАССИФИКАЦИИ?

Название историческое. «Регрессия» — потому что модель предсказывает непрерывное число (вероятность от 0 до 1). Но конечная цель — классификация. По сути, мы делаем регрессию на вероятность принадлежности к классу.

Функция потерь: Cross-Entropy (Log Loss)

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

Вместо этого используется бинарная кросс-энтропия:

L=1ni=1n[yiln(p^i)+(1yi)ln(1p^i)]L = -\frac{1}{n} \sum_{i=1}^{n} \left[ y_i \ln(\hat{p}_i) + (1 - y_i) \ln(1 - \hat{p}_i) \right]

Интуиция: если истинный класс 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:

wx+b=0\mathbf{w}^\top \mathbf{x} + b = 0
  • В 2D — это прямая линия
  • В 3D — плоскость
  • В nD — гиперплоскость

Это важное ограничение: логистическая регрессия может разделить классы только линейно. Если граница между классами нелинейная (например, один класс «окружает» другой), модель не справится без добавления полиномиальных признаков.

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

Базовая логистическая регрессия работает с двумя классами. Для многоклассовой задачи есть два подхода:

One-vs-Rest (OvR)

Обучаем K отдельных классификаторов — каждый отличает «свой» класс от всех остальных. При предсказании выбираем класс с наибольшей вероятностью. Просто, но классификаторы не «знают» друг о друге.

Softmax (Multinomial)

Обобщение сигмоиды на K классов. Модель выдаёт вектор из K вероятностей, которые в сумме дают 1:

P(y=kx)=ewkx+bkj=1Kewjx+bjP(y = k \mid \mathbf{x}) = \frac{e^{\mathbf{w}_k^\top \mathbf{x} + b_k}}{\sum_{j=1}^{K} e^{\mathbf{w}_j^\top \mathbf{x} + b_j}}

Softmax — единая модель, которая учитывает все классы одновременно. В sklearn это `LogisticRegression(multi_class="multinomial")`.

Итого

  • Логистическая регрессия = линейная модель + сигмоида → вероятность класса
  • Функция потерь: binary cross-entropy (log loss)
  • Decision boundary — линейная граница в пространстве признаков
  • Многоклассовая: One-vs-Rest или Softmax
  • Простая, быстрая, интерпретируемая — отличный baseline для классификации
  • Ограничение: линейная граница решений