Pourquoi utiliser la régression logistique

Introduction à la régression avec statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

Jeu de données d'attrition bancaire

has_churned time_since_first_purchase time_since_last_purchase
0 0.3993247 -0.5158691
1 -0.4297957 0.6780654
0 3.7383122 0.4082544
0 0.6032289 -0.6990435
... ... ...
response length of relationship recency of activity
1 https://www.rdocumentation.org/packages/bayesQR/topics/Churn
Introduction à la régression avec statsmodels en Python

Attrition vs. récence : modèle linéaire

mdl_churn_vs_recency_lm = ols("has_churned ~ time_since_last_purchase",
                              data=churn).fit()

print(mdl_churn_vs_recency_lm.params)
Intercept                   0.490780
time_since_last_purchase    0.063783
dtype: float64
intercept, slope = mdl_churn_vs_recency_lm.params
Introduction à la régression avec statsmodels en Python

Visualiser le modèle linéaire

sns.scatterplot(x="time_since_last_purchase",
                y="has_churned",
                data=churn)

plt.axline(xy1=(0, intercept), slope=slope) plt.show()

Nuage de points : attrition (oui/non) selon le temps depuis le dernier achat. Tous les points sont sur y = 0 ou y = 1. Une droite tendancielle linéaire montre une probabilité d'attrition croissante avec le temps depuis le dernier achat.

Introduction à la régression avec statsmodels en Python

Dézoomer

sns.scatterplot(x="time_since_last_purchase",
                y="has_churned",
                data=churn)

plt.axline(xy1=(0,intercept),
           slope=slope)

plt.xlim(-10, 10) plt.ylim(-0.2, 1.2)
plt.show()

Le même nuage de points (attrition vs. temps depuis le dernier achat). Les axes sont dézoomés : la droite linéaire passe sous y = 0 et au‑dessus de y = 1, ce qui est impossible.

Introduction à la régression avec statsmodels en Python

Qu'est‑ce que la régression logistique ?

  • Un autre type de modèle linéaire généralisé.
  • À utiliser quand la variable réponse est logique.
  • Les réponses suivent une courbe logistique (en « S »).
Introduction à la régression avec statsmodels en Python

Régression logistique avec logit()

from statsmodels.formula.api import logit
mdl_churn_vs_recency_logit = logit("has_churned ~ time_since_last_purchase",
                                   data=churn).fit()

print(mdl_churn_vs_recency_logit.params)
Intercept                  -0.035019
time_since_last_purchase    0.269215
dtype: float64
Introduction à la régression avec statsmodels en Python

Visualiser le modèle logistique

sns.regplot(x="time_since_last_purchase",
            y="has_churned",
            data=churn,
            ci=None,
            logistic=True)
plt.axline(xy1=(0,intercept),
           slope=slope,
           color="black")

plt.show()

Nuage de points : attrition vs. temps depuis le dernier achat. Les droites/logistiques de tendance sont tracées et montrent toutes deux une probabilité d'attrition croissante. Elles coïncident de près sauf pour de grandes valeurs du temps.

Introduction à la régression avec statsmodels en Python

Dézoomer

Le même nuage de points avec les deux courbes. En dézoomant, la courbe logistique reste toujours entre 0 et 1 pour l'attrition.

Introduction à la régression avec statsmodels en Python

Passons à la pratique !

Introduction à la régression avec statsmodels en Python

Preparing Video For Download...