[TR] Veri Bilimi’nde Özel Konular, No:1

Melikşah Çelik
4 min readJun 26, 2019

--

Veri Bilimi üzerine çokça bloglar yazılan, online eğitimler hazırlanan ve bu alana özgü lisansüstü programların açıldığı bir dönemi yaşıyoruz. Bu anlamda içerik üretme ve öğrenilenleri aktarma konusunda hayli istekli bir topluluk oluştu, bunlar ülkemiz adına mutluluk verici gelişmeler.

Bu gelişmelere ve tüm veri bilimi topluluğuna destek olabilmek adına, online eğitimler ve blog yazılarında anlatılan genel konulardan ziyade veriyle uğraştıkça elde ettiğimiz, kullandığımız biraz daha detay ve özel teknikleri paylaşacağım bir yazı serisine başlıyorum.

Zaman zaman paylaşacağım, internette ve çeşitli online kaynaklarda çok fazla bulamayacağınız bu tekniklerin, önerilerin ve ipuçlarının çalışmalarınıza katkı sağlamasını umuyorum. Veri biliminde yeniyseniz, paylaştığım konular hakkında genel ve detaylı bilgiler için diğer kaynaklara başvurabilirsiniz.

English version: https://medium.com/@mlkshclk/en-special-methods-in-data-science-vol-1-c65827a3759f

Bu yazıda Eksik Değer Analizi (Missing Value Analysis/Handling) üzerine birkaç öneriden ve öncesinde uygulanabilecek bir yöntemden bahsedeceğim.

  • Zorluk düzeyi: 5/10
  • Sektör uygulanabilirlik: 9/10
  • Akademik ağırlık: 6/10

Eksik Değer Analizi (Missing Value Analysis/Handling)

Genel olarak iki tür eksik değer olabilir: eksik olması gereken değerler, eksik olmaması gerektiği halde eksik olanlar.

Bir populasyona ait farklı örneklemlerin veya farklı populasyonların verilerini birbiriyle bağladığınızda elinizdeki örnekleme özgü özelliklerin/özniteliklerin yüzde yüz dolu olmasını bekleyemeyiz, buradaki eksik değerler ‘eksik olması gerekenler’e bir örnektir. Bu tarz eksik değerler için uygulayacağınız herhangi bir eksik değer analiz tekniği doğru olmayacaktır. Örneğin müşterilerinizle ilgili farklı tablolarda farklı özellikler tutuyorsunuz ve tüm özellikleri tek bir tabloda birleştirmek için tablolarınızı bağladınız. Bireysel müşterileriniz için şirket bilançosuyla ilgili özellikler boş gelecektir. Eğer o anda tablonuz da sıralı değilse ve bir anlık ‘aralarda boş veriler var hadi ortalamayla dolduralım’ derseniz çalışmanız tamamen anlamsızlaşacaktır.

Başka bir örnek ise, zorunlu olmayan form alanlarıyla kaydedilen veriler. Eğer müşterilerinizden bir forma yaş bilgisini girmesini zorunlu kılmadıysanız, gelen veri eksik olabilir, başka bir deyişle ‘tam dolu gelmemesine izin vermişiz’dir.

Eksik olmaması gerektiği halde eksik gelen bir değer varsa bunlar muhtemelen API gateway’lerdeki, ETL aşamalarındaki veya veri modeli/tablo tasarımlarınızdaki bir yanlışlıktan kaynaklanıyordur, bu durumlarda eksik veri silme/doldurma yöntemlerini uygulayamazsınız, öncelikle bahsettiğim alanlarda iyileştirmeler yapmanız gerekli. Örneğin modeli kurarken kullandığınız bir türev değişkeni oluştururken kullandığınız bir veya birden fazla ham veri bir tarihten sonra boş geliyorsa, boş gelmesinin arkasında muhtelemelen bir sistem/kural değişikliği vardır.

