Eksik veri, makine öğrenmesi projelerinde en sık karşılaşılan sorunlardan biridir. Veri toplama hataları, sensör arızaları veya kullanıcı tercihleri nedeniyle oluşan bu boşluklar, modellerin yanlı tahminler yapmasına ve genelleme yeteneğinin düşmesine yol açar. Eksik verilerle başa çıkmak için sistematik bir yaklaşım geliştirmek, sağlam ve güvenilir modeller oluşturmanın anahtarıdır.
Adım 1: Eksiklikleri Tespit Edin
İlk adım, hangi değişkenlerde ne kadar eksik olduğunu anlamaktır. Pandas isnull().sum() ve isnull().mean() fonksiyonlarıyla eksik oranlarını çıkarın. Görselleştirme için missingno kütüphanesi veya seaborn heatmap kullanarak eksik veri desenlerini inceleyin. Bu aşamada eksik verilerin rastgele mi yoksa sistematik mi olduğuna dair ilk izlenimi edinirsiniz.
Adım 2: Eksik Veri Türünü Belirleyin
Eksik veri mekanizmasını anlamak, yöntem seçimini etkiler. Üç tür vardır:
- MCAR (Tamamen Rastgele Eksik): Eksiklik diğer değişkenlerden bağımsızdır. Örneğin, anketin bir sorusunu yanıtlamayı unutmak. Bu durumda silme veya basit tamamlama yöntemleri kullanılabilir.
- MAR (Rastgele Eksik): Eksiklik gözlenen diğer değişkenlere bağlıdır. Örneğin, kadınların maaş bilgilerini verme olasılığı daha düşükse, cinsiyet değişkeni gözlenir. MAR durumunda ileri yöntemler (MICE, regresyon) daha uygundur.
- MNAR (Rastgele Olmayan Eksik): Eksiklik gözlenmeyen değerin kendisine bağlıdır. Örneğin, düşük gelirli kişiler gelirlerini bildirmez. Bu durumda modelleme veya hassasiyet analizi gerekir.
MCAR ve MAR varsayımını test etmek için Little's MCAR testi kullanılabilir.
Adım 3: Silme Yöntemlerini Değerlendirin
Eksik verilerle başa çıkmanın en basit yolu silmektir. Ancak dikkatli kullanılmalıdır.
- Listwise Silme: Eksik değer içeren tüm satırları siler. Veri kaybı yüksekse (%5'ten fazla) model yanlı olabilir.
- Pairwise Silme: Yalnızca analizde kullanılan değişkenlerdeki eksiklikleri siler. Korelasyon hesaplamalarında kullanışlıdır, ancak farklı analizlerde farklı örneklem büyüklükleri oluşur.
Silme yöntemleri yalnızca MCAR durumunda ve eksiklik oranı düşük olduğunda (genellikle %5'in altı) önerilir.
Adım 4: Tamamlama Yöntemlerini Seçin
Veri kaybını önlemek için eksik değerleri tahmin ederek tamamlayabilirsiniz. İşte yaygın yöntemler:
- Ortalama, Medyan, Mod: Sayısal değişkenlerde ortalama veya medyan, kategorik değişkenlerde mod kullanılır. Basit ve hızlıdır, ancak varyansı azaltır ve ilişkileri bozabilir.
- İleri/ Geri Doldurma: Zaman serilerinde bir sonraki veya önceki değerle doldurma. Trend varsa uygun değildir.
- Doğrusal İnterpolasyon: Zaman serilerinde eksik noktaları doğrusal olarak tahmin eder. Orta düzeyde doğruluk sağlar.
- KNN Atama: Eksik değere en yakın k gözlemi bulup ağırlıklı ortalama alır. Karmaşık ilişkileri yakalar, ancak hesaplama maliyeti yüksektir ve k değeri seçimi önemlidir.
- Regresyon Atama: Eksik değişkeni diğer değişkenler üzerinden regresyonla tahmin eder. İlişkileri korur, ancak aşırı uyuma yol açabilir.
- MICE (Çoklu Atama): Eksik verileri birden çok kez tahmin eder ve sonuçları birleştirir. En sağlam yöntemlerden biridir, ancak hesaplama yoğundur.
Adım 5: Gelişmiş Yöntemleri ve Model Tabanlı Yaklaşımları Düşünün
Bazı modeller eksik verilerle doğrudan başa çıkabilir. Örneğin, XGBoost ve LightGBM gibi ağaç tabanlı modeller, bölünmeler sırasında eksik değerleri yönlendirir. Derin öğrenme yöntemleri (VAE, GAN) de eksik veri düzeltmede kullanılabilir. Ancak bu yöntemler her durumda en iyisi değildir; model seçimi veri yapısına bağlıdır. Eksik veri tamamlama sonrası modellerinizi çapraz doğrulama ile değerlendirmeyi unutmayın.
Pratik Kontrol Listesi
Aşağıdaki adımları projenize uygulayarak eksik veri yönetimini sistematik hale getirin:
- ☐ Eksik veri oranını ve desenini görselleştirin (missingno, heatmap).
- ☐ Eksik veri türünü (MCAR, MAR, MNAR) test edin.
- ☐ Eksiklik oranı düşükse (%5 altı) ve MCAR ise listwise silmeyi düşünün.
- ☐ Basit tamamlama için ortalama/medyan/mod kullanacaksanız, değişkenin dağılımını kontrol edin (aykırı değerler varsa medyan daha iyidir).
- ☐ Zaman serisi veriniz varsa ileri/geri doldurma veya interpolasyon kullanın.
- ☐ Karmaşık ilişkiler için KNN (k=5 ile başlayın) veya MICE deneyin.
- ☐ Tamamlama sonrası veri setini dengesizlik açısından kontrol edin.
- ☐ Farklı tamamlama yöntemlerini model başarımı üzerinden karşılaştırın.
- ☐ Eksik veri tamamlama sonrası özellik seçimi yaparken tamamlanan değişkenlerin etkisini değerlendirin.
- ☐ MNAR durumunda hassasiyet analizi yapın veya model içi yaklaşımları tercih edin.
Sık Yapılan Hatalar
- Ortalama atamayı her durumda kullanmak: Aykırı değerlerden etkilenir ve dağılımı bozar. Medyan veya mod daha güvenli olabilir.
- Eksik veri türünü göz ardı etmek: MAR veya MNAR durumunda silme veya basit atama yanlı tahminlere yol açar.
- Tamamlama ve modelleme arasındaki döngüyü unutmamak: Tamamlama yöntemi model seçimini etkiler; bu nedenle farklı yöntemleri denemek önemlidir.
- Çok fazla veri kaybına neden olan silme işlemi: Eksiklik oranı %10'u geçiyorsa tamamlama daha uygundur.
Eksik veri yönetimi, makine öğrenmesi projelerinde sıkça atlanan ancak kritik bir adımdır. Bu kontrol listesini kullanarak veri kalitenizi artırabilir ve modellerinizin gerçek dünya performansını iyileştirebilirsiniz. Unutmayın, her proje farklıdır; yöntem seçimini veri setinize ve probleminize göre uyarlayın.
Sık Sorulan Sorular
Eksik verileri silmek mi yoksa tamamlamak mı daha iyidir?
Eksik verileri silmek yalnızca eksiklik oranı düşükse (%5 altı) ve MCAR durumunda uygundur. Aksi halde tamamlama yöntemleri tercih edilmelidir, çünkü silme veri kaybına ve yanlı tahminlere yol açabilir.
Eksik veri tamamlama için en iyi yöntem hangisidir?
Tek bir en iyi yöntem yoktur. Basit durumlarda medyan veya mod yeterli olabilirken, karmaşık ilişkiler için MICE veya KNN atama önerilir. Yöntem seçimi veri setine ve eksiklik mekanizmasına bağlıdır; farklı yöntemleri model başarımı üzerinden karşılaştırmak en doğrusudur.
Eksik veri türünü nasıl belirleyebilirim?
Eksik veri türünü belirlemek için Little's MCAR testi kullanılabilir. Ayrıca, eksiklik desenini görselleştirerek (missingno) ve eksik değerlerin diğer değişkenlerle ilişkisini inceleyerek MCAR, MAR veya MNAR olduğuna dair çıkarım yapabilirsiniz.
Zaman serilerinde eksik veri için hangi yöntem uygundur?
Zaman serilerinde ileri/geri doldurma veya doğrusal interpolasyon yaygın olarak kullanılır. Eğer trend veya mevsimsellik varsa, daha gelişmiş yöntemler (örneğin, ARIMA veya STL interpolasyonu) daha iyi sonuç verebilir.






