Участник:Dovlat Demin
Материал из MachineLearning.
(Новая: # Логистическая регрессия **Логистическая регрессия** – это статистическая модель и алгоритм машинн...) |
|||
| Строка 1: | Строка 1: | ||
# Логистическая регрессия | # Логистическая регрессия | ||
| - | **Логистическая регрессия** | + | ** Логистическая регрессия** — это статистическая модель и алгоритм машинного обучения для бинарной (и многоклассовой) классификации, позволяющий предсказывать вероятности отнесения объектов к тому или иному классу. Несмотря на название, логистическая регрессия не выполняет регрессию в привычном смысле (предсказание непрерывной величины), а моделирует дискретную зависимость целевой переменной, обычно принимающей значения 0 или 1. Модель широко применяется в медицине, финансовом скоринге, маркетинге и других областях, где необходимо оценить вероятность события (например, заболеет/не заболеет пациент, кредит будет погашен/не погашен и т. д.). Логистическая регрессия является простым и интерпретируемым линейным классификатором (также называемым логит-регрессией или моделью максимальной энтропии). Она часто используется как базовая «отправная» модель перед применением более сложных методов, а также входит в семейство **обобщённых линейных моделей** (GLM) с логит-связью. |
## Математическая формулировка | ## Математическая формулировка | ||
| - | Пусть даны объекты, описанные вектором признаков \(x=(x_1,\dots,x_n)\), и целевая переменная \(y\in\{0,1\}\). Модель логистической регрессии строит линейную комбинацию признаков и преобразует её с помощью сигмоидной (логистической) функции \(\sigma(z)=1/(1+e^{-z})\), чтобы получить вероятность принадлежности к классу 1. Формально задают | + | Пусть даны объекты, описанные вектором признаков \(x=(x_1,\dots, x_n)\), и целевая переменная \(y\in\{0,1\}\). Модель логистической регрессии строит линейную комбинацию признаков и преобразует её с помощью сигмоидной (логистической) функции \(\sigma(z)=1/(1+e^{-z})\), чтобы получить вероятность принадлежности к классу 1. Формально задают |
| - | <math>P(y=1 \mid x) = \sigma(\beta_0 + \beta_1 x_1 + \dots + \beta_n x_n),</math> | + | <math>P(y=1 \mid x) = \sigma(\beta_0 + \beta_1 x_1 + \dots + \beta_n x_n),</math> |
| - | где \(\beta_0\) | + | где \(\beta_0\) — свободный член, \(\beta_1,\dots,\beta_n\) — параметры модели. Сигмоидная функция \(\sigma(z)\) сглаживает линейный прогноз \(z=\beta_0+\beta^T x\) на отрезке \([0,1]\): при больших положительных \(z\) она близка к 1, при больших отрицательных — к 0. Таким образом, логистическая регрессия выдает оценку апостериорной вероятности класса 1, а класс 0 получается как \(P(y=0\mid x)=1-P(y=1\mid x)\). Для принятия конкретного решения (классификации) часто применяют порог: если \(\hat p=P(y=1|x)\ge 0.5\), относят объект к классу 1, иначе — к классу 0. |
### Функция потерь и оценка параметров | ### Функция потерь и оценка параметров | ||
| - | Параметры \(\beta\) оценивают методом максимального правдоподобия. Это эквивалентно минимизации логистической функции потерь (кросс-энтропии) на обучающей выборке. Для наблюдений \((x_i,y_i)\), \(i=1,\dots,m\), функция правдоподобия записывается как | + | Параметры \(\beta\) оценивают методом максимального правдоподобия. Это эквивалентно минимизации логистической функции потерь (кросс-энтропии) на обучающей выборке. Для наблюдений \((x_i, y_i)\), \(i=1,\dots, m\), функция правдоподобия записывается как |
| - | <math>L(\beta)=\prod_{i=1}^m P(y_i\mid x_i;\beta)^{y_i}\,(1-P(y_i\mid x_i;\beta))^{1-y_i},</math> | + | <math>L(\beta)=\prod_{i=1}^m P(y_i\mid x_i;\beta)^{y_i}\,(1-P(y_i\mid x_i;\beta))^{1-y_i},</math> |
| - | а её | + | а её логарифм — функция лог-правдоподобия. Минимизируется отрицательный логарифм правдоподобия: |
| - | <math>L(\beta)= -\sum_{i=1}^m \bigl[y_i\ln\sigma(\beta^T x_i) + (1-y_i)\ln(1-\sigma(\beta^T x_i))\bigr].</math> | + | <math>L(\beta)= -\sum_{i=1}^m \bigl[y_i\ln\sigma(\beta^T x_i) + (1-y_i)\ln(1-\sigma(\beta^T x_i))\bigr].</math> |
| - | В scikit-learn эта цель (с учётом регуляризации) записывается формулой: | + | В scikit-learn эта цель (с учётом регуляризации) записывается формулой: |
| - | <math>\min_{\beta}\frac{1}{m}\sum_{i=1}^m \Bigl(-y_i\ln \hat p(x_i) - (1-y_i)\ln(1 - \hat p(x_i))\Bigr) + \frac{r(\beta)}{m C},</math> | + | <math>\min_{\beta}\frac{1}{m}\sum_{i=1}^m \Bigl(-y_i\ln \hat p(x_i) - (1-y_i)\ln(1 - \hat p(x_i))\Bigr) + \frac{r(\beta)}{m C},</math> |
| - | где \(\hat p(x_i)=\sigma(\beta^T x_i)\), \(r(\beta)\) | + | где \(\hat p(x_i)=\sigma(\beta^T x_i)\), \(r(\beta)\) — регуляризатор (\(\ell_1\), \(\ell_2\) или их смесь), а \(C\) регулирует его силу. |
| - | Поскольку уравнение не разрешимо в замкнутом виде, оптимизация проводится численно (например, стохастическим градиентным спуском или методом Ньютона-Рафсона). Минимизация кросс-энтропии соответствует методу максимального правдоподобия при распределении Бернулли для целевого признака. Регуляризация (L2 или L1) обычно добавляется, чтобы избежать переобучения и повысить устойчивость алгоритма. | + | Поскольку уравнение не разрешимо в замкнутом виде, оптимизация проводится численно (например, стохастическим градиентным спуском или методом Ньютона-Рафсона). Минимизация кросс-энтропии соответствует методу максимального правдоподобия при распределении Бернулли для целевого признака. Регуляризация (L2 или L1) обычно добавляется, чтобы избежать переобучения и повысить устойчивость алгоритма. |
## Интерпретация коэффициентов | ## Интерпретация коэффициентов | ||
| - | Коэффициенты \(\beta\) имеют ясную смысловую интерпретацию. Для двоичной модели вводят функцию логарифма шансов (логит): | + | Коэффициенты \(\beta\) имеют ясную смысловую интерпретацию. Для двоичной модели вводят функцию логарифма шансов (логит): |
| - | <math>\ln\frac{P(y=1\mid x)}{P(y=0\mid x)} = \beta_0 + \beta_1x_1 + \dots + \beta_n x_n.</math> | + | <math>\ln\frac{P(y=1\mid x)}{P(y=0\mid x)} = \beta_0 + \beta_1x_1 + \dots + \beta_n x_n.</math> |
| - | Таким образом, при увеличении признака \(x_j\) на единицу логарифм отношения шансов изменяется на \(\beta_j\). Иначе говоря, коэффициент \(\beta_j\) отражает, во сколько раз (в логарифмической шкале) изменяются шансы наступления события при изменении соответствующего признака. Это позволяет оценивать значимость факторов: признак с большим \(|\beta_j|\) сильнее влияет на вероятность положительного класса. Формально это означает, что | + | Таким образом, при увеличении признака \(x_j\) на единицу логарифм отношения шансов изменяется на \(\beta_j\). Иначе говоря, коэффициент \(\beta_j\) отражает, во сколько раз (в логарифмической шкале) изменяются шансы наступления события при изменении соответствующего признака. Это позволяет оценивать значимость факторов: признак с большим \(|\beta_j|\) сильнее влияет на вероятность положительного класса. Формально это означает, что |
| - | <math>\frac{P(y=1\mid x_j+1)}{P(y=0\mid x_j+1)} \Big/ \frac{P(y=1\mid x_j)}{P(y=0\mid x_j)} = e^{\beta_j}.</math> | + | <math>\frac{P(y=1\mid x_j+1)}{P(y=0\mid x_j+1)} \Big/ \frac{P(y=1\mid x_j)}{P(y=0\mid x_j)} = e^{\beta_j}.</math> |
| - | Меньшие коэффициенты (близкие к нулю) указывают на слабое влияние признака. | + | Меньшие коэффициенты (близкие к нулю) указывают на слабое влияние признака. |
## Многоклассовая логистическая регрессия | ## Многоклассовая логистическая регрессия | ||
| - | Логистическая регрессия обобщается на задачи с более чем двумя классами. При \(K\) классах обычно используют **многономиальную (Softmax-)регрессию**, задавая матрицу коэффициентов \(W\in\mathbb{R}^{K\times n}\). Тогда предсказанная вероятность принадлежности к классу \(k\) описывается функцией Softmax: | + | Логистическая регрессия обобщается на задачи с более чем двумя классами. При \(K\) классах обычно используют **многономиальную (Softmax-)регрессию**, задавая матрицу коэффициентов \(W\in\mathbb{R}^{K\times n}\). Тогда предсказанная вероятность принадлежности к классу \(k\) описывается функцией Softmax: |
| - | <math>P(y=k \mid x) = \frac{\exp(\beta_{0,k} + \beta_k^T x)}{\sum_{\ell=1}^K \exp(\beta_{0,\ell} + \beta_\ell^T x)},\quad k=1,\dots,K,\</math> | + | <math>P(y=k \mid x) = \frac{\exp(\beta_{0,k} + \beta_k^T x)}{\sum_{\ell=1}^K \exp(\beta_{0,\ell} + \beta_\ell^T x)},\quad k=1,\dots,K,\</math> |
| - | где \(\beta_k\) | + | где \(\beta_k\) — вектор коэффициентов для класса \(k\), \(\beta_{0,k}\) — его свободный член. Такая модель также оптимизируется через максимизацию правдоподобия (суммируя потери по классам). Она часто реализуется как «один против всех» (один классификатор на каждый класс) или сразу с \(K\) классами, но по сути эквивалентна одной многоклассовой модели. |
## Регуляризация | ## Регуляризация | ||
| Строка 47: | Строка 47: | ||
from sklearn.model_selection import train_test_split | from sklearn.model_selection import train_test_split | ||
| - | # X, | + | # X, y — данные (матрица признаков и вектор меток 0/1) |
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) | X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) | ||
| - | model = LogisticRegression(penalty='l2', C=1.0) | + | model = LogisticRegression(penalty='l2', C=1.0) # L2-регуляризация по умолчанию |
| - | model.fit(X_train, y_train) | + | model.fit(X_train, y_train) # обучение модели |
| - | y_pred = model.predict(X_test) | + | y_pred = model.predict(X_test) # предсказание классов |
| - | proba = model.predict_proba(X_test)[:, 1] | + | proba = model.predict_proba(X_test)[:, 1] # предсказанные вероятности класса 1 |
``` | ``` | ||
| - | В этом примере мы создаём экземпляр `LogisticRegression` и обучаем его на тренировочной выборке. Полученные `proba` | + | В этом примере мы создаём экземпляр `LogisticRegression` и обучаем его на тренировочной выборке. Полученные `proba` — это апостериорные вероятности класса 1 для тестовой выборки. Метка класса предсказывается по порогу 0.5 (или другому, заданному параметром `threshold`). |
## Применение | ## Применение | ||
| - | Логистическая регрессия применяется во множестве прикладных задач как простой и хорошо интерпретируемый классификатор. **Примеры применения:** диагностика заболеваний (оценка вероятности наличия болезни по медицинским показателям), кредитный скоринг (вероятность дефолта по финансовым данным заемщика), анализ тональности текстов (положительная/отрицательная), прогноз оттока клиентов, маркетинговые исследования, экономические прогнозы и др. Благодаря тому, что модель выдаёт вероятности, её результаты удобно использовать для оценки рисков и принятия решений. | + | Логистическая регрессия применяется во множестве прикладных задач как простой и хорошо интерпретируемый классификатор. **Примеры применения:** диагностика заболеваний (оценка вероятности наличия болезни по медицинским показателям), кредитный скоринг (вероятность дефолта по финансовым данным заемщика), анализ тональности текстов (положительная/отрицательная), прогноз оттока клиентов, маркетинговые исследования, экономические прогнозы и др. Благодаря тому, что модель выдаёт вероятности, её результаты удобно использовать для оценки рисков и принятия решений. |
## Литература | ## Литература | ||
| - | + | — Hastie T., Tibshirani R., Friedman J. *The Elements of Statistical Learning*. Springer, 2009 (гл. 4). | |
| - | + | — James G., Witten D., Hastie T., Tibshirani R. *An Introduction to Statistical Learning*. Springer, 2013 (гл. 4). | |
| - | + | — Bishop C. *Pattern Recognition and Machine Learning*. Springer, 2006 (гл. 4). | |
| - | + | — Hosmer D.W., Lemeshow S., Sturdivant R.X. *Applied Logistic Regression*. Wiley, 2013. | |
| - | + | — J. Zhanibekov, «Лекция 4. Логистическая регрессия», Учебные материалы (2021). | |
| - | + | — Scikit-learn documentation: *Linear Models* (раздел «Логистическая регрессия»). | |
| - | + | — Wikipedia: «Logistic regression» (по состоянию на 2025 г.). | |
Текущая версия
- Логистическая регрессия
- Логистическая регрессия** — это статистическая модель и алгоритм машинного обучения для бинарной (и многоклассовой) классификации, позволяющий предсказывать вероятности отнесения объектов к тому или иному классу. Несмотря на название, логистическая регрессия не выполняет регрессию в привычном смысле (предсказание непрерывной величины), а моделирует дискретную зависимость целевой переменной, обычно принимающей значения 0 или 1. Модель широко применяется в медицине, финансовом скоринге, маркетинге и других областях, где необходимо оценить вероятность события (например, заболеет/не заболеет пациент, кредит будет погашен/не погашен и т. д.). Логистическая регрессия является простым и интерпретируемым линейным классификатором (также называемым логит-регрессией или моделью максимальной энтропии). Она часто используется как базовая «отправная» модель перед применением более сложных методов, а также входит в семейство **обобщённых линейных моделей** (GLM) с логит-связью.
- Математическая формулировка
Пусть даны объекты, описанные вектором признаков \(x=(x_1,\dots, x_n)\), и целевая переменная \(y\in\{0,1\}\). Модель логистической регрессии строит линейную комбинацию признаков и преобразует её с помощью сигмоидной (логистической) функции \(\sigma(z)=1/(1+e^{-z})\), чтобы получить вероятность принадлежности к классу 1. Формально задают <math>P(y=1 \mid x) = \sigma(\beta_0 + \beta_1 x_1 + \dots + \beta_n x_n),</math> где \(\beta_0\) — свободный член, \(\beta_1,\dots,\beta_n\) — параметры модели. Сигмоидная функция \(\sigma(z)\) сглаживает линейный прогноз \(z=\beta_0+\beta^T x\) на отрезке \([0,1]\): при больших положительных \(z\) она близка к 1, при больших отрицательных — к 0. Таким образом, логистическая регрессия выдает оценку апостериорной вероятности класса 1, а класс 0 получается как \(P(y=0\mid x)=1-P(y=1\mid x)\). Для принятия конкретного решения (классификации) часто применяют порог: если \(\hat p=P(y=1|x)\ge 0.5\), относят объект к классу 1, иначе — к классу 0.
- Функция потерь и оценка параметров
Параметры \(\beta\) оценивают методом максимального правдоподобия. Это эквивалентно минимизации логистической функции потерь (кросс-энтропии) на обучающей выборке. Для наблюдений \((x_i, y_i)\), \(i=1,\dots, m\), функция правдоподобия записывается как <math>L(\beta)=\prod_{i=1}^m P(y_i\mid x_i;\beta)^{y_i}\,(1-P(y_i\mid x_i;\beta))^{1-y_i},</math> а её логарифм — функция лог-правдоподобия. Минимизируется отрицательный логарифм правдоподобия: <math>L(\beta)= -\sum_{i=1}^m \bigl[y_i\ln\sigma(\beta^T x_i) + (1-y_i)\ln(1-\sigma(\beta^T x_i))\bigr].</math> В scikit-learn эта цель (с учётом регуляризации) записывается формулой: <math>\min_{\beta}\frac{1}{m}\sum_{i=1}^m \Bigl(-y_i\ln \hat p(x_i) - (1-y_i)\ln(1 - \hat p(x_i))\Bigr) + \frac{r(\beta)}{m C},</math> где \(\hat p(x_i)=\sigma(\beta^T x_i)\), \(r(\beta)\) — регуляризатор (\(\ell_1\), \(\ell_2\) или их смесь), а \(C\) регулирует его силу.
Поскольку уравнение не разрешимо в замкнутом виде, оптимизация проводится численно (например, стохастическим градиентным спуском или методом Ньютона-Рафсона). Минимизация кросс-энтропии соответствует методу максимального правдоподобия при распределении Бернулли для целевого признака. Регуляризация (L2 или L1) обычно добавляется, чтобы избежать переобучения и повысить устойчивость алгоритма.
- Интерпретация коэффициентов
Коэффициенты \(\beta\) имеют ясную смысловую интерпретацию. Для двоичной модели вводят функцию логарифма шансов (логит): <math>\ln\frac{P(y=1\mid x)}{P(y=0\mid x)} = \beta_0 + \beta_1x_1 + \dots + \beta_n x_n.</math> Таким образом, при увеличении признака \(x_j\) на единицу логарифм отношения шансов изменяется на \(\beta_j\). Иначе говоря, коэффициент \(\beta_j\) отражает, во сколько раз (в логарифмической шкале) изменяются шансы наступления события при изменении соответствующего признака. Это позволяет оценивать значимость факторов: признак с большим \(|\beta_j|\) сильнее влияет на вероятность положительного класса. Формально это означает, что <math>\frac{P(y=1\mid x_j+1)}{P(y=0\mid x_j+1)} \Big/ \frac{P(y=1\mid x_j)}{P(y=0\mid x_j)} = e^{\beta_j}.</math> Меньшие коэффициенты (близкие к нулю) указывают на слабое влияние признака.
- Многоклассовая логистическая регрессия
Логистическая регрессия обобщается на задачи с более чем двумя классами. При \(K\) классах обычно используют **многономиальную (Softmax-)регрессию**, задавая матрицу коэффициентов \(W\in\mathbb{R}^{K\times n}\). Тогда предсказанная вероятность принадлежности к классу \(k\) описывается функцией Softmax: <math>P(y=k \mid x) = \frac{\exp(\beta_{0,k} + \beta_k^T x)}{\sum_{\ell=1}^K \exp(\beta_{0,\ell} + \beta_\ell^T x)},\quad k=1,\dots,K,\</math> где \(\beta_k\) — вектор коэффициентов для класса \(k\), \(\beta_{0,k}\) — его свободный член. Такая модель также оптимизируется через максимизацию правдоподобия (суммируя потери по классам). Она часто реализуется как «один против всех» (один классификатор на каждый класс) или сразу с \(K\) классами, но по сути эквивалентна одной многоклассовой модели.
- Регуляризация
Наиболее распространёнными регуляризаторами в логистической регрессии являются \(\ell_2\)-регуляризация (Ридж) и \(\ell_1\)-регуляризация (Lasso), а также их комбинация ElasticNet. Они добавляют штраф за крупные значения коэффициентов к целевой функции, что помогает уменьшить переобучение и повысить числовую устойчивость. В scikit-learn по умолчанию применяется \(\ell_2\)-регуляризация (каноническая «норма-2»). Регуляризация эквивалентна добавлению априорного распределения на параметры в байесовском представлении.
- Пример кода на Python
Ниже приведён пример обучения логистической регрессии с помощью библиотеки scikit-learn:
```python from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split
- X, y — данные (матрица признаков и вектор меток 0/1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
model = LogisticRegression(penalty='l2', C=1.0) # L2-регуляризация по умолчанию model.fit(X_train, y_train) # обучение модели y_pred = model.predict(X_test) # предсказание классов proba = model.predict_proba(X_test)[:, 1] # предсказанные вероятности класса 1 ```
В этом примере мы создаём экземпляр `LogisticRegression` и обучаем его на тренировочной выборке. Полученные `proba` — это апостериорные вероятности класса 1 для тестовой выборки. Метка класса предсказывается по порогу 0.5 (или другому, заданному параметром `threshold`).
- Применение
Логистическая регрессия применяется во множестве прикладных задач как простой и хорошо интерпретируемый классификатор. **Примеры применения:** диагностика заболеваний (оценка вероятности наличия болезни по медицинским показателям), кредитный скоринг (вероятность дефолта по финансовым данным заемщика), анализ тональности текстов (положительная/отрицательная), прогноз оттока клиентов, маркетинговые исследования, экономические прогнозы и др. Благодаря тому, что модель выдаёт вероятности, её результаты удобно использовать для оценки рисков и принятия решений.
- Литература
— Hastie T., Tibshirani R., Friedman J. *The Elements of Statistical Learning*. Springer, 2009 (гл. 4). — James G., Witten D., Hastie T., Tibshirani R. *An Introduction to Statistical Learning*. Springer, 2013 (гл. 4). — Bishop C. *Pattern Recognition and Machine Learning*. Springer, 2006 (гл. 4). — Hosmer D.W., Lemeshow S., Sturdivant R.X. *Applied Logistic Regression*. Wiley, 2013. — J. Zhanibekov, «Лекция 4. Логистическая регрессия», Учебные материалы (2021). — Scikit-learn documentation: *Linear Models* (раздел «Логистическая регрессия»). — Wikipedia: «Logistic regression» (по состоянию на 2025 г.).

