Veri Biliminde Eksik Veriler ile Nasıl Başa Çıkarız?

Eksik veriler, veri bilimi projelerinde karşılaşılan en yaygın sorunlardan biridir. Eksik veri, bir ya da birden fazla gözlemin veri setinde bulunmadığı durumlardır ve bunlarla başa çıkmak, modelleme süreçlerinin başarısını doğrudan etkiler. Eksik veriyle çalışırken neyi, neden yaptığımızı bilmek, hem model kalitesini artırmak hem de doğru sonuçlar elde etmek açısından kritiktir.

Eksik Verilerin Neden Önemli Olduğunu Anlamak

Eksik veriler dikkate alınmadığında, analiz ve modelleriniz ciddi şekilde yanlı sonuçlar verebilir. Örneğin, bir veri setinde bazı özelliklerdeki eksiklikler, modelin önyargılı hale gelmesine veya eksik bilgiden dolayı performansının düşmesine yol açabilir. Eksik verilerle başa çıkmanın doğru yolu, durumun karmaşıklığına ve veri setinin genel yapısına bağlıdır.

Eksik veri sorununun çözümü için kullanacağımız yöntemler, basit ve hızlı çözümlerden daha karmaşık, ileri seviye yöntemlere kadar çeşitlilik gösterir.

1. Eksik Verileri Göz Ardı Etme: Basit, Ama Tehlikeli Yöntem

Teori

Eksik verilerin göz ardı edilmesi en basit ve yaygın yöntemlerden biridir. Ancak eksik veri oranı yüksekse, bu yaklaşım oldukça tehlikeli olabilir. Eğer eksik veriler tüm veri setinin %5–10'undan daha azını kapsıyorsa, bu yöntem kullanılabilir. Fakat daha fazla veri kaybı yaşanırsa, modelde ciddi yanlılık oluşabilir. Ayrıca bu yöntem sadece verinin tamamen rastgele eksik olduğu (MCAR — Missing Completely at Random) durumlarda işe yarar.

Python Kod Örneği

df_cleaned = df.dropna()

Neden Kullanılır?

  • Basit ve hızlıdır.
  • Küçük veri kayıplarında etkili olabilir.

Neden Kullanılmamalı?

  • Veri setinde ciddi bilgi kaybına neden olabilir.
  • Verinin rastgele eksik olmadığı durumlarda modelde yanlılık yaratabilir.

2. Eksik Verileri Doldurma: Orta Seviye Yaklaşım

Teori

Eksik verileri doldurma, göz ardı etmeye kıyasla daha iyi bir yaklaşımdır. Bu yöntem, eksik verilerin makul bir şekilde tahmin edilmesiyle yapılır. Örneğin, sürekli veriler için ortalama veya medyan kullanılarak eksik değerler doldurulabilir. Kategorik veriler içinse mod (en sık tekrar eden değer) kullanılabilir. Bu yöntemler genellikle verilerin rastgele eksik olduğu (MAR — Missing at Random) kabulüne dayanır.

Ortalama ve medyan ile doldurma, verilerin geneline dair bilgi verirken, verinin varyansını korumaz. Yani, her eksik değeri sabit bir sayıyla doldurmak, veri setindeki varyasyonu azaltarak modelin tahmin gücünü zayıflatabilir.

Python Kod Örneği

  • Ortalama ile doldurma:
df['sütun_adi'].fillna(df['sütun_adi'].mean(), inplace=True)
  • Medyan ile doldurma:
df['sütun_adi'].fillna(df['sütun_adi'].median(), inplace=True)
  • Mod ile doldurma:
df['sütun_adi'].fillna(df['sütun_adi'].mode()[0], inplace=True)

Neden Kullanılır?

  • Verinin tamamını koruyarak bilgi kaybını önler.
  • Basit ve hızlı bir yöntemdir.
  • Genellikle küçük miktarda eksik veri olan veri setlerinde iyi çalışır.

Neden Yetersizdir?

  • Varyansı azaltır ve modelin performansını olumsuz etkileyebilir.
  • Ortalamaya dayalı tahminler uç değerlerden etkilenebilir.
  • Kategorik verilerde gerçek anlamı kaybettirebilir.

