Wyjście poza regresję liniową

Uogólnione modele liniowe w Pythonie

Ita Cirovic Donev

Data Science Consultant

Cele kursu

  • Elementy składowe GLM
  • Trenowanie GLM
  • Interpretacja wyników modelu
  • Ocena wydajności modelu
  • Obliczanie prognoz
  • Rozdział 1: GLM jako rozszerzenie modeli liniowych
  • Rozdział 2: Regresja dwumianowa (logistyczna)
  • Rozdział 3: Regresja Poissona
  • Rozdział 4: Wielowymiarowa regresja logistyczna
Uogólnione modele liniowe w Pythonie

Przegląd modeli liniowych

Wykres rozproszenia lat doświadczenia i wynagrodzenia.

$\color{#00A388}{\text{wynagrodzenie}} \sim \color{#FF6138}{\text{doświadczenie}}$

$\normalsize{\color{#00A388}{\text{wynagrodzenie}} = \beta_0 + \beta_1\times\color{#FF6138}{\text{doświadczenie}} + \epsilon}$

$\normalsize{\color{#00A388}y = \beta_0 + \beta_1x_1 + \epsilon}$

Uogólnione modele liniowe w Pythonie

Przegląd modeli liniowych

Wykres rozproszenia lat doświadczenia i wynagrodzenia.

$\color{#00A388}{\text{wynagrodzenie}} \sim \color{#FF6138}{\text{doświadczenie}}$

$\color{#00A388}{\text{wynagrodzenie}} = \beta_0 + \beta_1\times{\text{doświadczenie}} + \epsilon$

$\color{#00A388}y = \beta_0 + \beta_1x_1 + \epsilon$

gdzie:
$\color{#00A388}y$ - zmienna odpowiedzi (wyjście)

Uogólnione modele liniowe w Pythonie

Przegląd modeli liniowych

Wykres rozproszenia lat doświadczenia i wynagrodzenia.

$\color{#00A388}{\text{wynagrodzenie}} \sim \color{#FF6138}{\text{doświadczenie}}$

$\normalsize{\color{#00A388}{\text{wynagrodzenie}} = \beta_0 + \beta_1\times\color{#FF6138}{\text{doświadczenie}} + \epsilon}$

$\normalsize{\color{#00A388}y = \beta_0 + \beta_1\color{#FF6138}{x_1} + \epsilon}$

gdzie:
$y$ - zmienna odpowiedzi (wyjście)
$\color{#FF6138}x$ - zmienna objaśniająca (wejście)

Uogólnione modele liniowe w Pythonie

Przegląd modeli liniowych

Wykres rozproszenia lat doświadczenia i wynagrodzenia.

$\color{#00A388}{\text{wynagrodzenie}} \sim \color{#FF6138}{\text{doświadczenie}}$

$\normalsize{\color{#00A388}{\text{wynagrodzenie}} = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\times\color{#FF6138}{\text{doświadczenie}} + \epsilon}$

$\normalsize{\color{#00A388}y = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\color{#FF6138}{x_1} + \epsilon}$

gdzie:
$y$ - zmienna odpowiedzi (wyjście)
$x$ - zmienna objaśniająca (wejście)
$\color{#007AFF}{\beta}$ - parametry modelu
$\color{#007AFF}{\beta_0}$ - wyraz wolny
$\color{#007AFF}{\beta_1}$ - nachylenie

Uogólnione modele liniowe w Pythonie

Przegląd modeli liniowych

Wykres rozproszenia lat doświadczenia i wynagrodzenia.

$\color{#00A388}{\text{wynagrodzenie}} \sim \color{#FF6138}{\text{doświadczenie}}$

$\normalsize{\color{#00A388}{\text{wynagrodzenie}} = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\times\color{#FF6138}{\text{doświadczenie}} + \color{#B12BFF}\epsilon}$

$\normalsize{\color{#00A388}y = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\color{#FF6138}{x_1} + \color{#B12BFF}\epsilon}$

gdzie:
$y$ - zmienna odpowiedzi (wyjście)
$x$ - zmienna objaśniająca (wejście)
$\color{#007AFF}{\beta}$ - parametry modelu
$\color{#007AFF}{\beta_0}$ - wyraz wolny
$\color{#007AFF}{\beta_1}$ - nachylenie
$\color{#B12BFF}{\epsilon}$ - błąd losowy

Uogólnione modele liniowe w Pythonie

MODEL LINIOWY - ols()

from statsmodels.formula.api import ols
model = ols(formula = 'y ~ X', 
            data = my_data).fit()

UOGÓLNIONY MODEL LINIOWY - glm()

import statsmodels.api as sm
from statsmodels.formula.api import glm
model = glm(formula = 'y ~ X', 
            data = my_data,
            family = sm.families.____).fit()
Uogólnione modele liniowe w Pythonie

Założenia modeli liniowych

Dopasowanie liniowe do danych lat doświadczenia i wynagrodzenia.

$$ \normalsize{{\text{wynagrodzenie} = \color{blue}{25790} + \color{blue}{9449}\times\text{doświadczenie}}} $$

Funkcja regresji

$\normalsize{E[y] = \mu = \beta_0 + \beta_1x_1}$

Założenia

  • Liniowość parametrów
  • Błędy niezależne i o rozkładzie normalnym
  • Stała wariancja
Uogólnione modele liniowe w Pythonie

Co jeśli... ?

  • Odpowiedź jest binarna lub zliczeniowa $\rightarrow \color{red}{\text{NIE ciągła}}$

Wykres gęstości dla zmiennej ciągłej, binarnej i Poissona.

  • Wariancja $y$ nie jest stała $\rightarrow \color{red}{\text{zależy od średniej}}$
Uogólnione modele liniowe w Pythonie

Zbiór danych – gniazdowanie podkowiastek

Nazwa zmiennej Opis
sat Liczba satelitów przebywających w gnieździe
y Czy w gnieździe przebywa co najmniej jeden satelita; 0/1
weight Masa samicy kraba w kg
width Szerokość pancerza samicy kraba w cm
color 1 - jasnośredni, 2 - średni, 3 - ciemnośredni, 4 - ciemny
spine 1 - oba sprawne, 2 - jeden zużyty lub złamany, 3 - oba zużyte lub złamane
1 A. Agresti, An Introduction to Categorical Data Analysis, 2007.
Uogólnione modele liniowe w Pythonie

Model liniowy a odpowiedź binarna

 

$\text{krab satelita} \sim \text{masa samicy kraba}$

y ~ weight

$P(\text{krab satelita jest obecny})=P(y=1)$

Uogólnione modele liniowe w Pythonie

Model liniowy a odpowiedź binarna

Wykres rozproszenia masy samicy kraba i odpowiedzi (co najmniej jeden satelita w pobliżu).

Uogólnione modele liniowe w Pythonie

Model liniowy a odpowiedź binarna

Dopasowanie liniowe do danych masy samicy kraba i odpowiedzi (co najmniej jeden satelita w pobliżu).

Uogólnione modele liniowe w Pythonie

Model liniowy a odpowiedź binarna

Odczyt wartości prawdopodobieństwa dla dopasowania liniowego masy samicy kraba i odpowiedzi (co najmniej jeden satelita w pobliżu).

Uogólnione modele liniowe w Pythonie

Model liniowy a dane binarne

Dodanie dopasowania GLM (dwumianowego) do dopasowania liniowego dla masy samicy kraba i odpowiedzi (co najmniej jeden satelita w pobliżu).

Uogólnione modele liniowe w Pythonie

Model liniowy a dane binarne

Odczyt wartości prawdopodobieństwa dla dopasowania GLM (dwumianowego) masy samicy kraba i odpowiedzi (co najmniej jeden satelita w pobliżu).

Uogólnione modele liniowe w Pythonie

Od prawdopodobieństw do klas

Podział wyników modelu według zadanego progu prawdopodobieństwa.

Uogólnione modele liniowe w Pythonie

Czas na ćwiczenia!

Uogólnione modele liniowe w Pythonie

Preparing Video For Download...