Anasayfa / Genel bir bakış / Eksik Veri – Kayıp Veride Kullanılabilecek Algoritmalar

Eksik Veri – Kayıp Veride Kullanılabilecek Algoritmalar

Utku Kubilay ÇINAR

 

 

Ne güzeldir hazır verilerle çalışmak. Eksik gözlem derdin yok, ilişkisel veri tabanlarından verilerini birleştirme çaban yok, gürültülü veri desen ona ne hacet. En sevdiğimiz veri, hazır – işlem gerektirmeyen ve direk analizlerimize başlayacağımız veri setleri olsa da hayatın acımasız gerçekleri var. Böyle verileri gerçek hayatta görmek çok güç.

Veri bilimi ile ilgili çalışan kişiler tidydata yani veriyi hazır hale getirme işlemleriyle uzun zaman geçirirler. Aykırı gözlemler, eksik gözlemler, tabloları birleştirme, yüksek korelasyonlu parametreler ve saymadığım niceleri..

Veri manipülasyonu işlemlerinde istatistik teorilerini bilmenin avantajları yatsınamaz bir gerçektir. Eksik veriyi, yansız tamamlamak ciddi bir bilgi birikimi gerektirir ama cankurtaran görevi gören istatistik bilimi sayesinde işimiz kolaylaşmaktadır. İstatistik teorileriyle geliştirilen birçok algoritma sayesinde bu büyük sorun büyük ölçüde araştırmacının işini kolaylaştırmaktadır. Eksik veriyi doldurmak için tabi birden fazla algoritmalar ve yöntemler mevcuttur ama veriyi doldururken (imputasyon) yapılırken yansız(unbias) doldurmak önemlidir. Verinin karakterini bozmadan, bize söylediği bilgileri ve doğruları kaçırmadan eksik veriyi doldurmak önemlidir.

Eksik verinin tanımını doğru yapmak gerekir. Eksik veriler belli bir düzene göre mi eksik yoksa rastlantısal olarak mı eksik kalmış ? Bu sorunun cevabı önemlidir. Tamamıyla Rastlantısal Olarak Kayıp Veriler (TROK) olarak adlandırılan eksik veriler, başka bir parametrenin etkisiyle doğrudan ya da dolaylı olarak eksilmeyen, veri setinde tamamen rastlantısal (rastgele) olarak dağılmış eksik verilerdir. İstatistikte bunun rastlantısal olarak dağılmasını isteriz. Bunun için “missing value analysis” yapılır ve bu testi yaparken t – Testi (başka testler de mevcuttur) kullanılır. Hipotezimiz ise kayıp veriler rastlantısal dağılıp dağılmadığıdır ve araştırmacı, kayıp verilerin rastlantısal olarak dağılmasını amaçlar ve test eder.

Veri setimizin herhangi bir parametresinde ciddi oranda eksik gözlem varsa( yarı yarıya eksik, hatta verinin %70 – 80’ i eksikse) analizlerde kullanırken çok dikkat edilmelidir hatta belki o parametre kullanılmamalıdır, silinmelidir. Eksik verinin bulunduğu parametrede üstüne bir de gürültülü veri varsa vay araştırmacının haline! Ölmüş ağlayanı yok. Bir de üstüne bağımlı değişken üzerinde açıklayıcılığı yüksek bir parametreyse.. Acın, acımdır sayın araştırmacı…

Eksik veriden kaynaklanacak hata toleransını azaltmak için çok sayıda method vardır. En basit yöntem olarak eksik – kayıp veriyi yok sayarak diğer adıma geçmektir. Fakat eksik verinin çok olduğu yöntemlerde hata yüzdesi çok fazla olacağı için bu durum araştırmacının yükünü arttıracaktır. Bu yöntemlerin bazıları Hot / Cold Deck, EM (beklenti maksimizasyonu), regresyon, karar ağacı, Naive Bayes, K – en yakın komşuluk, ortalama değer ve en son gözlem gibi yöntemler kullanılabilir. Fakat bu yazıda istatistiksel yöntemlerle geliştirilen birkaç algoritma üzerine durulacaktır, bu algoritmalar R programlama dilinde yaygın olarak kullanılır. Bu sebeple yazımda, R programlama literatüründe yaygın olarak kullanılan algoritmalar incelenmiştir.

