Dane binarne i regresja logistyczna

Uogólnione modele liniowe w Pythonie

Ita Cirovic Donev

Data Science Consultant

Dane z odpowiedzią binarną

  • Odpowiedź dwuklasowa $\rightarrow \large{\texttt{\color{#079EA1}{0},\color{#ED715F}{1}}}$

Przykłady:

  • Ocena kredytowa $\rightarrow \texttt{\color{#ED715F}{"Default"}/\color{#079EA1}{"Non-Default"}}$
  • Zdany egzamin $\rightarrow \texttt{\color{#079EA1}{"Pass"}/\color{#ED715F}{"Fail"}}$
  • Wykrywanie oszustw $\rightarrow \texttt{\color{#ED715F}{"Fraud"}/\color{#079EA1}{"No-Fraud"}}$
  • Wybór produktu $\rightarrow \texttt{\color{#2485F2}{"Product ABC"}/\color{#F2AC30}{"Product XYZ"}}$
Uogólnione modele liniowe w Pythonie

Dane binarne

NIEZGRUPOWANE

  • Pojedyncze zdarzenie
  • Rzut jedną monetą
  • Dwa możliwe wyniki: 0/1
  • $Bernoulli(p)$ lub
  • $Binomial(n=1,p)$

ZGRUPOWANE

  • Wiele zdarzeń
  • Rzut wieloma monetami
  • Liczba sukcesów w danej liczbie $n$ prób
  • $Binomial(n,p)$
Uogólnione modele liniowe w Pythonie

Funkcja logistyczna

Wykres punktowy godzin nauki i wyniku testu (zdany/oblany, 0/1)

Uogólnione modele liniowe w Pythonie

Funkcja logistyczna

Wykres punktowy godzin nauki i wyniku testu (zdany/oblany, 0/1)

  • Wynik testu: $PASS=1$ lub $FAIL=0$

  • Chcemy modelować

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

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

Uogólnione modele liniowe w Pythonie

Funkcja logistyczna

Dopasowanie logistyczne do danych dotyczących godzin nauki i wyniku testu (zdany/oblany, 0/1)

  • Wynik testu: $PASS=1$ lub $FAIL=0$

  • Chcemy modelować

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

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

  • Użyj funkcji logistycznej

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

Uogólnione modele liniowe w Pythonie

Iloraz szans

       

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

       

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

Uogólnione modele liniowe w Pythonie

Przykład szans

  • 4 mecze 3 wygrane i 1 przegrana jako sekwencja

  • Szanse wynoszą 3 do 1 Wizualne obliczenie szans: 3 pola wygranej w liczniku i 1 pole przegranej w mianowniku.

Uogólnione modele liniowe w Pythonie

Szanse i prawdopodobieństwa

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

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

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

Uogólnione modele liniowe w Pythonie

Od modelu prawdopodobieństwa do regresji logistycznej

 

Krok 1. Model prawdopodobieństwa

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

 

Krok 2. Funkcja logistyczna

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

 

Krok 3. Zastosowanie funkcji logistycznej $\rightarrow$ ODWROTNOŚĆ LOGITU

$\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)}}$

Uogólnione modele liniowe w Pythonie

Od modelu prawdopodobieństwa do regresji logistycznej

 

  • Prawdopodobieństwo $\rightarrow$ szanse $$ ODDS=\frac{\mu}{1-\mu} = exp{(\beta_0+\beta_1x_1)} $$  
  • Transformacja logarytmiczna $\rightarrow \color{#CF5383}{\text{REGRESJA LOGISTYCZNA}}$

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

Uogólnione modele liniowe w Pythonie

Regresja logistyczna w Pythonie

Funkcja - glm()

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

Dane wejściowe

y = [0,1,1,0,...]
y = ['No','Yes','Yes',...]
y = ['Fail','Pass','Pass',...]
Uogólnione modele liniowe w Pythonie

Czas na ćwiczenia!

Uogólnione modele liniowe w Pythonie

Preparing Video For Download...