3. İleri ve Geri Doldurma (Forward/Backward Fill): Zaman Serilerinde Kullanılan Yöntem

Teori

İleri ve geri doldurma, özellikle zaman serisi verilerinde sık kullanılan bir tekniktir. Eksik değeri önceki ya da sonraki gözlemin değeri ile doldurur. Ancak, bu yöntem sadece veriler zamana bağlı olduğunda veya komşu veri noktalarının benzer olmasının mantıklı olduğu durumlarda kullanılmalıdır. Eğer komşu verilerde büyük bir değişiklik varsa, bu yöntem yanıltıcı olabilir.

Python Kod Örneği

  • İleriye doğru doldurma:
df.fillna(method='ffill', inplace=True)
  • Geriye doğru doldurma:
df.fillna(method='bfill', inplace=True)

Neden Kullanılır?

  • Zaman serilerinde kullanıldığında mantıklı sonuçlar verir.
  • Verilerin zamansal olarak tutarlı olduğu durumlarda oldukça etkilidir.

Neden Yetersizdir?

  • Zaman serisi olmayan verilerde yanlış sonuçlar verebilir.
  • Gerçek veriyi yansıtmaz, komşu değerlerle tahmin eder.

4. Tahmine Dayalı Yöntemler: İleri Seviye Yaklaşım

Teori

Eksik verileri tahmin etmek için makine öğrenmesi modelleri kullanmak, en gelişmiş yöntemlerden biridir. Burada, eksik veriler model tarafından tahmin edilir. Bu yöntem, veri setindeki diğer sütunları kullanarak eksik değerleri tahmin etmeyi hedefler. En yaygın kullanılan tekniklerden biri, Random Forest gibi regresyon algoritmaları ile eksik verileri tahmin etmektir. Bu yöntem, diğer yaklaşımlara göre daha doğru sonuçlar verebilir, çünkü eksik veriyi tüm veri seti ile ilişkilendirir.

Python Kod Örneği

from sklearn.ensemble import RandomForestRegressor

def fill_missing_with_model(df, target_column):
    df_complete = df.dropna(subset=[target_column])
    X = df_complete.drop(target_column, axis=1)
    y = df_complete[target_column]

    model = RandomForestRegressor()
    model.fit(X, y)

    missing = df[df[target_column].isnull()]
    df.loc[missing.index, target_column] = model.predict(missing.drop(target_column, axis=1))
    return df

df = fill_missing_with_model(df, 'hedef_sütun')

Neden Kullanılır?

  • Eksik verileri diğer verilerle ilişkilendirerek tahmin eder.
  • Daha doğru sonuçlar üretir, varyansı korur.

Neden Zorludur?

  • Hesaplama maliyeti yüksektir.
  • Veri setinin büyüklüğüne ve modelin karmaşıklığına bağlı olarak uzun sürebilir.
  • Karmaşık bir yapı gerektirir, daha ileri düzey bilgi ve deneyim gerektirir.

Sonuç

Eksik veriler, veri bilimi projelerinde dikkate alınması gereken önemli bir sorundur. Basit yaklaşımlar (veriyi silmek veya ortalama ile doldurmak), hızlı ve kolay olsa da, her zaman en doğru sonuçları vermez. Daha gelişmiş yöntemler (tahmine dayalı modeller gibi), veri setinin yapısını daha iyi anlayarak eksik verileri doğru şekilde tahmin edebilir. Hangi yöntemin kullanılacağı, veri setinin büyüklüğüne, eksik veri oranına ve projenin amacına bağlıdır.

Eksik veri ile başa çıkarken, doğru karar vermek için hem verinin doğasını anlamak hem de kullanılan yöntemlerin etkilerini bilmek büyük önem taşır.

İlgili araç: Bir veri setinde eksik verinin nerede yoğunlaştığını görmek için CSV Veri Seti Profili aracına dosyanızı bırakın — sütun başına eksik sayısını ve yüzdesini çıkarır, dosyanız tarayıcıdan çıkmaz.

Bu yazı Ahmet Bilgiç tarafından yazılmış olup ilk olarak Medium'da yayımlanmıştır. Diğer yazılar için: medium.com/@ahmet_bilgic07