Bazı parametreler bağımsız değişkenler için çok önem arz etmektedir ve bu parametrelerde eksik gözlemler bulunuyorsa eksik verileri yansız, etkili ve etkin bir şekilde değer ataması yapılmalıdır. Literatürde de bu durum tavsiye edilmektedir.

Eksik gözlemden kaçmak pek güçtür. Anket çalışması yapıldığında kişi cevap vermek istemeyebilir, verilerin aktarımında hata olmuş olabilir, birincil anahtarların eşleşmemesinden az da olsa kaynaklanabilir, ölçüm cihazından kaynaklı eksikler olabilir. Ölçülebilen ya da gözlemlenebilen her çalışmada bulunabilir eksik gözlem ve veri kaybına sebep olabilir. Bu eksik gözlemleri doldururken kullanılabilecek bazı algoritmalar mevcuttur. Bunlardan bazıları;

Regresyon Analizi ile eksik veri

Regresyon analizinde bağımlı değişkeni, bağımsız değişkenlerle tahmin etmek hedeflenir. Eksik verileri regresyon analizi ile doldurmak istenildiğinde tıpkı bağımsız değişkenlerle tahmin etmeye çalışıldığı gibi eksik verileri tahmin etmeye çalışır.

Regresyon analizi ile eksik veriler doldurulduğunda bazı varsayımlar vardır. Birincisi eksik verilerin tamamen rassal olarak dağıldığıdır. İkincisi ise kayıp veriyi regresyon modeline sokulduğunda diğer bağımsız değişkenlerde eksik veri olmamasıdır.

Hot – Deck ile eksik veri

Hot – Deck eksik veriyi doldurma işlemini yaparken K- en yakın komşuluğu ile eksik gözlemleri doldurur. Benzerlik uzaklığı/yapısı ile hesaplanır ve imputasyon gerçekleştirilir. Benzerliği tam olarak belirlenemediğinden(tanımlanması yapılamasının güç olduğundan) standart bir yapısı yoktur. Eksik veri için ona en benzer olduğuna inanılan gözlem değeri atanır.

Hot deck atfının avantajları arasında kavramsal basitliği, değişkenlerin ölçüm düzeylerini koruması (kategorik değişkenler kategorik olarak, sürekli değişkenler sürekli olarak kalır) ve tamamlanmış veri matrisi elde edilmesi sayılabilir. Tamamlanmış veri matrisi sayesinde de standart istatistiksel analizler uygulanabilir. (Şahin. Ş., 2012)

Naive Bayes ile eksik veri

Bayes karar teorisini temel olarak hesaplar, eksik veriyi ve doldurma işlemine dayanır. Bayes sınıflandırmasıyla eksik gözlemler tamamlanır. Sınıflar için ayrı ayrı olasılıklar hesaplanır ve eksik gözlemin bulunduğu örneğin en yüksek olasılığa sahip sınıftan olması söz konusudur. Naive Bayes, her kriterin sonuca olan etkilerinin olasılık olarak hesaplanmasına dayanır.

Tablo Kaynak: Dokuz Eylül Üniversitesi İktisadi ve İdari Bilimler Fakültesi Dergisi, Cilt:25, Sayı:2, Yıl:2010, ss.73-83

 

Uygulama – Eksik Veriler ile Mücadele

R programı, veri işleme konusunda araştırmacıya ciddi kolaylık ve esneklik sunmaktadır. R programı içinde barındırdığı kütüphaneler ile eksik veriyi analiz etme, onları işleme, doldurma (imputasyon) ve görselleştirme gibi hemen hemen her konuda elimizi kolaylaştırır.

