Olasılıkları tahmin etmek için lojistik regresyon

R'de Supervised Learning: Regresyon

Nina Zumel and John Mount

Win-Vector LLC

Olasılıkları Tahmin Etme

  • Bir olayın olup olmadığını tahmin etmek (evet/hayır): sınıflandırma
  • Bir olayın olma olasılığını tahmin etmek: regresyon
  • Doğrusal regresyon: [$-\infty$, $\infty$] aralığında değerler tahmin eder
  • Olasılıklar: [0,1] aralığına sınırlı
    • Bu yüzden doğrusal değildir diyeceğiz
R'de Supervised Learning: Regresyon

Örnek: Duchenne Musküler Distrofi (DMD) Tahmini

  • çıktı: has_dmd    girdiler: CK, H
R'de Supervised Learning: Regresyon

Doğrusal Regresyon Modeli

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

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

çıktı: has_dmd $\in$ {0,1}

  • 0: FALSE
  • 1: TRUE

Model [0:1] aralığı dışında değerler tahmin ediyor

R'de Supervised Learning: Regresyon

Lojistik Regresyon

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

glm(formula, data, family = binomial)
  • Genelleştirilmiş doğrusal model
  • Girdiler toplamsal; log-olasılık oranında doğrusal varsayılır: $log( p/(1-p) )$
  • family: modelin hata dağılımını tanımlar
    • lojistik regresyon: family = binomial
R'de Supervised Learning: Regresyon

DMD modeli

model <- glm(has_dmd ~ CK + H, data = train, family = binomial)
  • çıktı: iki sınıf, ör. $a$ ve $b$
  • model $Prob(b)$ döndürür
    • Öneri: 0/1 veya FALSE/TRUE
R'de Supervised Learning: Regresyon

Lojistik Regresyon Modellerini Yorumlama

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
R'de Supervised Learning: Regresyon

glm() modeliyle tahmin

predict(model, newdata, type = "response")
  • newdata: varsayılan olarak eğitim verisi
  • Olasılık almak için: type = "response" kullan
    • Varsayılan: log-olasılık oranı döndürür
R'de Supervised Learning: Regresyon

DMD Modeli

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

R'de Supervised Learning: Regresyon

Lojistik regresyonu değerlendirme: yalancı-$R^2$

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

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

  • Sapma (deviance): varyansa (RSS) benzer
  • Null sapma: $SS_{Tot}$'a benzer
  • pseudo R^2: Açıklanan sapma
R'de Supervised Learning: Regresyon

Eğitim verisinde yalancı-$R^2$

broom::glance() kullanarak

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

sigr::wrapChiSqTest() kullanarak

wrapChiSqTest(model)
"... pseudo-R2=0.59 ..."
R'de Supervised Learning: Regresyon

Test verisinde yalancı-$R^2$

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

Bağımsız değişkenler:

  • veri çerçevesi
  • tahmin sütun adı
  • çıktı sütun adı
  • hedef değer (hedef olay)
R'de Supervised Learning: Regresyon

Kazanç Eğrisi Grafiği

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

R'de Supervised Learning: Regresyon

Hadi pratik yapalım!

R'de Supervised Learning: Regresyon

Preparing Video For Download...