Makine Öğrenmesinde Veri Normalizasyonu ve Standardizasyonu

Ahmet Okan Arık
3 min readJun 11, 2020

Makine öğrenmesinde sıkça birbirleri yerine kullanılan iki terim olan normalizasyon ve standardizasyon aslında farklı şeyleri ifade etmektedir.

Normalizasyon, verileri 0 ve 1 arasında yeniden ölçekler. Bu işlem tüm parametrelerin aynı pozitif ölçeğe sahip olması gereken bazı durumlarda yararlı olabilir. Ancak aykırı değerlerin (outliers) kaybolmasına yol açar.

En sık kullanılan normalizasyon yöntemlerinden biri olan Feature Scaling, (Özellik Ölçekleme veya Min-Max Normalizasyonu) normal dağılımı esas alır ve her bir değerin ortalamadan olan uzaklığının standart sapmaya oranı ile bulunur. Bu metot ile değişkenlerin farklı ortalamalarda ve standart sapmaya sahip olmasına izin verilir ancak aynı aralıkta olmaları şartıyla.

Python’da yukarıda formüle edilmiş özellik ölçeklemeyi sklearn kütüphanesi aracılığı ile uygulayacak olursak:

Standardizasyon ise veriyi aynı ortalama (0) ve aynı standart sapmaya (1) sahip olması için yeniden ölçeklendirilmesidir. Peki verileri niçin standardize etme gereği duyarız?

Çok değişkenli analizlerde değişkenlerin standartlaştırılması doğru analiz için önemli rol oynamaktadır. Farklı ölçeklerde ölçülen değişkenler analize eşit katkıda bulunamaz. Örneğin 0–100 aralığında ve 0–1 aralığında yer alan iki feature üzerinde standardizasyon gerçekleştirilmezse 0–100 aralığındaki değişkenin modeldeki ağırlığı daha fazla olacaktır. Verileri karşılaştırılabilir ölçeklere dönüştürmek bu sorunu önleyebilir. Veri standardizasyonu ile bu ölçeklendirmeyi sağlayabiliriz.

En sık kullanılan standardizasyon türlerinden olan Z Score Scaling, veri setindeki tüm değişkenlerin ortalamasının sıfıra standart sapmasının ise bire eşitlendiği bir standardizasyon yöntemidir.

Yukarıdaki görselde olduğu gibi formüle edilmektedir. Yani her bir gözlem ile gözlemlerin ortalamasının farkının standart sapmaya oranı diyebiliriz. Az önce oluşturduğumuz array üzerinde Z-Score standardizasyonu uygulayacak olursak:

Peki bu işlemler niçin önemli?

Hiperparametreleri optimum şekilde ayarlanmış modellerde dahi veri dağılımının gerektirdiği standardizasyon veya normalizasyon yöntemi varsa model doğruluğunu bu preprocessing işlemleri ile arttırabiliriz.

Support Vector Machine, K-NN, lojistik regresyon gibi algoritmalar ile birlikte PCA (Temel Bileşen Analizi) işleminde de önemli rol oynayan standardizasyonun etkisini aşağıdaki grafiklerde ve kod çıktısında prediction accuracy değerini %81.48'den %98.15'e çıkardığını görebiliriz.

Out:

Prediction accuracy for the normal test dataset with PCA
81.48%
Prediction accuracy for the standardized test dataset with PCA
98.15%
PC 1 without scaling:
[ 1.76e-03 -8.36e-04 1.55e-04 -5.31e-03 2.02e-02 1.02e-03 1.53e-03
-1.12e-04 6.31e-04 2.33e-03 1.54e-04 7.43e-04 1.00e+00]
PC 1 with scaling:
[ 0.13 -0.26 -0.01 -0.23 0.16 0.39 0.42 -0.28 0.33 -0.11 0.3 0.38
0.28]

Haliyle model doğruluğunu üzerinde bu kadar etkisi olan bir preprocessing işlemini de modellerimizde değerlendirmemek olmaz :)

Teşekkürler.

--

--