Урок 12. Логистическая регрессия. Решение задач классификации при помощи логистической регрессии

На этом занятии мы разберем один из наиболее популярных, математически строгих и интерпретируемых алгоритмов бинарной классификации — логистическую регрессию (Logistic Regression). Мы выясним природу парадокса ее названия, изучим функцию активации Сигмоиду и поймем, почему для классификации требуется особая функция потерь Log Loss.

1. Парадокс названия и вероятностный подход

Первое, что часто смущает начинающих специалистов, — слово «регрессия» в названии. Важно зафиксировать: логистическая регрессия — это алгоритм классификации, а не регрессии.

В простейшем линейном классификаторе (перцептроне) мы принимали жесткое пороговое решение: все, что больше нуля — Класс 1, все, что меньше — Класс 0. Такой подход делит пространство жестко и не дает понимания, насколько модель уверена в своем ответе.

Главная идея логистической регрессии — предсказывать не просто метку класса, а вычислять вероятность принадлежности объекта к классу (значение в диапазоне от \(0\) до \(1\)).

Бизнес-кейс (Фильтрация спама): Получив новое письмо, модель вычисляет вероятность того, что это спам. Если вероятность \(p \ge 0.95\) — письмо можно сразу удалять без ведома пользователя. Если вероятность умеренная (\(0.50 \le p \le 0.94\)) — письмо перемещается в папку «Спам» для возможности ручной проверки. Если вероятность низкая — идет во «Входящие». Вероятностный подход дает гибкость управления решениями.

2. Принцип работы: функция активации Сигмоида

Как и в линейной регрессии, сначала вычисляется взвешенная сумма признаков объекта (линейная комбинация):

$$ z = w_0 + w_1x_1 + w_2x_2 + \dots + w_nx_n $$

Результат \(z\) может быть абсолютно любым числом в диапазоне от \(-\infty\) до \(+\infty\). Чтобы сжать его в вероятностный диапазон \([0, 1]\), значение \(z\) пропускается через логистическую функцию — сигмоиду (Sigmoid):

$$ \sigma(z) = \frac{1}{1 + e^{-z}} $$

Полученный результат \(\sigma(z)\) интерпретируется как вероятность принадлежности объекта к Классу 1. Если \(\sigma(z) \ge 0.5\), принимается решение отнести объект к Классу 1, если \(\sigma(z) < 0.5\) — к Классу 0. Граница принятия решений (decision boundary) достигается точно при \(z = 0\).

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

3. Почему для классификации неприменима метрика MSE?

В линейной регрессии для оптимизации мы минимизировали среднеквадратичную ошибку (MSE). Использовать ее совместно с сигмоидой в задачах классификации нельзя по двум причинам:

  1. Неправильный диапазон наказания: Сигмоида зажата в пределах от 0 до 1, и квадратичный штраф MSE будет слишком слабо наказывать модель за уверенные, но абсолютно неверные ответы.
  2. Проблема невыпуклости (Non-convexity): Если подставить сигмоиду в формулу MSE, результирующая функция потерь станет невыпуклой. Она будет иметь сложный ландшафт со множеством локальных минимумов. Попытка применить к ней градиентный спуск приведет к тому, что алгоритм застрянет в случайной «яме» и не найдет глобального минимума.

4. Логарифмическая функция потерь Log Loss

Для решения этих проблем используется выпуклая функция потерь — Log Loss (бинарная кросс-энтропия). Ее формула для одного объекта выглядит так:

$$ \text{Loss}(y, p) = -[y \cdot \log(p) + (1 – y) \cdot \log(1 – p)] $$

Где \(y\) — истинная метка класса (0 или 1), а \(p\) — предсказанная моделью вероятность.

Функция потерь

Интуиция за Log Loss:

  • Если истинный класс \(y = 1\), формула упрощается до \(-\log(p)\). Если модель предсказывает вероятность близкую к единице (\(p \to 1\)), штраф стремится к нулю. Но если модель ошибается и предсказывает вероятность близкую к нулю (\(p \to 0\)), штраф взлетает до бесконечности.
  • Если истинный класс \(y = 0\), формула упрощается до \(-\log(1 – p)\). Штраф стремится к бесконечности, если предсказанная вероятность уверенно стремится к единице (\(p \to 1\)).

