Data Preprocessing (Veri Ön İşleme)

Ham verinin eksik değer giderme, ölçeklendirme, kodlama ve temizleme gibi adımlarla makine öğrenmesi modeline hazır hale getirilmesi süreci.

Veri Ön İşleme (Data Preprocessing), ham verinin makine öğrenmesi veya derin öğrenme modelleri tarafından işlenebilecek kalitede ve formatta hale getirilmesi için uygulanan dönüşüm süreçlerinin bütünüdür. Gerçek dünya verileri çoğunlukla eksik değerler, aykırı gözlemler, tutarsız formatlar ve gürültü içerir; veri ön işleme bu sorunları gidererek modelin sağlıklı kalıplar öğrenmesini sağlar. Temel adımlar şunlardır: Eksik değer yönetimi — boş hücreler ortalama, medyan veya KNN gibi yöntemlerle doldurulur ya da silinir. Aykırı değer tespiti ve giderimi — istatistiksel sınır dışına çıkan veri noktaları belirlenir, düzeltilir veya kaldırılır. Ölçeklendirme ve normalleştirme — farklı ölçeklerdeki sayısal değişkenler (örneğin yaş ile maaş) Min-Max normalleştirme veya Z-score standartlaştırma ile ortak bir aralığa çekilir; böylece mesafe tabanlı algoritmalar (KNN, SVM) ya da gradyan inişli modeller (sinir ağları) dengeli çalışır. Kategorik kodlama — metin tabanlı kategorik değişkenler One-Hot Encoding veya Label Encoding ile sayısal formata dönüştürülür. Boyut indirgeme — gereksiz veya birbiriyle yüksek korelasyonlu özellikler PCA gibi yöntemlerle elenerek model karmaşıklığı azaltılır. Veri ön işleme, makine öğrenmesi projesinin en fazla zaman harcanan aşamasıdır; veri bilimcilerin yaklaşık yüzde sekseni bu süreçte geçer. scikit-learn'ün Pipeline ve ColumnTransformer yapıları, bu adımları tutarlı ve tekrar kullanılabilir biçimde uygulamayı kolaylaştırır. Doğru veri ön işleme olmadan en güçlü algoritma bile güvenilir tahminler üretemez; bu nedenle model başarısının temeli veri kalitesidir.

Neden Gerekli?

Makine öğrenmesi ve derin öğrenme modelleri matematiksel optimizasyon süreçleridir; bu nedenle beslendiği verinin temiz, tutarlı ve anlamlı olmasını bekler. Gerçek dünya verileri ise genellikle bu beklentileri karşılamaz. Anket formlarında boş bırakılan alanlar, sensör arızasından kaynaklanan aykırı ölçümler, farklı sistemlerde farklı formatta kaydedilen tarihler veya 'Erkek / E / 1 / male' gibi tutarsız kategorik girişler doğrudan modele verildiğinde sonuçlar yanıltıcı olur. Veri ön işleme bu ham hammaddeyi modelin anlayacağı dile çevirir.

Temel Adımlar

  • check_circle Veri Temizleme (Data Cleaning): Yinelenen satırların kaldırılması, tutarsız yazımların düzeltilmesi (İstanbul / Istanbul / istanbul) ve anlamsız değerlerin (yaş = -5 gibi) giderilmesi bu adıma girer.
  • check_circle Eksik Değer Yönetimi (Imputation): Boş hücreler; sayısal değişkenler için ortalama/medyan, kategorik değişkenler için en sık görülen değer (mod) ile doldurulabilir. KNN veya model tabanlı imputation daha sofistike seçeneklerdir. Çok sayıda satır eksikse o sütun tamamen silinebilir.
  • check_circle Aykırı Değer Giderimi (Outlier Removal): IQR yöntemiyle 1.5×IQR sınırları dışındaki değerler tespit edilir. Z-score eşiği (|z| > 3) veya Isolation Forest gibi model tabanlı yöntemler de kullanılır. Aykırı değerlerin giderilmesi mi, kırpılması mı (winsorizing) ya da dönüştürülmesi mi gerektiği veri setinin yapısına bağlıdır.
  • check_circle Ölçeklendirme ve Normalleştirme: Farklı birimlerdeki değişkenler (maaş: 50000, deneyim: 5 yıl) mesafe tabanlı algoritmalarda (KNN, SVM) ve gradyan inişinde büyük değeri olan değişkeni ön plana çıkarır. Min-Max Normalleştirme: (x − min) / (max − min) → [0, 1]. Z-score: (x − μ) / σ → ortalama 0, std 1. Robust Scaler: medyan ve IQR kullanır, aykırı değerlere dayanıklıdır.
  • check_circle Kategorik Kodlama: Metin tabanlı kategorik değişkenler sayısal forma dönüştürülür. One-Hot Encoding her kategori için ikili sütun oluşturur (düşük kardinalite için idealdir). Label Encoding sıralı kategoriler (Düşük-Orta-Yüksek) için uygundur. Target Encoding ve Frequency Encoding yüksek kardinalitede (binlerce kategori) tercih edilir.

