Varför du behöver logistisk regression

Introduktion till regression med statsmodels i Python

Maarten Van den Broeck

Content Developer at DataCamp

Datamängd om bankkunders churn

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
... ... ...
svarsvariabel relationslängd senaste aktivitet
1 https://www.rdocumentation.org/packages/bayesQR/topics/Churn
Introduktion till regression med statsmodels i Python

Churn vs. recency: en linjär modell

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
Introduktion till regression med statsmodels i Python

Visualisera den linjära modellen

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

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

Ett spridningsdiagram över om kunden churnade eller inte, i förhållande till tid sedan senaste köp. Alla punkter ligger på linjen y = 0 eller y = 1. En linjär trendlinje visar att sannolikheten att churna ökar med tid sedan senaste köp.

Introduktion till regression med statsmodels i Python

Zoomar ut

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

Spridningsdiagrammet över om kunden churnade eller inte, i förhållande till tid sedan senaste köp. Axlarna är utzoomade jämfört med förra gången, vilket visar att trendlinjen sträcker sig under y = 0 och över y = 1 – vilket inte bör vara möjligt.

Introduktion till regression med statsmodels i Python

Vad är logistisk regression?

  • En annan typ av generaliserad linjär modell.
  • Används när svarsvariabeln är logisk.
  • Svaren följer en logistisk (S-formad) kurva.
Introduktion till regression med statsmodels i Python

Logistisk regression med 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
Introduktion till regression med statsmodels i Python

Visualisera den logistiska modellen

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

Ett spridningsdiagram över om kunden churnade eller inte, i förhållande till tid sedan senaste köp. Linjära och logistiska trendlinjer visas, och båda visar ökande churn-sannolikheter med tid sedan senaste köp. De två trendlinjerna följer varandra nära, utom vid högt värde på tid sedan senaste köp.

Introduktion till regression med statsmodels i Python

Zoomar ut

Spridningsdiagrammet över om kunden churnade eller inte, i förhållande till tid sedan senaste köp, med båda trendlinjerna. Axlarna är utzoomade jämfört med förra gången, vilket visar att den logistiska trendlinjen aldrig hamnar utanför churn-intervallet noll till ett.

Introduktion till regression med statsmodels i Python

Nu kör vi en övning!

Introduktion till regression med statsmodels i Python

Preparing Video For Download...