Aller au-delà de la régression linéaire

Modèles linéaires généralisés en Python

Ita Cirovic Donev

Data Science Consultant

Objectifs du cours

  • Voir les bases des GLM
  • Entraîner des GLM
  • Interpréter les résultats
  • Évaluer la performance
  • Calculer des prédictions
  • Chapitre 1 : en quoi les GLM prolongent-ils les modèles linéaires
  • Chapitre 2 : régression binomiale (logistique)
  • Chapitre 3 : régression de Poisson
  • Chapitre 4 : régression logistique multivariée
Modèles linéaires généralisés en Python

Rappel : modèles linéaires

Nuage de points : années d'expérience et salaire.

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\normalsize{\color{#00A388}{\text{salary}} = \beta_0 + \beta_1\times\color{#FF6138}{\text{experience}} + \epsilon}$

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

Modèles linéaires généralisés en Python

Rappel : modèles linéaires

Nuage de points : années d'expérience et salaire.

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\color{#00A388}{\text{salary}} = \beta_0 + \beta_1\times{\text{experience}} + \epsilon$

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

where:
$\color{#00A388}y$ - variable réponse (sortie)

Modèles linéaires généralisés en Python

Rappel : modèles linéaires

Nuage de points : années d'expérience et salaire.

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\normalsize{\color{#00A388}{\text{salary}} = \beta_0 + \beta_1\times\color{#FF6138}{\text{experience}} + \epsilon}$

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

where:
$y$ - variable réponse (sortie)
$\color{#FF6138}x$ - variable explicative (entrée)

Modèles linéaires généralisés en Python

Rappel : modèles linéaires

Nuage de points : années d'expérience et salaire.

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\normalsize{\color{#00A388}{\text{salary}} = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\times\color{#FF6138}{\text{experience}} + \epsilon}$

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

where:
$y$ - variable réponse (sortie)
$x$ - variable explicative (entrée)
$\color{#007AFF}{\beta}$ - paramètres du modèle
$\color{#007AFF}{\beta_0}$ - ordonnée à l'origine
$\color{#007AFF}{\beta_1}$ - pente

Modèles linéaires généralisés en Python

Rappel : modèles linéaires

Nuage de points : années d'expérience et salaire.

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\normalsize{\color{#00A388}{\text{salary}} = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\times\color{#FF6138}{\text{experience}} + \color{#B12BFF}\epsilon}$

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

where:
$y$ - variable réponse (sortie)
$x$ - variable explicative (entrée)
$\color{#007AFF}{\beta}$ - paramètres du modèle
$\color{#007AFF}{\beta_0}$ - ordonnée à l'origine
$\color{#007AFF}{\beta_1}$ - pente
$\color{#B12BFF}{\epsilon}$ - erreur aléatoire

Modèles linéaires généralisés en Python

MODÈLE LINÉAIRE - ols()

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

MODÈLE LINÉAIRE GÉNÉRALISÉ - glm()

import statsmodels.api as sm
from statsmodels.formula.api import glm
model = glm(formula = 'y ~ X', 
            data = my_data,
            family = sm.families.____).fit()
Modèles linéaires généralisés en Python

Hypothèses des modèles linéaires

Ajustement linéaire aux données : années d'expérience et salaire.

$$ \normalsize{{\text{salary} = \color{blue}{25790} + \color{blue}{9449}\times\text{experience}}} $$

Fonction de régression

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

Hypothèses

  • Linéaire dans les paramètres
  • Erreurs indépendantes et normalement distribuées
  • Variance constante
Modèles linéaires généralisés en Python

Et si… ?

  • La réponse est binaire ou un compte $\rightarrow \color{red}{\text{PAS continue}}$

Diagramme de distribution : continue, binaire et variable de Poisson.

  • La variance de $y$ n'est pas constante $\rightarrow \color{red}{\text{dépend de la moyenne}}$
Modèles linéaires généralisés en Python

Ensemble de données – nidification des limules

Nom de variable Description
sat Nombre de satellites dans le nid
y Présence d'au moins un satellite dans le nid ; 0/1
weight Poids du crabe femelle en kg
width Largeur du crabe femelle en cm
color 1 - moyen pâle, 2 - moyen, 3 - moyen foncé, 4 - foncé
spine 1 - les deux en bon état, 2 - un usé ou brisé, 3 - les deux usés ou brisés
1 A. Agresti, An Introduction to Categorical Data Analysis, 2007.
Modèles linéaires généralisés en Python

Modèle linéaire et réponse binaire

 

$\text{satellite crab} \sim \text{female crab weight}$

y ~ weight

$P(\text{satellite crab is present})=P(y=1)$

Modèles linéaires généralisés en Python

Modèle linéaire et réponse binaire

Nuage de points : poids du crabe femelle et réponse (au moins un satellite à proximité).

Modèles linéaires généralisés en Python

Modèle linéaire et réponse binaire

Ajustement linéaire : poids du crabe femelle et réponse (au moins un satellite à proximité).

Modèles linéaires généralisés en Python

Modèle linéaire et réponse binaire

Lecture de la probabilité pour l'ajustement linéaire : poids du crabe femelle et réponse (au moins un satellite à proximité).

Modèles linéaires généralisés en Python

Modèle linéaire et données binaires

Ajout de l'ajustement GLM (binomial) à l'ajustement linéaire : poids du crabe femelle et réponse (au moins un satellite à proximité).

Modèles linéaires généralisés en Python

Modèle linéaire et données binaires

Lecture de la probabilité pour l'ajustement GLM (binomial) : poids du crabe femelle et réponse (au moins un satellite à proximité).

Modèles linéaires généralisés en Python

Des probabilités aux classes

Séparation de la sortie du modèle selon un seuil de probabilité défini.

Modèles linéaires généralisés en Python

Passons à la pratique !

Modèles linéaires généralisés en Python

Preparing Video For Download...