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.