Özellik Ölçekleme: Min-Max Normalizasyon ile Standardizasyon Farkı
Karşılaştırma

Özellik Ölçekleme: Min-Max Normalizasyon ile Standardizasyon Farkı

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

Makine öğrenmesinde normalizasyon değerleri sabit bir aralığa sıkıştırır, standardizasyon ise her özelliği ortalaması sıfır ve standart sapması bir olacak biçimde yeniden ölçekler. Hangisinin seçileceğini verinin dağılımı, aykırı değerler ve kullanılan model belirler.

Bir bakışta

  1. Buradaki normalizasyon veritabanı normalizasyonu değildir. Söz konusu olan, makine öğrenmesinde sayısal özelliklerin ölçeğini birbirine yaklaştırmaktır.
  2. Min-max normalizasyon sınırları belli, aykırı değeri az özellikler için uygundur. Tek bir uç değer en büyük değeri belirlediği için diğer bütün değerleri dar bir alana sıkıştırabilir.
  3. Standardizasyon yaklaşık normal dağılan veride iyi çalışır. Çok sayıda aykırı değer varsa ortalama ve varyansa dayalı ölçekleme de bozulur; dayanıklı ölçekleyiciler devreye girer.
  4. Ölçekleyici yalnız eğitim verisine uydurulur. Test verisinin istatistikleriyle ölçekleme yapmak, modelin göremeyeceği bilgiyi sızdırır.

Önce terim: hangi normalizasyondan söz ediyoruz?

"Normalizasyon" kelimesi veri alanında birkaç farklı şey için kullanılır ve karışıklığın kaynağı budur. Veritabanı tasarımında normalizasyon, tablolardaki tekrarı azaltmak için veriyi ilişkili tablolara bölmek demektir; bu sayfanın konusu değildir. Makine öğrenmesinde ise normalizasyon, sayısal özellikleri benzer ölçeklere getirme işlerinden biridir.

Makine öğrenmesi içinde bile kelimenin anlamı kaynağa göre değişir. Google'ın makine öğrenmesi kursu normalizasyonu genel bir başlık olarak kullanır ve altında doğrusal ölçekleme, z-skor ölçekleme, logaritmik ölçekleme ve kırpma tekniklerini sayar. scikit-learn ise Normalizer adlı sınıfıyla bambaşka bir işlem yapar: özellikleri değil, her bir örneği, yani her satırı birim uzunluğa ölçekler.

Gündelik kullanımda "normalizasyon mu standardizasyon mu" sorusu çoğu zaman şu anlama gelir: min-max ölçekleme mi, z-skor ölçekleme mi? Bu sayfada da bu anlamda kullanılmıştır.

İki yöntem nasıl hesaplanır?

Min-max normalizasyon, bir özelliğin en küçük değerini çıkarır ve sonucu en büyük ile en küçük değer arasındaki farka böler. Sonuçta özellik, en küçük değerin sıfıra, en büyük değerin bire karşılık geldiği bir aralığa taşınır. scikit-learn'de bu iş MinMaxScaler ile yapılır; istenirse farklı bir hedef aralık da seçilebilir.

Standardizasyon, her değerden özelliğin ortalamasını çıkarır ve sonucu standart sapmaya böler. Ortaya çıkan değerin anlamı nettir: değerin ortalamadan kaç standart sapma uzakta olduğu. Dönüşümden sonra özelliğin ortalaması sıfır, varyansı birdir; ama değerler sabit bir aralığa hapsolmaz. scikit-learn belgeleri, birçok tahmin edicinin özellikler aşağı yukarı standart normal dağılıma benzemediğinde kötü davranabileceğini, bu yüzden standardizasyonun yaygın bir gereklilik olduğunu belirtir. Bu işi StandardScaler sınıfı yapar.

İki yöntem de dağılımın şeklini değiştirmez; yalnız konumunu ve genişliğini değiştirir. Çarpık bir özellik ölçeklemeden sonra da çarpıktır. Dağılımın biçimini düzeltmek gerekiyorsa logaritmik dönüşüm gibi başka araçlar gerekir.

Şekil 1

Üç ölçekleyici, üç farklı veri durumu

Min-max normalizasyonStandardizasyon (z-skor)Dayanıklı ölçekleme
HesapEn küçüğü çıkar, aralığa bölOrtalamayı çıkar, standart sapmaya bölMedyan ve çeyrekler arası aralık
SonuçSabit aralıkOrtalama sıfır, varyans birMerkez ve yayılım dayanıklı
Uygun veriSınırları belli, aykırı değeri azYaklaşık normal dağılımÇok sayıda aykırı değer
Aykırı değere tepkiÇok duyarlıDuyarlıDayanıklı
scikit-learn sınıfıMinMaxScalerStandardScalerRobustScaler
Kaynak: Sayfa içeriği; scikit-learn ve Google ML Crash Course belgelerinden derlendi.Mindset Institute

