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:
- Eksik gözlemlere ortalama değer atama
- Eksik gözlemlere 0 değeri atama
- Eksik gözlemlere median değeri atama
- Eksik gözlemlere PMM yöntemi ile atama
- Eksik gözlemlere regresyon yöntemi ile atama
- 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:
- Karar ağaçları (decision trees) yöntemi ile eksik gözlemlere atama yapma
- KNN (K Nearest Neighbor) yöntemi ile eksik gözlemlere atama yapma
- 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
- RStudio Cloud: https://login.rstudio.cloud/
- The R Project for Statistical Computing. https://www.r-project.org/
- Alpar, R. (2017). Uygulamalı Çok Değişkenli İstatistiksel Yöntemler. 5. Baskı. Detay Yayıncılık.
- Makine Öğrenme Yöntemleri Kullanarak Eksik Gözlemlere Atama Yapma. https://rpubs.com/tevfik1461/eksikveri