Бинарные данные и логистическая регрессия

Обобщённые линейные модели в Python

Ita Cirovic Donev

Data Science Consultant

Бинарные данные отклика

  • Двухклассовый отклик $\rightarrow \large{\texttt{\color{#079EA1}{0},\color{#ED715F}{1}}}$

Примеры:

  • Кредитный скоринг $\rightarrow \texttt{\color{#ED715F}{"Default"}/\color{#079EA1}{"Non-Default"}}$
  • Сдача теста $\rightarrow \texttt{\color{#079EA1}{"Pass"}/\color{#ED715F}{"Fail"}}$
  • Выявление мошенничества $\rightarrow \texttt{\color{#ED715F}{"Fraud"}/\color{#079EA1}{"No-Fraud"}}$
  • Выбор продукта $\rightarrow \texttt{\color{#2485F2}{"Product ABC"}/\color{#F2AC30}{"Product XYZ"}}$
Обобщённые линейные модели в Python

Бинарные данные

НЕСГРУППИРОВАННЫЕ

  • Одиночное событие
  • Один бросок монеты
  • Два возможных исхода: 0/1
  • $Bernoulli(p)$ или
  • $Binomial(n=1,p)$

СГРУППИРОВАННЫЕ

  • Несколько событий
  • Несколько бросков монеты
  • Число успехов в $n$ испытаниях
  • $Binomial(n,p)$
Обобщённые линейные модели в Python

Логистическая функция

Диаграмма рассеяния: часы учёбы и результат теста — сдал или не сдал (0/1)

Обобщённые линейные модели в Python

Логистическая функция

Диаграмма рассеяния: часы учёбы и результат теста — сдал или не сдал (0/1)

  • Результат теста: $PASS=1$ или $FAIL=0$

  • Цель — построить модель

$P(y=1)=\beta_0 + \beta_1x_1$

$P(\text{Pass})=\beta_0 + \beta_1 \times \text{Hours of study}$

Обобщённые линейные модели в Python

Логистическая функция

Логистическая аппроксимация данных: часы учёбы и результат теста — сдал или не сдал (0/1)

  • Результат теста: $PASS=1$ или $FAIL=0$

  • Цель — построить модель

$P(y=1)=\beta_0 + \beta_1x_1$

$P(\text{Pass})=\beta_0 + \beta_1 \times \text{Hours of study}$

  • Применяем логистическую функцию

$f(z) = \frac{1}{(1+\exp(-z))}$

Обобщённые линейные модели в Python

Шансы и отношение шансов

       

$$ ODDS = \frac{\text{event occuring}}{\text{event NOT occuring}} $$

       

$$ \text{ODDS RATIO} = \frac{odds 1}{odds 2} $$

Обобщённые линейные модели в Python

Пример: шансы

  • 4 игры 3 победы и 1 поражение в виде последовательности

  • Шансы 3 к 1 Наглядное вычисление шансов: 3 блока побед в числителе и 1 блок поражения в знаменателе.

Обобщённые линейные модели в Python

Шансы и вероятности

  $$ \text{odds} \neq \text{probability} $$

  $$ \text{odds} = \frac{\text{probability}}{1-\text{probability}} $$

  $$ \text{probability} = \frac{\text{odds}}{1+\text{odds}} $$

Обобщённые линейные модели в Python

От вероятностной модели к логистической регрессии

 

Шаг 1. Вероятностная модель

$E(y)=\mu=P(y=1)=\beta_0 + \beta_1x_1$

 

Шаг 2. Логистическая функция

$f(z) = \large{\frac{1}{(1+\exp(-z))}}$

 

Шаг 3. Применение логистической функции $\rightarrow$ ОБРАТНЫЙ ЛОГИТ

$\mu = \large{\frac{1}{1+\exp(-(\beta_0+\beta_1x_1))}} = \large{\frac{\exp(\beta_0+\beta_1x_1)}{1+\exp(\beta_0+\beta_1x_1)}}$

$1-\mu = \large{\frac{1}{1+\exp(\beta_0+\beta_1x_1)}}$

Обобщённые линейные модели в Python

От вероятностной модели к логистической регрессии

 

  • Вероятность $\rightarrow$ шансы $$ ODDS=\frac{\mu}{1-\mu} = exp{(\beta_0+\beta_1x_1)} $$  
  • Логарифмическое преобразование $\rightarrow \color{#CF5383}{\text{LOGISTIC REGRESSION}}$

  $$ LOGIT(\mu)=log(\frac{\mu}{1-\mu}) = \beta_0+\beta_1x_1 $$

Обобщённые линейные модели в Python

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

Функция — glm()

model_GLM = glm(formula = 'y ~ x',                        
                data = my_data, 
                family = sm.families.Binomial()).fit

Входные данные

y = [0,1,1,0,...]
y = ['No','Yes','Yes',...]
y = ['Fail','Pass','Pass',...]
Обобщённые линейные модели в Python

Давайте потренируемся!

Обобщённые линейные модели в Python

Preparing Video For Download...