Makine Öğrenme Yöntemleri Kullanarak Eksik Verilere Atama Yapılması Üzerine Bir Vaka Çalışması: A Case Study on Assigning Missing Data Using Machine Learning (ML) Methods

Veri bilimcilerin ya da veri analizleriyle uğraşan akademi ve saha çalışanların karşılaştığı problemlerin başında veri setindeki değişkenlerde eksik gözlemlerle diğer bir deyişle missing data gelmektedir. Literatürde eksik veri atama yöntemleri arasında bir çok yöntem bulunmakla birlikte öne çıkan yöntemlerden bazıları şöyledir:

  1. Eksik gözlemlere ortalama değer atama
  2. Eksik gözlemlere 0 değeri atama
  3. Eksik gözlemlere median değeri atama
  4. Eksik gözlemlere PMM yöntemi ile atama
  5. Eksik gözlemlere regresyon yöntemi ile atama
  6. Eksik gözlemlere EM (Expectation-Maximization) yöntemi ile atama

Bahsedilen bu yöntemlerin dışında eksik veri atama yöntemlerinden makine öğrenme algoritmalarından ya da yöntemlerinden de yararlanabilmektedir. Bunlardan bazıları ise şöyle özetlenebilir:

  1. Karar ağaçları (decision trees) yöntemi ile eksik gözlemlere atama yapma
  2. KNN (K Nearest Neighbor) yöntemi ile eksik gözlemlere atama yapma
  3. Rastgele Orman (RF) Algoritması ile eksik gözlemlere atama

Sayılan bu yöntemleri artırmak mümkündür. Bu çalışma kapsamında eksik veri atama yöntemi olarak ele alınacak ve üzerinde uygulama yapılacak yöntemler ise karar ağaçları, KNN ve RF makine öğrenme yöntemleri olacaktır. Çalışmada örnek uygulama yapılacak veri seti sentetik olarak üretilecektir. Diğer bir deyişle hipotetik olacaktır. Şimdi sırasıyla uygulama adımlarına geçebiliriz.

Yüklenen Kütüphaneler

Aşağıda görüleceği üzere Kütüphane sayısını oldukça fazla tuttum. Bunun nedeni diğer çalışmalarda bu kütüphaneleri kullanmamdır.

library<-c("reactable","crosstalk","dplyr","tibble","tidyr","ggplot2","formattable","ggthemes","readr","readxl","ggpubr","formattable", "ggstance", "stringr","explore", "lubridate","leaflet", "tidytext", "scales", "data.table", "CCA", "pastecs", "gtools", "rmarkdown", "knitr", "gtsummary", "writexl", "ppcor", "reshape2", "GGally", "CCP", "Hmisc", "VIM", "philentropy", "haven","mice")
loading<-sapply(library, require, character.only = TRUE)
as.vector(loading)

Tesadüfi sentetik (hipotetik) veri üretme

Bu kısımda 4 değişkenli bir veri seti basit tekrarlı örneklem yöntemi kullanılarak üretilecektir.

atama=c(1:10000, rep(NA, 10000))
set.seed(61)#aynı sonuçları almak için
v1=sample(atama, 1000, replace=TRUE)
v2=sample(atama, 1000, replace=TRUE)
v3=sample(atama, 1000, replace=TRUE)
v4=sample(atama, 1000, replace=TRUE)
veri<-cbind(v1, v2,v3,v4) %>% as_tibble()


formattable(head(veri, 10))#ilk 10 gözlem

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen ilk 10 gözlem aşağıda verilmiştir.

Eksik verileri görselleştirme

Burada veri setinde değişkene göre eksik veri olan gözlem sayısı ile ilgili değişkendeki gözlem sayıları içindeki oranı verilmiştir.

explore_all(veri)

Yukarıdaki R kod bloğunun çalıştırılmasından sonra eksik veri olan gözlem sayısı ile ilgili değişkendeki gözlem sayıları içindeki oranı aşağıda verilmiştir.

Karar ağaçları ile eksik veri atama

dt<-mice(veri, method = "cart")
formattable(head(mice::complete(dt,1),10))# Atama sonrası ilk 10 gözlem

Yukarıdaki R kod bloğunun çalıştırılmasından sonra karar ağaçları yöntemiyle yapılan atamaları gösteren ilk 10 gözlem mevcut gözlem değerleriyle birlikte aşağıda verilmiştir.

KNN (K Nearest Neighbor) Algoritması İle Eksik Veri Ataması Yapılması

KNN algortiması hem sınıflandırma hem de regresyon problemlerinin çözümünde kullanılabilmektedir. Buradan bakıldığında hem kategorik hem de sürekli ve kesikli nitelikte olan değişkenlerde eksik veri gözlemlerinin atanmasında alternatif non-parametrik denetimli (supervised) yöntemlerden birisidir.

eksikknn <- kNN(veri)
eksikknn[,1:4] %>% head(10) %>% formattable() #ilk 10 gözlem

Yukarıdaki R kod bloğunun çalıştırılmasından sonra KNN algoritmasıyla yapılan atamaları gösteren ilk 10 gözlem mevcut gözlem değerleriyle birlikte aşağıda verilmiştir.

Rastgele Orman (RF) Algoritması Kullanılarak Eksik Veri Ataması Yapılması

rfdf <- mice(veri, meth = "rf", ntree = 50, seed = 61)#ntree yetiştirilecek ağaç sayısını göstermektedir.

formattable(head(mice::complete(rfdf,1),10))# Atama sonrası ilk 10 gözlem

Yukarıdaki R kod bloğunun çalıştırılmasından sonra rastgele orman (RF) algoritmasıyla yapılan atamaları gösteren ilk 10 gözlem mevcut gözlem değerleriyle birlikte aşağıda verilmiştir.

Yapılan bu çalışma ile özellikle veri bilimi (data science) ile ilgilenen akademi ve saha çalışanlarına bir katkı sunulması amaçlanmıştır.

Daha önce RPubs platformunda eksik veri ataması yapılması üzerine örnek uygulama yaptığım çalışmanın linkini de aşağıda paylaşıyorum ilgilenenler için.

Makine Öğrenme Yöntemleri Kullanarak Eksik Gözlemlere Atama Yapma

Faydalı olması dileğiyle.

Bilimle ve teknolojiyle kalınız.

Saygılarımla…

Yararlanılan Kaynaklar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s