Regresia logistică pentru predicția probabilităților

Învățare supervizată în R: Regresia

Nina Zumel and John Mount

Win-Vector LLC

Predicția probabilităților

  • Predicția dacă un eveniment apare (da/nu): clasificare
  • Predicția probabilității ca un eveniment să apară: regresie
  • Regresia liniară: prezice valori în [$-\infty$, $\infty$]
  • Probabilitățile: limitate la intervalul [0,1]
    • Prin urmare, o vom numi neliniară
Învățare supervizată în R: Regresia

Exemplu: Predicția distrofiei musculare Duchenne (DMD)

  • rezultat: has_dmd    intrări: CK, H
Învățare supervizată în R: Regresia

Un model de regresie liniară

model <- lm(has_dmd ~ CK + H, 
            data = train)

test$pred <- predict(
    model, 
    newdata = test
)

rezultat: has_dmd $\in$ {0,1}

  • 0: FALSE
  • 1: TRUE

Modelul prezice valori în afara intervalului [0:1]

Învățare supervizată în R: Regresia

Regresia logistică

$$ log(\frac{p}{1-p}) = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + ... $$

glm(formula, data, family = binomial)
  • Model liniar generalizat
  • Presupune intrări aditive, liniare în log-odds: $log( p/(1-p) )$
  • family: descrie distribuția erorilor modelului
    • regresie logistică: family = binomial
Învățare supervizată în R: Regresia

Modelul DMD

model <- glm(has_dmd ~ CK + H, data = train, family = binomial)
  • rezultat: două clase, e.g. $a$ și $b$
  • modelul returnează $Prob(b)$
    • Recomandat: 0/1 sau FALSE/TRUE
Învățare supervizată în R: Regresia

Interpretarea modelelor de regresie logistică

model
Call:  glm(formula = has_dmd ~ CK + H, family = binomial, data = train)

Coefficients:
(Intercept)           CK            H  
  -16.22046      0.07128      0.12552  

Degrees of Freedom: 86 Total (i.e. Null);  84 Residual
Null Deviance:       110.8 
Residual Deviance: 45.16     AIC: 51.16
Învățare supervizată în R: Regresia

Predicție cu un model glm()

predict(model, newdata, type = "response")
  • newdata: implicit, datele de antrenament
  • Pentru probabilități: utilizați type = "response"
    • Implicit: returnează log-odds
Învățare supervizată în R: Regresia

Modelul DMD

model <- glm(has_dmd ~ CK + H, data = train, family = binomial)
test$pred <- predict(model, newdata = test, type = "response")

Învățare supervizată în R: Regresia

Evaluarea regresiei logistice: pseudo-$R^2$

$$ R^2 = 1 - \frac{RSS}{SS_{Tot}} $$

$$ pseudo R^2 = 1 - \frac{deviance}{null.deviance} $$

  • Devianta: analogă cu varianța (RSS)
  • Devianta nulă: similară cu $SS_{Tot}$
  • pseudo R^2: devianta explicată
Învățare supervizată în R: Regresia

Pseudo-$R^2$ pe datele de antrenament

Folosind broom::glance()

glance(model) %>% 
  summarize(pR2 = 1 - deviance/null.deviance)
   pseudoR2
1 0.5922402

Folosind sigr::wrapChiSqTest()

wrapChiSqTest(model)
"... pseudo-R2=0.59 ..."
Învățare supervizată în R: Regresia

Pseudo-$R^2$ pe datele de test

# Test data
test %>% 
  mutate(pred = predict(model, newdata = test, type = "response")) %>%
  wrapChiSqTest("pred", "has_dmd", TRUE)

Argumente:

  • data frame
  • numele coloanei de predicție
  • numele coloanei rezultat
  • valoarea țintă (evenimentul țintă)
Învățare supervizată în R: Regresia

Graficul curbei de câștig

GainCurvePlot(test, "pred","has_dmd", "DMD model on test")

Învățare supervizată în R: Regresia

Să exersăm!

Învățare supervizată în R: Regresia

Preparing Video For Download...