Hangi durumda hangisi?

Google'ın kursu doğrusal ölçekleme için üç koşulu birlikte arar: özelliğin alt ve üst sınırları zaman içinde değişmemeli, aykırı değerler az ya da hiç olmamalı ve değerler aralık boyunca kabaca düzgün dağılmalıdır. Yaş, yüzde ile ifade edilen oranlar ya da piksel yoğunluğu gibi doğal sınırları olan özellikler bu tanıma uyar.

Aynı kurs z-skor ölçeklemeyi, veri normal dağılıma ya da ona benzer bir dağılıma uyduğunda iyi bir seçim olarak tanımlar. Boy, ölçüm hataları ya da birçok küçük etkinin toplamından oluşan büyüklükler buna örnektir.

Verinin çoğu normal dağılsa da uç değerler içeriyorsa kurs z-skor ölçeklemeyi kırpmayla birleştirmeyi önerir; ama bazı aykırı değerlerin önemli olduğunu, kırpmanın dikkatle yapılması gerektiğini de vurgular. scikit-learn belgeleri ise çok sayıda aykırı değer olduğunda ortalama ve varyansa dayalı ölçeklemenin iyi çalışmayacağını, RobustScaler'ın daha dayanıklı merkez ve yayılım tahminleri kullandığını belirtir. Satış tutarları ya da kitap satışları gibi kuvvet yasasına uyan verilerde ise kurs logaritmik ölçeklemeyi önerir.

Seyrek veride ayrı bir kural vardır: scikit-learn belgelerine göre seyrek veriyi merkezlemek seyrekliği bozar; bu tür veri için MaxAbsScaler önerilir.

Hangi modeller ölçeklemeye ihtiyaç duyar?

Ölçeklemenin değeri, modelin özellikler arasındaki büyüklük farkından ne kadar etkilendiğine bağlıdır.

Uzaklık ya da benzerlik hesaplayan yöntemler en duyarlı gruptur. En yakın komşu ve k-ortalamalar gibi yöntemlerde, değerleri büyük olan bir özellik uzaklığı tek başına belirler. Destek vektör makinelerinin RBF çekirdeği ve doğrusal modellerdeki düzenlileştirme cezaları da scikit-learn belgelerine göre özelliklerin sıfır çevresinde merkezlendiğini ya da benzer büyüklükte varyansa sahip olduğunu varsayabilir. Belge, varyansı ötekilerden çok büyük bir özelliğin amaç fonksiyonuna hâkim olup modelin diğer özelliklerden öğrenmesini engelleyebileceğini anlatır.

Gradyan inişiyle eğitilen modellerde, sinir ağları dahil, ölçekleme eğitimin kararlılığını ve hızını etkiler. Google'ın kursu, normalizasyonun modellerin daha hızlı yakınsamasına ve her özellik için uygun ağırlıklar öğrenmesine yardımcı olduğunu belirtir.

Karar ağaçları ve bunlara dayanan rastgele orman ya da gradyan artırma modelleri ise ölçeklemeden pratikte etkilenmez; çünkü bölme kararları değerlerin sırasına bakar, büyüklüğüne bakmaz. Bu modellerde ölçekleme zararsızdır ama genellikle kazanç getirmez.

Doğru sıra: sızıntısız ölçekleme

Ölçeklemede en sık ve en sinsi hata, ölçekleyiciyi tüm veriye uydurup sonra veriyi eğitim ve test olarak bölmektir. Bu durumda test verisinin en küçük, en büyük ya da ortalama değeri eğitim sürecine sızar ve model değerlendirmede olduğundan iyi görünür.

Doğru sıra şöyledir: önce veri eğitim ve test olarak bölünür. Ölçekleyici yalnız eğitim verisine uydurulur, yani ortalama, standart sapma ya da en küçük ve en büyük değerler yalnız eğitim verisinden hesaplanır. Aynı dönüşüm, aynı istatistiklerle test verisine ve daha sonra gerçek kullanımdaki yeni verilere uygulanır. scikit-learn belgeleri StandardScaler'ın tam da bunun için, eğitim kümesinde hesapladığı istatistikleri test kümesine yeniden uygulayabilecek biçimde tasarlandığını ve bu nedenle bir Pipeline'ın ilk adımlarında kullanılmaya uygun olduğunu belirtir.

Google'ın kursu da aynı uyarıyı tahmin tarafından yapar: eğitimde bir özelliği normalize ettiyseniz, tahmin yaparken de aynı özelliği normalize etmeniz gerekir. Çapraz doğrulamada ölçekleyiciyi Pipeline içinde tutmak, her katmanda bu sıranın kendiliğinden korunmasını sağlar.

