Varför du behöver logistisk regression

Introduktion till regression i R

Richie Cotton

Data Evangelist at DataCamp

Datamängd: bankkunders churning

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
Introduktion till regression i R

Churning vs. recency: en linjär modell

mdl_churn_vs_recency_lm <- lm(has_churned ~ time_since_last_purchase, data = churn)
Call:
lm(formula = has_churned ~ time_since_last_purchase, data = churn)

Coefficients:
             (Intercept)  time_since_last_purchase  
                 0.49078                   0.06378 
coeffs <- coefficients(mdl_churn_vs_recency_lm)
intercept <- coeffs[1]
slope <- coeffs[2]
Introduktion till regression i R

Visualisering av den linjära modellen

ggplot(
  churn, 
  aes(time_since_last_purchase, has_churned)
) +
  geom_point() +
  geom_abline(intercept = intercept, slope = slope)

Prediktioner är sannolikheter för churning, inte mängder.

Ett spridningsdiagram över huruvida 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 för churning ökar med tiden sedan senaste köp.

Introduktion till regression i R

Zoomar ut

ggplot(
  churn, 
  aes(days_since_last_purchase, has_churned)
) +
  geom_point() +
  geom_abline(intercept = intercept, slope = slope) +
  xlim(-10, 10) +
  ylim(-0.2, 1.2)

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

Introduktion till regression i R

Vad är logistisk regression?

  • En annan typ av generaliserad linjär modell.
  • Används när responsvariabeln är logisk.
  • Responsen följer en logistisk (S-formad) kurva.
Introduktion till regression i R

Linjär regression med glm()

glm(has_churned ~ time_since_last_purchase, data = churn, family = gaussian)
Call:  glm(formula = has_churned ~ time_since_last_purchase, family = gaussian, 
    data = churn)

Coefficients:
             (Intercept)  time_since_last_purchase  
                 0.49078                   0.06378  

Degrees of Freedom: 399 Total (i.e. Null);  398 Residual
Null Deviance:        100 
Residual Deviance: 98.02     AIC: 578.7
Introduktion till regression i R

Logistisk regression: glm() med binomial-familj

mdl_recency_glm <- glm(has_churned ~ time_since_last_purchase, data = churn, family = binomial)
Call:  glm(formula = has_churned ~ time_since_last_purchase, family = binomial, 
    data = churn)

Coefficients:
             (Intercept)  time_since_last_purchase  
                -0.03502                   0.26921  

Degrees of Freedom: 399 Total (i.e. Null);  398 Residual
Null Deviance:        554.5 
Residual Deviance: 546.4     AIC: 550.4
Introduktion till regression i R

Visualisering av den logistiska modellen

ggplot(
  churn, 
  aes(time_since_last_purchase, has_churned)
) +
  geom_point() +
  geom_abline(
    intercept = intercept, slope = slope
  ) +
  geom_smooth(
    method = "glm", 
    se = FALSE, 
    method.args = list(family = binomial)
  )

Ett spridningsdiagram över huruvida kunden churnade eller inte, i förhållande till tid sedan senaste köp. Linjära och logistiska trendlinjer visas, och båda indikerar ökad churningssannolikhet med längre tid sedan senaste köp. De två trendlinjerna följer varandra nära, utom vid höga värden för tid sedan senaste köp.

Introduktion till regression i R

Zoomar ut

Spridningsdiagrammet över huruvida 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 tidigare, vilket visar att den logistiska trendlinjen aldrig går utanför intervallet noll till ett.

Introduktion till regression i R

Nu kör vi en övning!

Introduktion till regression i R

Preparing Video For Download...