Veri Bilimi Yarışmasını Nasıl Kazandım II
Yeniden merhabalar,
Esen zamanlarımda yaptığım araştırmalarımdan şunu çıkardım, öğrendim ve deneyimledim: Konfor alanlarını terkedip harekete geçen insanlar için sonuç ne olursa olsun, yolda geçirdiği süreç gerçek başarı değeri kazanıyor. Bugün kendi hikayemi yazabilmenin verdiği mutlulukla devam ediyorum.
Bu bölümü “Zor olan problemler değil, onları çözememek endişesi” olarak adlandırıyorum.
Beklenen gün geldi, veriler elimizde. Kimdir, nedir, ne değildir bir tanıyalım.
Veri İstanbul’daki konutların fiyatını, konumunu, iç ve dış özelliklerini içeren toplamda 163 değişken ve yaklaşık 200000 gözlemden oluşuyordu. Hedefimiz fiyatı açıklayan niteliklerle düşük test hatasına sahip tahmin modeli kurmaktı. Veriyle bir süre bakıştık, rota oluşturuldu 😀 Tahmin edersiniz ki rotadan hangi durumda ve nereye sapılacağını çizsem bile o rota birçok kez yeniden yeniden oluşturuldu:P
Günün sonunda izlediğim yolun genel bir resmini görelim. Daha sonra detaylı inceleyeceğiz.
Çalışmamda R programını kullandım. Veriyi R’ a tanıttıktan sonra ilk izlenimlerinden bahsedeyim.
Fiyat, m_kare ve aidat değişkenlerinde oldukça yüksek bir sağa çarpık dağılım vardı. Aynı zamanda basıklık değerleri sıfırdan oldukça uzak; bu da veryansın yüksek olduğunu ve buna neden olarak da veride aykırı değelerin olabileceğini ve değişim katsayısından da hareketle özellikle fiyat ve m_kare değişkenlerinin ortalama etrafında yoğunlaşmadığını söyleyebiliriz. Çok heyecan vericiydi, boxplot’lar daha önce gördüklerimden farklıydı.
Eksik Veri İncelemesi
Balkon ve aidat değişkenlerinde çok fazla eksik veri var. Bu değişkenleri imputation yapmak modelimizde yanlılık yaratabilir. Aynı zamanda kullanacağımız imputation yönteminde de balkon ve aidat değişkenlerini katarsak verilerin yüzde ellisinden fazlası eksik olduğu için yanlı doldurulacaktır. Burada aidat değişkenininde bir output değer olduğunu düşündüm. Çünkü diyelim biz yeni olmayan bir evin fiyatını tahmin etmek istiyoruz, bizim elimize yeni bilgiler gelecek; X lokasyonunda şöyle bir ev diyecekler. Bizim aidatı şu kadar dememiz acaba mantıklı mı? Yani aidatın ev fiyatlardan yola çıkılarak belirlendiğini düşünüyorum. Pahalı evlerin pahalı aidatları olması gibi. Dolayısıyla aidat ve balkon değişkenlerini yüzde ellisinden fazla eksik veri bulundurmaları nedeniyle veri setimizden çıkartıyoruz.
Bağımlı değişkenimizde eksik verilere gelince, bizim amacımız zaten fiyatı tahmin etmek olduğu için; fiyat değişkenini doldurursak, ilerde kuracağımız tahmin modelini imputing modele zorlamış oluyoruz. Dolayısıyla fiyat değişkenindeki eksik gözlemleri siliyoruz.
Şimdi kalan değişkenlerdeki kayıp veri mekanizmasını inceleyelim. Site_icerisinde değişkeninde eksik gözlemler kişinin bunu doldurmasının gereksiz olduğunu düşündüğü için olabilir ya da girmeye unutmuş olabilir ki bu durumda tamamen rasgele oluşmuş kayıplara girer(MCAR).
Kişi dairenin bulunduğu kattan dolayı site içerisinde değişkenini doldurmanın gereksiz olduğunu düşünüyorsa rasgele eksik oluşmuş kayıplara girebilir(MAR).
m_kare değişkeninindeki kayıplar, kişi metre karesi küçük olduğu için yazmamışsa oluşmuş olabilir. Bu durumda eksiklik aynı değişkenin gözlemleri ile ilişkili olduğundan rasgele kayıplar değildir(NMAR). Başka bir durumda kişi oda sayısından dolayı metre kareyi girmemiş olabilir. Bu durumda da eksiklik başka değişkenle ilişkili olduğundan rasgele eksik kayıplara girer(MAR). Yalnızca beş gözlem eksik olduğundan net bir şey söyleyemiyoruz.
Eksik Verileri İnceleme Sürecinde Rastgeleliğin Testi
Bu yorumlarımı grafik destekli yaptıktan sonra R programında eksik verilerin tamamen rastgeleliğin ve aynı zamanda verinin çok değişkenli normal dağılıma uygunluğunun testini yapan Neyman’ın testi kullandım. Bu fonksiyon bize iki testin sonucunu verir:
Hawkins testten hareketle eksik verilerin tamamen rastgele olmadığını yüzde beş anlamlılık düzeyinde söyleyebiliriz.
Non-pararametric testten hareketle verimizin çok değişkenli normal dağılmadığını yüzde beş anlamlılık düzeyinde söyleyebiliriz.
Multiple imputation yöntemleri verinin en azından rastgele eksik dağıldığını(MAR) varsayar. Verilerimiz MCAR değilse eksik gözlemleri silmek kuracağımız modelde yanlılık yaratır.
Eksik Verilerin Doldurulması
Eksik verilerin doldurulması ile ilgili R programında dört güçlü paket var. İlk olarak Mice paketiyle neden dolduramayız? Mice paketi eksik değerlerin ortaya çıkışının diğer değişkenlerin en az birine bağlı olduğunu(MAR) varsayar. Gözlemler bağımsızdır. Sürekli eksik değerleri tahmin etmek için doğrusal regresyonu, kategorik değişkenlerdeki eksik verileri tahmin etmek için lojistik regresyonu kullanır. M_kare değişkeni lineer regresyon varsayımlarını karşılamadığı için bu paketi kullanamayız.
İkinci güçlü bir paket amelia paketi. Bu paket, verideki tüm değişkenlerin çok değişkenli normal dağılıma sahip olduğunu varsayar. Eksik değerleri çoklu denemeler sonucu eksik verileri doldurduğu için yanlılık düşük, verimlilik yüksektir.
Üçüncü olarak Hmisc paketi, tahmin edilen değişkenlerde doğrusallık varsaydığı için bu paketi de kullanamıyoruz.
Dördüncü olarak missForest paketi, her değişken için bir rasgele orman modeli oluşturur. Daha sonra, değişkendeki eksik değerleri gözlenen değerlerin yardımıyla tahmin etmek için modeli kullanır. Herhangi bir varsayım gerektirmediğinden missForest paketini kullanabiliriz.
Eksik verileri hot-deck yöntemiyle de doldurabiliriz. Bu atama yönteminde ilgili değişkenin tam verili gözlemleri arasından seçilen rastgele bir değerin atanması söz konusudur. Veri yeterince büyük olduğundan, birbirine benzer eksik gözlemlerin söz konusu olduğu durumlarda, atanacak gözlemin tekrar atanma olasılığını azaltıyor. Sonuçları karşılaştırdığımda (eksik kategorik değişkenlerin çubuk grafiklerini, yine metrekarenin dağılımını) iki algoritmanın arasında fark yok denecek kadar azdı. Daha sonra missForest paketiyle doldurduğum gözlemleri ham verimle birleştirerek devam ettim.
Anormal Değerler
Fiyat ve metre kare değişkenlerinde anormal değerler vardı.
M_kare değişkenini oda sayısına göre, fiyatı da ilçe kırılımında inceledim.
Evet eksik verileri doldurduk, anormal değerleri temizledik. Tabii burda karşılaştığım problemlere göre birçok yöntemi deneyip optimum olanı uyguladığımın altını çizmek istiyorum. Şu bir gerçek ki problemler çözülüyor; çünkü en kötüsü yoktur, en zoru vardır. Ve bizi zorlayan problemler değil, onları çözememek endişemizdir diyerek bu bölümü noktalandırıyorum.
Endişelerimizden sıyrılıp, problemlerimize odaklanmak dileğiyle…