Sıkça Kullanılan Araçlar

settings_suggest scikit-learn Pipeline

ColumnTransformer ile sayısal ve kategorik sütunlara farklı dönüşüm zincirleri atanır; sızıntı riski ortadan kalkar.

table_chart Pandas

fillna(), dropna(), get_dummies() ve apply() fonksiyonları hızlı veri ön işleme için temel Python kütüphanesidir.

bolt Apache Spark / Dask

Belleğe sığmayan büyük veri setleri için dağıtık ön işleme çerçeveleri; aynı dönüşümleri ölçekli uygular.

Pipeline ile Veri Sızıntısını Önleme

Veri ön işlemenin en kritik hatası, test setindeki bilgiyi eğitime sızdırmaktır (data leakage). Örneğin tüm veri setindeki ortalamayı hesaplayıp hem eğitim hem teste uygulamak — standartlaştırma parametreleri test setini 'görmüş' olur. Doğru yaklaşım: fit() yalnızca eğitim seti üzerinde çalışır, transform() ise her iki sete ayrı ayrı uygulanır. scikit-learn Pipeline bu akışı otomatik olarak yönetir; cross-validation döngülerinde bile her fold için bağımsız fit/transform garantilenir.

NLP ve Görüntü Verilerinde Ön İşleme

Metin verilerinde ön işleme; tokenizasyon, stop word kaldırma, lemmatizasyon (kelime gövdesine indirme), lowercasing ve noktalama işareti temizleme adımlarını kapsar. Modern transformer modelleri (BERT, GPT) kendi tokenizer'larıyla bu adımları büyük ölçüde otomatize eder. Görüntü verilerinde ise yeniden boyutlandırma (resize), piksel normalleştirme ([0,1] veya ImageNet ortalaması çıkarma), veri artırma (data augmentation — döndürme, kırpma, renk bozma) temel adımlardır. Bu alandaki ön işleme, modelin veri çeşitliliğine genelleşmesini doğrudan etkiler.

Sık Sorulan Sorular

  • check_circle Veri ön işleme ne kadar zaman alır?: Gerçek dünya projelerinde veri bilimciler zamanlarının %60-80'ini bu aşamada geçirir. Veri kalitesi ne kadar düşükse bu oran o kadar artar.
  • check_circle Hangi ölçeklendirme yöntemini seçmeliyim?: Aykırı değer yoksa Min-Max veya Z-score ikisi de çalışır. Aykırı değer varsa Robust Scaler tercih edin. Karar ağaçları ve rastgele orman gibi ağaç tabanlı modeller ölçeklendirmeye ihtiyaç duymaz.
  • check_circle Eksik değerleri silmek mi yoksa doldurmak mı daha iyidir?: Eksik oran %5 altındaysa silme makuldür. Yüksek eksiklikte imputation tercih edilir. MCAR (tamamen rastgele eksik) durumunda ortalama/medyan; MNAR (değerin kendisiyle ilişkili eksiklik) durumunda model tabanlı imputation gerekir.
  • check_circle Derin öğrenme için veri ön işleme gerekli mi?: Evet, gereklidir. Derin öğrenme özellikleri kendisi öğrense de ham verinin normalleştirilmesi, etiketlerin encode edilmesi ve eksik değerlerin giderilmesi hâlâ zorunludur. Ön işleme olmadan eğitim yakınsamamayabilir.
  • check_circle Data preprocessing ile feature engineering arasındaki fark nedir?: Veri ön işleme var olan veriyi temizleyip modele uygun formata sokar; feature engineering ise var olan özelliklerden yeni anlamlı özellikler türetir. İkisi çakışır ama ön işleme 'hazırlık', feature engineering 'yaratım' odaklıdır.