Waarom je logistische regressie nodig hebt

Introductie tot regressie met statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

Bankchurn-dataset

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 duur van relatie recentheid van activiteit
1 https://www.rdocumentation.org/packages/bayesQR/topics/Churn
Introductie tot regressie met statsmodels in Python

Opzeggen vs. recentheid: een lineair model

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
Introductie tot regressie met statsmodels in Python

Het lineaire model visualiseren

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

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

Een spreidingsdiagram van wel/niet opzeggen versus tijd sinds laatste aankoop. Alle punten liggen op y = 0 of y = 1. Een lineaire trendlijn laat zien dat de opzegkans stijgt naarmate de tijd sinds laatste aankoop toeneemt.

Introductie tot regressie met statsmodels in Python

Uitzoomen

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

Het spreidingsdiagram van wel/niet opzeggen versus tijd sinds laatste aankoop. De assen zijn uitgezoomd, en de trendlijn gaat onder y = 0 en boven y = 1, wat onmogelijk zou moeten zijn.

Introductie tot regressie met statsmodels in Python

Wat is logistische regressie?

  • Een ander type gegeneraliseerd lineair model.
  • Gebruikt als de responsvariabele logisch is.
  • De respons volgt een logistische (S‑vormige) curve.
Introductie tot regressie met statsmodels in Python

Logistische regressie met 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
Introductie tot regressie met statsmodels in Python

Het logistieke model visualiseren

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

Een spreidingsdiagram van wel/niet opzeggen versus tijd sinds laatste aankoop. Lineaire en logistische trendlijnen tonen stijgende opzegkans bij meer tijd sinds laatste aankoop. De lijnen liggen dicht bij elkaar, behalve bij hoge waarden voor tijd sinds laatste aankoop.

Introductie tot regressie met statsmodels in Python

Uitzoomen

Hetzelfde spreidingsdiagram met beide trendlijnen. Assen zijn uitgezoomd, waardoor je ziet dat de logistische lijn nooit buiten het bereik 0–1 voor opzeggen valt.

Introductie tot regressie met statsmodels in Python

Laten we oefenen!

Introductie tot regressie met statsmodels in Python

Preparing Video For Download...