machine-learning Лекция

Логистическая регрессия. Регуляризация и ROC-AUC

Лекция 9: Логистическая регрессия. Регуляризация и ROC-AUC

Цели лекции

  1. Понять, как превратить Линейную регрессию в Классификатор (магия Сигмоиды).
  2. Научиться интерпретировать вероятности, а не просто метки классов.
  3. Освоить Регуляризацию (L1 и L2): как заставить модель быть проще и не переобучаться.
  4. Разобраться с метрикой ROC-AUC, которая оценивает качество модели “в целом”, независимо от порога.

Часть 1: Логистическая регрессия — Это не то, чем кажется

В прошлый раз мы предсказывали цену дома (число). Теперь мы хотим предсказать: “Вернет ли клиент кредит?” (Да/Нет, 1/0).

1.1. Почему Линейная регрессия не подходит?

Если мы попробуем провести прямую линию через точки классов 0 и 1:

  1. Выход за границы: Линия уходит в ++\infty и -\infty. Что значит “Вероятность возврата кредита = 150%”? Или “-20%”? Это бред.
  2. Чувствительность к выбросам: Один миллионер-клиент сдвинет линию так, что классификация обычных людей сломается.

1.2. Сигмоида (Sigmoid Function)

Нам нужно “сжать” выход линейной модели в диапазон [0,1][0, 1]. Для этого используется логистическая функция (сигмоида):

σ(z)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

где z=w0+w1x1+...z = w_0 + w_1 x_1 + ... (выход линейной регрессии).

  • Если zz очень большое положительное -> σ(z)1\sigma(z) \approx 1.
  • Если zz очень большое отрицательное -> σ(z)0\sigma(z) \approx 0.
  • Если z=0z = 0 -> σ(z)=0.5\sigma(z) = 0.5.

1.3. Граница решений (Decision Boundary)

По умолчанию модель работает так:

  • Вычисляем вероятность P(y=1X)P(y=1|X).
  • Если P>0.5P > 0.5 -> Класс 1.
  • Если P0.5P \le 0.5 -> Класс 0.

Внутри модели граница решений — это всё ещё прямая линия (или гиперплоскость). Поэтому Логистическая регрессия — это линейный классификатор. Она не сможет разделить классы, расположенные “бубликом” (без feature engineering).


Часть 2: Регуляризация — Укрощение весов

Часто модель слишком сильно подстраивается под обучающие данные, делая веса признаков огромными (например, wsalary=106w_{salary} = 10^6). Это Переобучение (Overfitting). Решение: добавить “штраф” за большие веса в функцию потерь.

2.3. Параметр C в Scikit-Learn

Внимание на параметр C

В sklearn используется параметр C, который равен 1/λ1/\lambda. Он работает “наоборот”:

  • Маленькое C (0.01) = Сильная регуляризация (простая модель, веса мелкие).
  • Большое C (1000) = Слабая регуляризация (модель доверяет данным, риск переобучения).

Часть 3: ROC-AUC — Оценка вероятностей

Accuracy зависит от порога (0.5). Но кто сказал, что 0.5 — лучший порог? Если мы ловим террористов, мы готовы бить тревогу уже при вероятности 10% (порог 0.1). Accuracy при этом изменится. Как оценить модель “вообще”, при всех возможных порогах?

3.1. ROC Curve (Кривая ошибок)

Мы берем все возможные пороги от 0 до 1 и для каждого считаем:

  • TPR (True Positive Rate, Recall): Сколько врагов поймали? (по оси Y).
  • FPR (False Positive Rate): Сколько раз зря подняли тревогу? (по оси X).

Рисуем график. Идеальная модель идет в левый верхний угол (TPR=1, FPR=0). Случайная модель идет по диагонали.

3.2. AUC (Area Under Curve)

Это площадь под ROC-кривой.

  • AUC = 0.5: Модель гадает на кофейной гуще (случайная).
  • AUC = 1.0: Идеальная модель.
  • AUC = 0.85: Хорошая рабочая модель.

Физический смысл AUC: Если мы возьмем случайного “больного” и случайного “здорового”, какова вероятность, что модель даст “больному” скор выше, чем “здоровому”?


Часть 4: Интерпретация весов в Логистической регрессии

В отличие от обычной регрессии, здесь зависимость нелинейная.

Инженерное правило

Если wage=0.5w_{age} = 0.5, это НЕ значит, что “увеличение возраста на 1 год повышает вероятность на 50%”. Это значит, что увеличивается лог-шанс (log-odds).

  • Положительный вес -> признак повышает вероятность класса 1.
  • Отрицательный вес -> признак понижает вероятность.
  • Чем больше модуль веса (при масштабированных данных!), тем важнее признак.

🧠 Проверка знаний

Какое главное свойство делает L1-регуляризацию (Lasso) полезной для отбора признаков по сравнению с L2-регуляризацией (Ridge)?

Что означает параметр C в реализации логистической регрессии библиотеки Scikit-Learn?