Feature scaling, makine öğrenmesi modellerinde girdi özelliklerinin (features) ortak bir ölçeğe dönüştürülmesi işlemidir. Doğru scaling yöntemi seçimi, model performansını doğrudan etkiler; özellikle mesafe tabanlı ve gradyan tabanlı algoritmalarda bu adım olmazsa olmazdır. Bu yazıda normalizasyon ve standardizasyon arasındaki farkları, hangi durumda hangisini tercih etmeniz gerektiğini ve uygulama sürecinde dikkat edilmesi gereken noktaları adım adım ele alıyoruz.
Normalizasyon ve Standardizasyon Temel Farkları
Feature scaling'in iki popüler yöntemi normalizasyon (min-max scaling) ve standardizasyondur (Z-score normalization). Normalizasyon, veriyi 0-1 aralığına sıkıştırırken; standardizasyon, verinin ortalamasını 0, standart sapmasını 1 yapar. Hangisini kullanacağınız, veri dağılımına ve kullanacağınız algoritmaya bağlıdır.
Normalizasyon (Min-Max Scaling)
Formül: X_scaled = (X - X_min) / (X_max - X_min). Aykırı değerlere karşı hassastır çünkü min ve max değerleri tüm dönüşümü belirler. Veri belirli bir aralıkta (örneğin piksel değerleri 0-255) sınırlıysa veya dağılım bilinmiyorsa tercih edilebilir.
Standardizasyon (Z-Score)
Formül: X_scaled = (X - μ) / σ. Aykırı değerlere normalizasyona göre daha dayanıklıdır. Verinin normal dağılıma yakın olması durumunda daha iyi sonuç verir. Özellikle destek vektör makineleri (SVM), lojistik regresyon ve yapay sinir ağları gibi gradyan tabanlı modellerde yaygın olarak kullanılır. Detaylı bilgi için Destek Vektör Makineleri: Çekirdek Fonksiyonları ile Sınıflandırma Rehberi yazımıza göz atabilirsiniz.
Feature Scaling Ne Zaman Zorunludur?
Mesafe hesaplamalarına dayanan algoritmalar (K-En Yakın Komşu, K-Means, SVM) özelliklerin ölçeğine duyarlıdır. Aynı şekilde gradyan inişi kullanan modeller (lojistik regresyon, yapay sinir ağları) da scaling olmadan yavaş yakınsar. Karar ağaçları ve rastgele orman gibi ağaç tabanlı modeller ise ölçekten etkilenmez, ancak yine de bazı durumlarda performansı artırabilir. K-Means vs DBSCAN: Kapsamlı Kümeleme Algoritması Karşılaştırması yazımızda mesafe tabanlı algoritmaların scalinge olan bağımlılığını daha detaylı inceleyebilirsiniz.
Pratik Kontrol Listesi: Feature Scaling Uygulama Adımları
Aşağıdaki kontrol listesi, feature scaling sürecinizi hatasız yürütmenize yardımcı olacak:
- Veri dağılımını kontrol edin: Normal dağılıma yakınsa standardizasyon, sınırlı aralıktaysa normalizasyon tercih edin.
- Aykırı değerleri inceleyin: Aykırı değer varsa normalizasyon yerine standardizasyon veya sağlam scaling (RobustScaler) kullanmayı düşünün.
- Test setini ayrı ölçeklendirin: Scaling parametrelerini (min, max, ortalama, standart sapma) yalnızca eğitim setinden hesaplayın ve test setine aynı parametreleri uygulayın. Veri sızıntısını önler.
- Pipeline kullanın: Scikit-learn'de Pipeline kullanarak scaling ve model eğitimini tek bir adımda birleştirin. Bu, çapraz doğrulama sırasında her fold için doğru scaling yapılmasını sağlar.
- Model tipine göre seçim yapın: Gradyan tabanlı modellerde standardizasyon genellikle daha iyidir. KNN ve K-Means gibi mesafe tabanlı modellerde her iki yöntem de işe yarar, ancak standardizasyon daha yaygındır.
- Deneyin ve karşılaştırın: Aynı modeli scaling yapmadan, normalizasyonla ve standardizasyonla eğitin; validasyon metriklerini karşılaştırarak en iyisini seçin.
Sık Yapılan Hatalar
Veri sızıntısı: Scaling parametrelerini tüm veri setinden hesaplamak, test setinin eğitim setine sızmasına neden olur. Her zaman eğitim setinden hesaplayın.
Yanlış yöntem seçimi: Aykırı değerli bir veride normalizasyon kullanmak, normal verileri dar bir aralığa sıkıştırarak bilgi kaybına yol açar.
Scaling'i unutmak: Özellikle düzenlileştirme (regularization) kullanıyorsanız, scaling yapılmazsa düzenlileştirme farklı özellikleri adil olmayan şekilde cezalandırabilir. Bu konuda L1 ve L2 Düzenlileştirme: Lasso ve Ridge Arasındaki Farklar yazımızda scalingin önemini daha detaylı bulabilirsiniz.
Hangi Scaling Ne Zaman Kullanılmalı?
| Algoritma | Önerilen Scaling | Nedeni |
|---|---|---|
| K-En Yakın Komşu (KNN) | Standardizasyon veya Normalizasyon | Mesafe hesaplamaları ölçeğe duyarlıdır. |
| Destek Vektör Makineleri (SVM) | Standardizasyon | Gradyan inişi ve çekirdek fonksiyonları. |
| Lojistik Regresyon | Standardizasyon | Gradyan inişi yakınsaması için. |
| Yapay Sinir Ağları | Standardizasyon | Aktivasyon fonksiyonlarının doygunluğunu önler. |
| K-Means | Standardizasyon | Öklid mesafesi kullanır. |
| Karar Ağaçları / Rastgele Orman | Gerekli değil | Ölçekten bağımsızdır, ancak yine de uygulanabilir. |
Sonuç
Feature scaling, model başarımını doğrudan etkileyen kritik bir ön işleme adımıdır. Doğru yöntemi seçmek için veri dağılımınızı analiz edin, seçtiğiniz algoritmanın scaling gereksinimini göz önünde bulundurun ve her zaman test setini eğitim setinden bağımsız ölçeklendirin. Kontrol listemizi uygulayarak yaygın hatalardan kaçınabilir ve modellerinizin performansını artırabilirsiniz.
Sık Sorulan Sorular
Feature scaling neden gereklidir?
Feature scaling, farklı ölçeklerdeki özelliklerin model tarafından eşit ağırlıkta değerlendirilmesini sağlar. Özellikle mesafe tabanlı ve gradyan tabanlı algoritmalarda, büyük ölçekli özelliklerin küçük ölçeklilere baskın gelmesini önler ve modelin daha hızlı yakınsamasına yardımcı olur.
Normalizasyon ve standardizasyon arasındaki temel fark nedir?
Normalizasyon (min-max scaling) veriyi 0-1 aralığına sıkıştırır ve aykırı değerlere karşı hassastır. Standardizasyon (Z-score) ise verinin ortalamasını 0, standart sapmasını 1 yapar ve aykırı değerlere karşı daha dayanıklıdır. Hangi yöntemin seçileceği veri dağılımına ve kullanılan algoritmaya bağlıdır.
Test seti için scaling nasıl yapılmalıdır?
Scaling parametreleri (min, max, ortalama, standart sapma) yalnızca eğitim setinden hesaplanmalı ve test setine aynı parametreler uygulanmalıdır. Bu, veri sızıntısını önler ve modelin gerçek performansını doğru şekilde değerlendirmenizi sağlar.
Karar ağaçları gibi modellerde feature scaling gerekli midir?
Karar ağaçları ve rastgele orman gibi ağaç tabanlı modeller ölçekten etkilenmez, çünkü bölünmeler özellik değerlerinin sıralamasına dayanır. Bununla birlikte, bazı durumlarda scaling performansı iyileştirebilir, ancak zorunlu değildir.