Общая функция потерь для всего набора данных (Cost Function) представляет собой простое среднее арифметическое Log Loss по всем \(N\) объектам обучающей выборки:

$$ J(w, b) = -\frac{1}{N} \sum_{i=1}^{N} [y_i \cdot \log(p_i) + (1 – y_i) \cdot \log(1 – p_i)] $$

5. Реализация в Scikit-Learn и «киллер-фича» `predict_proba`

Класс LogisticRegression библиотеки scikit-learn под капотом использует не простой градиентный спуск, а более быстрые и продвинутые оптимизаторы — «солверы» (lbfgs, liblinear, saga), а также поддерживает встроенную L1 и L2 регуляризацию (управляется гиперпараметрами penalty и C — обратной силой регуляризации).

Обучив модель на датасете «Ирисы Фишера» (исключив класс Setosa для бинарной постановки задачи), мы получаем высокую точность (\(0.97\) на тесте) и отличную стабильность при кросс-валидации (средняя точность \(0.950\) при стандартном отклонении всего \(4.7\%\)).

Использование predict_proba()

Для предсказания класса нового объекта мы используем метод model.predict(new_iris). Однако, чтобы извлечь вероятности, мы вызываем метод model.predict_proba(new_iris). На выходе мы получаем распределение:

array([[0.0245406, 0.9754594]])

Это означает, что модель с уверенностью в \(97.5\%\) относит объект к Классу 1, и лишь с вероятностью \(2.5\%\) — к Классу 0. Наличие этой метрики позволяет гибко интегрировать модель классификации в сложные прикладные ИИ-системы.

План занятия

  1. Парадокс названия и вероятностный подход
    • Почему логистическая регрессия относится к классу алгоритмов классификации, а не регрессионного анализа.
    • Проблема жестких пороговых решений линейного перцептрона.
    • Концепция уверенности: вычисление вероятностей принадлежности объекта к классам (значения в диапазоне \([0, 1]\)) для гибкого принятия решений.
  2. Математическое устройство: функция активации Сигмоида
    • Расчет взвешенной линейной комбинации признаков: \(z = w_0 + w_1x_1 + \dots + w_nx_n\).
    • Применение логистической функции (сигмоиды) \(\sigma(z) = \frac{1}{1 + e^{-z}}\) для проецирования диапазона \((-\infty, +\infty)\) на интервал \([0, 1]\).
    • Интерпретация значения \(\sigma(z)\) как вероятности. Порог принятия решения \(0.5\) и граница принятия решений (при \(z = 0\)).
  3. Проблема MSE и логарифмическая функция потерь Log Loss
    • Почему нельзя использовать среднеквадратичную ошибку (MSE) в логистической регрессии: проблема невыпуклости (нескольких локальных минимумов) функции потерь.
    • Логарифмическая функция потерь (Log Loss): формула для одного объекта \(\text{Loss} = -[y\log(p) + (1-y)\log(1-p)]\).
    • Философия Log Loss: концепция жесткого штрафования (вплоть до бесконечности) за уверенные, но ошибочные предсказания.
    • Функция стоимости (Cost Function) для всего набора данных.
  4. Реализация LogisticRegression в Scikit-Learn
    • Особенности оптимизаторов под капотом: использование быстрых алгоритмов — «солверов» (lbfgs, liblinear, saga) вместо градиентного спуска.
    • Встроенная L1 (Lasso) и L2 (Ridge) регуляризация.
    • Ключевые гиперпараметры модели: штраф (penalty), обратная сила регуляризации (C), солверы (solver), балансировка классов (class_weight).
    • Практический код: обучение логистической регрессии на подготовленных ирисах, оценка точности на тесте и кросс-валидация.
  5. Практическая ценность функции predict_proba()
    • Разница между жестким предсказанием классов (predict()) и выводом вектора вероятностей (predict_proba()).
    • Прикладной пример использования уверенности модели для построения гибких спам-фильтров с разной ценой ошибки.

Не уходите просто так – не упустите возможность только здесь и сейчас получить скиду!

Индивидуальная консультация по Яндекс Директу или Google Ads со скидкой

25%

"*"обозначает обязательные поля

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