Eksik veri, makine öğrenmesi modellerinin başarısını doğrudan etkileyen yaygın bir sorundur. Veri kümesinde boş veya NaN değerlerin varlığı, modelin yanlı tahminler yapmasına, varyansın artmasına ve hatta modelin çökmesine neden olabilir. Bu yazıda, eksik veriyle başa çıkmak için uygulanabilir yöntemleri, pratik ipuçlarını ve bir kontrol listesini bulacaksınız.
Eksik Veri Türleri: MCAR, MAR ve MNAR
Eksik veri mekanizmasını anlamak, doğru stratejiyi seçmek için kritiktir. Üç temel tür vardır:
- MCAR (Missing Completely at Random): Eksiklik tamamen rastgeledir; gözlemlenen verilerle ilişkisi yoktur. Örneğin, anket sorusunun yanlışlıkla atlanması. Bu durumda veriyi silmek veya basit doldurma yöntemleri kullanılabilir.
- MAR (Missing at Random): Eksiklik, diğer değişkenler tarafından açıklanabilir. Örneğin, gelir bilgisi eksik olan kişiler genellikle düşük eğitim seviyesine sahipse, eğitim seviyesi kullanılarak doldurma yapılabilir.
- MNAR (Missing Not at Random): Eksiklik, değişkenin kendi değeriyle ilişkilidir. Örneğin, yüksek gelirli kişiler gelir bilgisini vermek istemeyebilir. Bu en zor türdür ve gelişmiş yöntemler (örneğin, çoklu atama) gerekir.
Eksik veri türünü belirlemek için istatistiksel testler (Little's MCAR testi) veya görsel inceleme (ısı haritaları) kullanabilirsiniz. Makine Öğrenmesinde Özellik Mühendisliği yazımızda bu testlere dair ipuçları bulabilirsiniz.
Eksik Veriyi Tespit Etme Yöntemleri
Veri kümesindeki eksiklikleri keşfetmek için şu araçları kullanın:
- Pandas
isnull().sum(): Her sütundaki eksik değer sayısını verir. - Isı haritası (seaborn heatmap): Eksikliklerin desenini görselleştirir.
- Missingno kütüphanesi: Eksik veri matrisi ve dendrogram çizerek ilişkileri gösterir.
- İstatistiksel testler: MCAR varsayımını test eder.
Eksiklik oranı %5'in altında ise basit yöntemler genellikle yeterlidir. Daha yüksek oranlarda ise dikkatli olunmalıdır.
Eksik Veri Doldurma Stratejileri
Aşağıda en yaygın yöntemler açıklanmıştır. Hangi yöntemin seçileceği, veri türüne ve eksiklik mekanizmasına bağlıdır.
3.1. Basit Doldurma
- Sayısal veriler için: Ortalama, medyan veya mod (en sık değer) kullanılır. Ay- simetri varsa medyan daha iyidir.
- Kategorik veriler için: Mod veya yeni bir kategori (örneğin 'Bilinmiyor') eklenir.
3.2. İleri Yöntemler
- Regresyon ataması: Diğer değişkenleri kullanarak eksik değeri tahmin eder. Aşırı uyuma yol açabilir.
- KNN ataması: En yakın k komşunun ağırlıklı ortalamasını alır. K değeri seçimi önemlidir.
- Çoklu atama (MICE): Birden çok veri kümesi oluşturarak belirsizliği modeller. MNAR için uygundur.
3.3. Derin Öğrenme Tabanlı Yöntemler
Autoencoder veya GAN'lar eksik veriyi öğrenip daha gerçekçi değerler üretebilir. Ancak büyük veri gerektirir ve aşırı karmaşık olabilir. AutoML araçları bu tür işlemleri otomatize edebilir.
Pratik İpuçları ve Kontrol Listesi
Eksik veri yönetiminde şu adımları izleyin:
- Eksik veri türünü belirleyin: MCAR ise basit silme veya doldurma yapılabilir; MAR/MNAR ise ileri yöntemleri düşünün.
- Eksiklik yüzdesini hesaplayın: %1-5 arası: basit doldurma; %5-20: ileri yöntemler; >%20: değişkeni çıkarmayı değerlendirin.
- Basit yöntemlerle başlayın: Model performansını test edin. Overfitting oluşuyorsa düzenlileştirme tekniklerini inceleyin (Regularization Teknikleri).
- Doldurma yöntemini cross-validation ile değerlendirin: Doldurulmuş veriyle modeli eğitip performansı karşılaştırın.
- Doldurma sonrası varyansı kontrol edin: Aşırı küçülme olmadığından emin olun.
- Uzman görüşü alın: Özellikle tıp veya finans gibi kritik alanlarda, eksik verinin nedenini anlamak için alan bilgisi kullanılmalıdır.
Sık Yapılan Hatalar
- Eksik veriyi fark etmeden modeli eğitmek (çoğu kütüphane hata verir).
- Tüm eksikleri ortalama ile doldurarak dağılımı bozmak (özellikle çok değişkenli veride).
- Test setine eğitim setinden sızdırarak leakage yaratmak (doldurma istatistiklerini sadece eğitim setinden hesaplayın).
- Kategorik veride mod dışında bir değer atamak (örneğin -1) ve bunu modelin anlamasını beklemek.
Hangi Yöntemi Ne Zaman Seçmeli?
| Durum | Önerilen Yöntem |
|---|---|
| Eksiklik düşük (<%5), MCAR | Satır silme veya ortalama/mod |
| Sayısal veri, MAR | Regresyon veya KNN ataması |
| Kategorik veri, MAR | Mod veya 'diğer' kategorisi |
| Yüksek eksiklik (>%20) | Değişkeni çıkar veya çoklu atama kullan |
| MNAR şüphesi | Çoklu atama (MICE) veya model tabanlı yöntemler |
Unutmayın, eksik veri yönetimi bir özellik mühendisliği adımıdır. Doğru yaklaşım, model başarınızı ciddi ölçüde artırabilir. Streamlit veya Gradio gibi araçlarla modelinizi sergilerken, veri ön işleme adımlarınızı da belirtmek iyi bir pratik olacaktır.
Sık Sorulan Sorular
Eksik veri doldurmada en iyi yöntem nedir?
En iyi yöntem, verinin türüne, eksiklik mekanizmasına ve miktarına bağlıdır. Genel bir kural: düşük eksiklik oranlarında basit yöntemler (ortalama, medyan) yeterliyken, yüksek oranlarda ileri yöntemler (KNN, çoklu atama) tercih edilmelidir.
Eksik veri yüzdesi ne kadar olursa model kullanılmamalı?
Net bir sınır yoktur, ancak %20'nin üzerindeki eksiklikler genellikle sorunludur. Bu durumda değişkeni çıkarmak veya çoklu atama kullanmak daha iyi sonuç verebilir.
Kategorik verilerde eksiklik nasıl doldurulmalı?
Kategorik verilerde en sık kullanılan yöntem mod (en sık değer) veya eksik değerleri yeni bir kategori (örneğin 'Bilinmiyor') olarak işaretlemektir. Model bazı durumlarda eksikliği ayrı bir kategori olarak öğrenebilir.
Eksik veri doldurmak overfitting'e neden olur mu?
Evet, özellikle aşırı uyumlu yöntemler (örneğin regresyon ataması) veriye aşırı uyum yaparak overfitting'e yol açabilir. Bu nedenle düzenlileştirme teknikleri kullanmak veya çapraz doğrulama ile değerlendirme yapmak önemlidir.






