Veri değişkenliğini çoğaltma

R'de Atamaya Dayalı Eksik Veri Doldurma

Michal Oleszak

Machine Learning Engineer

Atanan veride değişkenlik

Bir kenar grafiği: "Height" ile "Weight" saçılım grafiği; iki değişkende atanan değerler farklı renkle vurgulanmış.

  • Atanan veride değişkenlik yok.
  • Atamanın, gözlenen verinin değişkenliğini yansıtmasını isteriz.
  • Model tabanlı atamada, aynı yordayıcılar aynı atanan değeri verir.
  • Çözüm: koşullu dağılımlardan çekiliş yapmak.
R'de Atamaya Dayalı Eksik Veri Doldurma

Tahmin nedir

Çoğu istatistiksel model, yanıt değişkeninin koşullu dağılımını tahmin eder:

$p(y|X)$

Tek bir tahmin için, koşullu dağılım özetlenir:

  • Doğrusal regresyon: koşullu dağılımın beklenen değeri.
  • Lojistik regresyon: olasılığı en yüksek sınıf.

Bunun yerine, değişkenliği artırmak için bu dağılımlardan örnekleyebiliriz.

R'de Atamaya Dayalı Eksik Veri Doldurma

Koşullu dağılımlardan çekiliş

Normal dağılımın olasılık yoğunluk fonksiyonunu gösteren bir grafik. 25 ortalaması vurgulanmış.

R'de Atamaya Dayalı Eksik Veri Doldurma

Koşullu dağılımlardan çekiliş

Dört sütunlu bir tablo: lojistik regresyondan tahmin olasılığı (tüm satırlarda 0.7), bu olasılığın 0.5'ten büyük olup olmadığı (tümü TRUE), eşik tabanlı atanan değer (tümü 1) ve koşullu dağılımdan çekilerek atanan değer (çoğu 1, bazıları 0).

R'de Atamaya Dayalı Eksik Veri Doldurma

Lojistik regresyon ile atama

Görev: nhanes verilerinden PhysActive değişkenini lojistik regresyon ile atayın.

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
R'de Atamaya Dayalı Eksik Veri Doldurma

Lojistik regresyon ile atama

Görev: nhanes verilerinden PhysActive değişkenini lojistik regresyon ile atayın.

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
R'de Atamaya Dayalı Eksik Veri Doldurma

Lojistik regresyon ile atama

Görev: nhanes verilerinden PhysActive değişkenini lojistik regresyon ile atayın.

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")
R'de Atamaya Dayalı Eksik Veri Doldurma

Lojistik regresyon ile atama

Görev: nhanes verilerinden PhysActive değişkenini lojistik regresyon ile atayın.

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")
preds <- ifelse(preds >= 0.5, 1, 0)
R'de Atamaya Dayalı Eksik Veri Doldurma

Lojistik regresyon ile atama

Görev: nhanes verilerinden PhysActive değişkenini lojistik regresyon ile atayın.

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")
preds <- ifelse(preds >= 0.5, 1, 0)
nhanes_imp[missing_physactive, "PhysActive"] <- preds[missing_physactive]
R'de Atamaya Dayalı Eksik Veri Doldurma

Lojistik regresyon ile atama

Atanan verinin değişkenliği:

table(preds[missing_physactive])
 1 
26

Gözlenen PhysActive verisinin değişkenliği:

table(nhanes$PhysActive)
  0   1 
181 610
R'de Atamaya Dayalı Eksik Veri Doldurma

Sınıf olasılıklarından çekiliş

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")
preds <- ifelse(preds >= 0.5, 1, 0)
nhanes_imp[missing_physactive, "PhysActive"] <- preds[missing_physactive]
R'de Atamaya Dayalı Eksik Veri Doldurma

Sınıf olasılıklarından çekiliş

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")

nhanes_imp[missing_physactive, "PhysActive"] <- preds[missing_physactive]
R'de Atamaya Dayalı Eksik Veri Doldurma

Sınıf olasılıklarından çekiliş

nhanes_imp <- hotdeck(nhanes)
missing_physactive <- is.na(nhanes$PhysActive)
logreg_model <- glm(PhysActive ~ Age + Weight + Pulse, 
                    data = nhanes_imp, family = binomial)
preds <- predict(logreg_model, type = "response")
preds <- rbinom(length(preds), size = 1, prob = preds)
nhanes_imp[missing_physactive, "PhysActive"] <- preds[missing_physactive]
R'de Atamaya Dayalı Eksik Veri Doldurma

Sınıf olasılıklarından çekiliş

Atanan verinin değişkenliği:

table(preds[missing_physactive])
0  1 
5 21

Gözlenen PhysActive verisinin değişkenliği:

table(nhanes$PhysActive)
  0   1 
181 610
R'de Atamaya Dayalı Eksik Veri Doldurma

Veri değişkenliğini çoğaltma alıştırması yapalım!

R'de Atamaya Dayalı Eksik Veri Doldurma

Preparing Video For Download...