Pourquoi la régression logistique est-elle nécessaire ?

Introduction à la régression avec statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

Ensemble de données sur l’attrition bancaire

as_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
... ... ...
réponse durée de la relation récence de l’activité
1 https://www.rdocumentation.org/packages/bayesQR/topics/Churn
Introduction à la régression avec statsmodels en Python

Attrition et récence : un 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

Visualisation du 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()

Un diagramme en nuage de points indiquant si le client a quitté l'entreprise ou non en fonction du temps écoulé depuis son dernier achat. Tous les points se trouvent sur la droite y = 0 ou y = 1. Une courbe de tendance linéaire indique que la probabilité d’attrition augmente à mesure que le temps écoulé depuis le dernier achat s'allonge.

Introduction à la régression avec statsmodels en Python

Zoom arrière

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 diagramme en nuage de points représentant l’attrition de clientèle par rapport au temps écoulé depuis le dernier achat. Les axes sont agrandis par rapport à la dernière fois, ce qui montre que la courbe de tendance s'étend en dessous de y = 0 et au-dessus de y = 1, ce qui devrait être 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é.
  • Utilisé lorsque la variable de réponse est logique.
  • Les réponses suivent une courbe logistique (en forme de S).
Introduction à la régression avec statsmodels en Python

Régression logistique à l'aide de la fonction 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

Visualisation du 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()

Un diagramme en nuage de points indiquant si le client a quitté l'entreprise ou non en fonction du temps écoulé depuis son dernier achat. Les courbes de tendance linéaires et logistiques sont représentées, et toutes deux indiquent une augmentation des probabilités d’attrition à mesure que le temps écoulé depuis le dernier achat augmente. Les deux courbes de tendance suivent une évolution similaire, sauf pour la période écoulée depuis le dernier achat.

Introduction à la régression avec statsmodels en Python

Zoom arrière

Le diagramme en nuage de points indiquant si le client est parti ou non en fonction du temps écoulé depuis son dernier achat, avec les deux courbes de tendance. Les axes sont réduits par rapport à la dernière fois, ce qui montre que la courbe de tendance logistique ne dépasse jamais la fourchette d’attrition comprise entre zéro et un.

Introduction à la régression avec statsmodels en Python

Passons à la pratique !

Introduction à la régression avec statsmodels en Python

Preparing Video For Download...