Şekil 2

Ölçekleyici yalnız eğitim verisinden öğrenir

  1. Veriyi bölEğitim ve test kümeleri ölçeklemeden önce ayrılır.
  2. Eğitime uydurOrtalama, sapma ya da sınırlar yalnız eğitimden hesaplanır.
  3. Eğitimi dönüştür ve modeli kurModel ölçeklenmiş eğitim verisiyle eğitilir.
  4. Teste aynı dönüşümü uygulaEğitimden gelen istatistiklerle, yeniden uydurmadan.
  5. Canlıda da aynısını kullanÖlçekleyici modelle birlikte saklanır ve yeni veriye uygulanır.
Kaynak: Sayfa içeriği; scikit-learn ve Google ML Crash Course.Mindset Institute

Mindset programlarında veri hazırlığını nerede çalışırsınız?

Data Science Uzmanlığı Sertifika Programı, Pandas ile veri işlemeden makine öğrenmesi temellerine ve model optimizasyonuna uzanan akışında ölçekleme gibi ön işleme kararlarını modelle birlikte ele alır; veri hazırlığında yapılan küçük hataların model başarısını nasıl yanılttığını görmek isteyen analistler için uygundur.

Veri ön işleme ve özellik mühendisliğine ayrı bir modül olarak odaklanmak isteyenler Makine Öğrenmesi (Uygulamalı) Programı'nı, istatistik temelini güçlendirmek isteyenler Veri Bilimi Sertifika Programı'nı değerlendirebilir.

İlgili Mindset programı

Data Science Uzmanlığı Sertifika Programı

Sık sorulanlar

Sık sorulan sorular

Normalizer sınıfı min-max normalizasyonla aynı şey mi?

Hayır. scikit-learn'deki Normalizer özellikleri değil her bir örneği, yani her satırı birim uzunluğa ölçekler. Belgelere göre bu işlem, iki örnek arasındaki benzerliği nokta çarpımı ya da bir çekirdek fonksiyonuyla ölçecekseniz işe yarar; örneğin metin belgelerini kelime sayılarından bağımsız olarak karşılaştırmak için. Özellikleri ortak bir aralığa getirmek istiyorsanız MinMaxScaler kullanılır.

Hedef değişkeni de ölçeklemek gerekir mi?

Çoğu klasik modelde gerekmez; ölçekleme genellikle girdi özelliklerine uygulanır. Ancak sinir ağları gibi gradyanla eğitilen modellerde hedefin çok büyük değerler alması eğitimi zorlaştırabilir ve hedefin de ölçeklenmesi yardımcı olur. Bu durumda tahminleri raporlamadan önce ters dönüşümle orijinal birime geri çevirmek gerekir; aksi hâlde hata ölçütleri yanlış yorumlanır.

Kategorik değişkenler ölçeklenir mi?

Kategorik değişkenler önce sayısal biçime, örneğin her kategori için bir sütunun sıfır ya da bir aldığı kodlamaya dönüştürülür. Bu tür ikili sütunlar zaten dar bir aralıktadır ve çoğu durumda ayrıca ölçeklenmez. Sıralı kategorilere atanmış sayılar ise ölçeklenebilir, ama önce bu sayıların gerçekten anlamlı bir sıra ve aralık taşıyıp taşımadığına karar vermek gerekir.

Yeni gelen veri eğitimdeki aralığın dışındaysa ne olur?

Min-max normalizasyonda eğitimde görülen en büyük değerin üzerindeki yeni bir değer, hedef aralığın dışına düşer. Bu bir hata değildir ama modelin bu bölgeyi hiç görmediğinin işaretidir. Bu tür değerlerin sıklığını izlemek, gerekirse kırpma uygulamak ve sınırlar kalıcı olarak değiştiyse modeli yeni veriyle yeniden eğitmek gerekir. Standardizasyonda sabit aralık olmadığı için sorun daha az görünür, ama dağılım kayması yine izlenmelidir.

Ölçeklemeyi bilmeden yapmak modelin başarısını düşürür mü?

Ağaç tabanlı modellerde genellikle fark yaratmaz. Uzaklık tabanlı yöntemlerde, düzenlileştirilmiş doğrusal modellerde ve sinir ağlarında ise ölçeklemenin yapılmaması ya da yanlış yapılması, büyük değerli özelliklerin modele hâkim olmasına ve eğitimin yavaşlamasına yol açabilir. En sağlam yol, ölçekleyiciyi Pipeline içinde tutup farklı ölçekleme seçeneklerini çapraz doğrulamayla karşılaştırmaktır.

Makine Öğrenmesinde Normalizasyon mu Standardizasyon mu?