Eksik veri ile mücadelemizde R programında çok değerli kütüphaneler bulunmaktadır. Bunların başlıcaları; mice, Amelia, missForest, Hmisc ve mi kütüphaneleridir.

Görüldüğü gibi kayıp veri büyük bir problem olsa bile istatistiksel yöntemlerle geliştirilen algoritmalar mevcut olduğundan artık işimiz sanıldığı kadar zor değil.

Faydalı kütüphaneler

[/crayon] VIM kütüphanesi içinden “sleep”, uyku veri setini inceleyelim ve buradaki eksik gözlemleri doldurmaya çalışalım.

Hangi parametrelerden toplam kaç tane eksik gözlemimiz var ?

[/crayon]

[/crayon] Görüldüğü üzere 62 gözlemimiz ve 10 parametremiz var. Eksik gözlemler incelendiğinde ise toplam 38 adet verinin eksik/kayıp olduğunu görüyoruz.

Eksik değerlerimizi içeren gözlemler ise,

[/crayon]

[/crayon]

Eksik verileri görselleştirelim

[/crayon]

[/crayon]

mice kütüphanesi ile eksik verilerin kalıplarını görebiliriz.

[/crayon]

[/crayon] Buradaki birler ve sıfırlar, verinin varlığını ya da yokluğunu göstermektedir. Burada 42 gözlem tam iken Gest parametresinde 3 gözlem eksik.

[/crayon]

[/crayon]

[/crayon]

[/crayon]

[/crayon] Eksiklik oranı ile o parametrenin yüzde kaçının kayıp veri içerdiğini görebiliyoruz.

Kayıp verilerimizi üretelim.

[/crayon]  

methods(mice) komutu ile eksik veriyi doldurma yöntemlerini görebilir ve verinize uygun olanı seçebilirsiniz.

[/crayon]

[/crayon]

[/crayon]

 

Bu grafik bizim için faydalı bir grafiktir. Magenta rengiyle gördüğümüz değerler bizim ürettiğimiz değerlerdir, mavi renkle gördüğümüz kalın çizgi ise gözlenen değerlerdir. Yansız eksik verileri doldurabilmek için bizim ürettiğimiz değerlerin ana yapıyı ne kadar çok yansıtırsa, ne kadar çok benzerse o kadar iyi eksik verileri doldurmuşuz diyebiliriz. Diğer faydalı grafiğimiz aşağıdaki gibidir. ,

[/crayon]

[/crayon]

 

Fonksiyonu oluştururken 5 iterasyonlu yapmasını istemiştik, görselimiz.

Eksik gözlemleri doldurma işlemi yapıldığında NonD değişkenimize eklenen gözlemler,

[/crayon]

[/crayon]  

Hadi birleştirelim,

doldurulmus <- complete(tamamlanmis, 2)

 

head(doldurulmus) [/crayon] [/crayon]

 

Böylelikle verilerimizi tamamlamış olduk.

[/crayon]

[/crayon]

KNN ile doldurma

[/crayon]

[/crayon]  

[/crayon]

[/crayon]

[/crayon]

[/crayon]  

Eğer kod yazımı ile uğraşmak istemiyorsanız çok beğendiğim bir kütüphaneyi sizlerle paylaşmak istiyorum. “MissingDataGUI” kütüphanesi. Bu paket ile kod yazmadan açılan pencerede tıklama ile analizleri yapabiliyoruz. İlerleyen zamanlarda R Studio programı üzerinden kod yazmayarak açılan pencereden işlerimizi halledebileceğimiz paketleri ve araçları göstereceğim. Bununla ilgili bir yazı yazmayı düşünüyorum. R programı kodlama bilmeden, kod yazmayı bilmeden de bazı analizleri yapabilmemize olanak sağlıyor.