Bir tahmin çalışması yapmak istiyorsunuz ve elinizde farklı farklı ham veri kaynaklarından elde ettiğiniz -modelleme algoritmalarına verebileceğiniz- türev bir kitle ve özellikler var. Türev tablonuzdaki eksik gelen değerler, ham verideki eksik değerlerden veya ham-türev veri arasındaki ETL süreçlerinizden kaynaklı olabilir. ETL süreçleri kaynaklı veri kaybının olmadığını varsayalım. O halde eksik gelen değerlerin kaynağına gidip kaynakta düzeltme veya silme işlemi yapmanız gerekli. Bu aşamada, satır silme veya değer doldurma yöntemlerinden önce uygulanabilecek aşağıdaki gibi bir yöntem bulunmakta:

N özellikli M gözlemli aşağıdaki gibi bir veri setimiz olsun.

Her bir gözlem ve her bir özellik için bir eksik veri oranı (NP) hesaplıyoruz. Eksik değer doldurma işlemi yapacağınız bir özelliğin en azından %70'lik bir doluluk oranına sahip olması modelinizin canlıdaki verimi ve anlamlılığı açısından iyi olacaktır.

Bu aşamada yapacağımız şey, basit bir pareto kuralına göre satırların ve kolonların doluluk açısından kalitesini belirlemek. Yani, -eğer mantıklı geliyorsa- doğrudan hesapladığınız eksik veri oranını kullanarak veya eksik veri oranının kendi içinde percentile’larını hesaplayarak bir 80–20 pareto kuralı çalıştırmak. Sonuç olarak şöyle bir veri kitlesi elde etmeyi amaçlıyoruz:

Doluluk oranı düşük olan kolon ve satırlardan, dolululuk oranı yüksek olanlara göre satırlarınızı ve kolonlarınızı sıraladığımızda, buradaki yeşil alan ‘anlamlı veri doluluğu’ açısından kaliteli bir alanken, kırmızı alanlar uzak durulması gereken alanlar oluyor.

Yeşil alan da hala eksik veri içeriyor olabilir. Ancak kırmızı alanların halihazırda bolca veri kaybı olan yerler olduğunu biliyoruz. Bundan dolayı bu gözlemleri ve değişkenleri mevcut halleri ile modelleme aşamasına almamamız daha doğru olacaktır.

Bu aşamadan sonra, arzu ettiğiniz Eksik veri doldurma/silme yöntemlerini yeşil alandaki kitleye uygulayarak çalışmanıza devam edebilirsiniz.

Bu yöntemin motivasyonu şu şekilde: Düşünün ki projenizde tüm veri hazırlık süreçlerini, modelleme, tuning vb. çalışmalarını tamamladınız ve artık modelinizi canlıda çalışır hale getireceksiniz. Modelinize canlıda gelecek veri kitlesi, -zaten- öğrenme aşamasında kullandığınız veri kitlesiyle benzer özellikte olmalı. Bu özelliklerden biri de ‘her bir değişken/özellik için eksik veri oranı’.

Eğer her eksik gelen değer için silme veya doldurma işlemi yaparsanız, bazen gelen verinin %80'ini ortalama/medyan ile doldurmuş olabilirsiniz, ki bu da modelin anlamsız olacağının bir işareti olacaktır. Hatta herhangi bir eksik değer içeren satırları sildiğimizde elde hiçbir veri kalmadığı veri setlerine de denk geleceksiniz… O halde eksik veriler için uygulayacağınız yöntemin kalitesi kadar, modelde kullanacağınız verinin kalitesi devreye giriyor. Veri kalitesi kapsamında çokça çalışma mevcut, bir örneğini de burada eksik veri çalışmalarıyla ilgili olarak paylaşmış oldum.

Gelecekte üzerine yazmayı düşündüğüm konular:

  • Neden K-fold cross-validation kullanmalıyız?
  • Predictive Analytics vs. Prescriptive Analytics
  • Uçtan uca bir veri bilimi proje yönetimi, doküman ihtiyaçları/tercihleri, nasıl bir ekip kurulmalı?

Konuyla ilgili merak ettiklerinizi ya da varsa sorularınızı paylaşabilirsiniz.

--

--