Eksik veri ile alakalı olan paketi console kısmına “install.packages(”MissingDataGUI“)” yazarak ve paketi çağırarak kullanabilirsiniz. Ayrıca bu aynı durum “Amelia” kütüphanesi ile de mümkün. Bunun için “install.packages(”Amelia“)” yazdıktan sonra “AmeliaView()” ile çalıştırabilirsiniz. Daha bitmedi…. VIMGUI paketi ise en beğendiğim. Bunun içinde aynı şekilde bu paketi indirip, ardından bilgisayarınıza kurmanız gerekmektedir. Bu yazıda bu programı kullanmadım fakat bu paket ile çok güzel eksik veriyi görselleştirmeler ya da veriyi doldurken kullanacağı algoritmaları seçebilirsiniz. Kullanışlı, güzel birkütüphane.

Görüldüğü üzere eksik/kayıp veri bazı algoritmalar ile tamamlanabilmektedir. Eksik veri büyük bir problemdir evet ama “büyük bir problem” değildir. Asıl problem yansız tahmin edebilmek, bu yansızlığı ayarlayabilmek ve ona uygun yöntemi ya da doldurulacak veriyi ayarlamaktır. Biraz zaman, biraz istatistiksel bilgi ve tecrübe gerektirmektedir. Eğer zaman serisinde eksik veri analizi yapıyorsanız daha dikkatli olmalısınız, trend varsa yine az da olsa göz kararı olarak aralığı tahmin edebilirsiniz ama bilimsel hesaplamalarla bu işi yapmalı ve güvenirliğini arttırmalısınız.

Literatürden de görülebileceği gibi eğer kayıp verileriniz tamamıyla rastgele dağılmadığı durumlarda, eksik veri ile mücedele için daha fazla alan bilgisi gerekmektedir. TROK(Tamamıyla Rastlantısal Olarak Kayıp Veriler) olmayan veri setlerinde serilerin ortalaması, medyanı ya da basit atama ile yapılan doldurmaların(imputasyon) başarılı sonuçlar vermediği, bayesci istatistik yaklaşımları, makine öğrenmesi algoritmaları ise daha başarılı sonuçlar verildiği görülmüştür. Açıklanan varyansların oranlarına dikkat edilip, yanlılığın önüne geçmek gerekmektedir. Düşük eksik veriye sahip veri setleri ile çok sayıda eksik verilere sahip veri setleri karşılaştırıldığında, düşük eksik verilerin negatif yanlılık gösterildiği de değinilmiştir.

Eksik verileri doldururken veri setini değiştirdiğimizi unutmamız gerekmektedir. Bunun için verinin dağılımını hatta daha önemlisi “verinin karakterini” değiştirmeden atama yapmamız gerektiği unutulmamalıdır.

 

Varsayımlarınızın sağlanması dileğiyle,

Veri ile kalın, Hoşça kalın..

 

 

Kaynak: http://web.maths.unsw.edu.au/~dwarton/missingDataLab.html

Kaynak: Dokuz Eylül Üniversitesi İktisadi ve İdari Bilimler Fakültesi Dergisi, Cilt:25, Sayı:2, Yıl:2010, ss.73-83

Kaynak: Mehmet Akif Ersoy Üniversitesi Eğitim Fakültesi Dergisi, Eylül 2015, Sayı 35, 87 -111

Görsel Kaynaklar: www.trackpal.com/blog, https://blog.qlik.com/missing-data

Kaynak: https://www.kaggle.com/captcalculator/imputing-missing-data-with-the-mice-package-in-r

Kaynak: http://ab.org.tr/ab13/bildiri/184.pdf

Hakkında Utku Kubilay ÇINAR

YTÜ - Yüksek Lisans Doğuş Teknoloji - Data Scientist

GÖZ ATMAK İSTEYEBİLİRSİNİZ

Uygulamalı İstatistik – Verilerin Sınıflandırılması

Giriş Herkese merhaba, Bu yazıda sizlere verilerin sınıflandırılmasının ne işe yaradığından kısaca bahsedip, sizi uygulama …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir