Verilerinizi istatistiksel ve görselleştirme teknikleriyle inceledikten sonra, modelinizin daha etkili bir şekilde eğitilmesine yardımcı olacak şekilde dönüştürmeniz gerekir. Normalleştirmenin amacı, özellikleri benzer bir ölçeğe dönüştürmektir. Örneğin, aşağıdaki iki özelliği ele alalım:
X
özelliği 154 ile 24.917.482 arasındadır.Y
özelliği 5 ile 22 arasındadır.
Bu iki özellik çok farklı aralıkları kapsar. Normalleştirme, X
ve Y
değerlerini benzer bir aralığa (ör. 0 ila 1) sahip olacak şekilde değiştirebilir.
Normalleştirme aşağıdaki avantajları sağlar:
- Eğitim sırasında modellerin daha hızlı yakınlaşmasına yardımcı olur. Farklı özelliklerin farklı aralıkları varsa gradyan azalma "zıplama" yapabilir ve yakınsama işlemini yavaşlatabilir. Bununla birlikte, Adagrad ve Adam gibi daha gelişmiş optimizatörler, etkili öğrenme hızını zaman içinde değiştirerek bu soruna karşı koruma sağlar.
- Modellerin daha iyi tahminler çıkarmasına yardımcı olur. Farklı özelliklerin farklı aralıkları varsa ortaya çıkan model biraz daha az yararlı tahminler yapabilir.
- Özellik değerleri çok yüksek olduğunda "NaN tuzağına" düşmekten kaçınmaya yardımcı olur.
NaN, sayı değil ifadesinin kısaltmasıdır. Bir modeldeki değer, kayan nokta hassasiyet sınırını aştığında sistem, değeri bir sayı yerine
NaN
olarak ayarlar. Modeldeki bir sayı NaN olduğunda, modeldeki diğer sayılar da sonunda NaN olur. - Modelin her özellik için uygun ağırlıkları öğrenmesine yardımcı olur. Özellik ölçeklendirmesi olmadan model, geniş aralıkları olan özelliklere çok fazla, dar aralıkları olan özelliklere ise yeterince dikkat etmez.
Farklı aralıkları kapsayan sayısal özellikleri (ör. yaş ve gelir) normalleştirmenizi öneririz.
Ayrıca, geniş bir aralığı kapsayan tek bir sayısal özelliği (ör. city population.
) normalleştirmenizi öneririz.
Aşağıdaki iki özelliği göz önünde bulundurun:
A
özelliğinin en düşük değeri -0,5, en yüksek değeri ise +0,5'tir.B
özelliğinin en düşük değeri -5,0, en yüksek değeri ise +5,0'tır.
A
ve B
özellikleri nispeten dar aralığa sahiptir. Ancak B
özelliğinin kapsamı, A
özelliğinin kapsamından 10 kat daha geniştir. Bu nedenle:
- Eğitimin başında model,
B
özelliğininA
özelliğinden on kat daha "önemli" olduğunu varsayar. - Eğitim olması gerekenden daha uzun sürer.
- Elde edilen model optimum olmayabilir.
Normalleştirme yapılmamasından kaynaklanan genel hasar nispeten küçük olacaktır.Yine de A özelliğini ve B özelliğini aynı ölçeğe (ör. -1,0 ila +1,0) normalleştirmenizi öneririz.
Şimdi, aralıklarda daha fazla farklılık olan iki özelliği ele alalım:
C
özelliğinin en düşük değeri -1, en yüksek değeri ise +1'dir.D
özelliğinin en düşük değeri +5000, en yüksek değeri ise +1.000.000.000'dır.
C
ve D
özelliklerini normalleştirmezseniz modeliniz muhtemelen optimum olmayacaktır. Ayrıca, eğitimin yakınsaması çok daha uzun sürer veya tamamen yakınsamayabilir.
Bu bölümde, üç popüler normalleştirme yöntemi ele alınmaktadır:
- doğrusal ölçeklendirme
- Z puanı ölçeklendirmesi
- günlük ölçeklendirme
Bu bölümde ayrıca kırpma da ele alınmaktadır. Gerçek bir normalleştirme tekniği olmasa da kırpma, düzensiz sayısal özellikleri daha iyi modeller oluşturan aralıklara dönüştürür.
Lineer ölçeklendirme
Doğrusal ölçeklendirme (genellikle ölçeklendirme olarak kısaltılır), kayan nokta değerlerini doğal aralıklarından standart bir aralığa (genellikle 0 ila 1 veya -1 ila +1) dönüştürme anlamına gelir.
İşlemi görmek için simgeyi tıklayın.
Doğrusal ölçeklendirme, aşağıdaki koşulların tümü karşılanıyorsa iyi bir seçimdir:
- Verilerinizin alt ve üst sınırları zaman içinde çok fazla değişmez.
- Özellik çok az sayıda aykırı değer içerir veya hiç aykırı değer içermez ve bu aykırı değerler aşırı değildir.
- Özellik, aralığı boyunca yaklaşık olarak eşit şekilde dağıtılmıştır. Yani histogram, çoğu değer için kabaca eşit çubuklar gösterir.
age
adlı kullanıcının bir özellik olduğunu varsayalım. Çizgisel ölçeklendirme, age
için iyi bir normalleştirme tekniğidir çünkü:
- Yaklaşık alt ve üst sınırlar 0 ile 100 arasındadır.
age
, nispeten küçük bir oranda aykırı değer içeriyor. Nüfusun yalnızca yaklaşık% 0,3'ü 100 yaşın üzerinde.- Belirli yaş grupları diğerlerinden biraz daha iyi temsil edilse de büyük bir veri kümesi tüm yaş gruplarına ait yeterli örnek içermelidir.
Alıştırma: Anladığınızdan emin olun
Modelinizde farklı kişilerin net değerini içerennet_worth
adlı bir özellik olduğunu varsayalım. Doğrusal ölçeklendirme, net_worth
için iyi bir normalleştirme tekniği midir? Neden evet veya neden hayır?
Yanıtı görmek için simgeyi tıklayın.
Z puanı ölçeklendirmesi
Z puanı, bir değerin ortalamadan sapma sayısıdır. Örneğin, ortalamadan 2 standart sapma daha büyük bir değerin Z puanı +2,0'dır. Ortalamadan 1,5 standart sapma az bir değerin Z puanı -1,5'tir.
Bir özelliği Z puanı ölçeğiyle temsil etmek, söz konusu özelliğin Z puanını özellik vektöründe depolamak anlamına gelir. Örneğin, aşağıdaki şekilde iki histogram gösterilmektedir:
- Sol tarafta klasik bir normal dağılım gösterilmektedir.
- Sağ tarafta, Z puanı ölçeklendirmesine göre normalleştirilmiş aynı dağılım gösterilmektedir.

Z-skoru ölçeklendirmesi, aşağıdaki şekilde gösterilen ve yalnızca belirsiz bir şekilde normal dağılıma sahip veriler için de iyi bir seçimdir.

İşlemi görmek için simgeyi tıklayın.
Normal dağılım hakkında daha fazla bilgi edinmek için simgeyi tıklayın.
Veriler normal dağılım veya normal dağılıma benzer bir dağılım izliyorsa z-skoru iyi bir seçimdir.
Bazı dağılımların, aralığın büyük bir kısmında normal olsa bile aşırı aykırı değerler içerebileceğini unutmayın. Örneğin, bir net_worth
özelliğindeki noktaların neredeyse tamamı 3 standart sapmaya sığabilir ancak bu özelliğin birkaç örneği ortalamadan yüzlerce standart sapma uzakta olabilir. Bu gibi durumlarda, Z-skoru ölçeklendirmesini başka bir normalleştirme biçimiyle (genellikle kırpma) birleştirerek bu durumu çözebilirsiniz.
Alıştırma: Anladığınızdan emin olun
Modelinizin, on milyon yetişkin kadının boylarını içerenheight
adlı bir özellik üzerinde eğitildiğini varsayalım. Z-skoru ölçeklendirme, height
için iyi bir normalleştirme tekniği mi? Neden evet veya neden hayır?
Yanıtı görmek için simgeyi tıklayın.
Günlük ölçeklendirme
Log ölçeklendirme, ham değerin logaritmasını hesaplar. Teoride, logaritma herhangi bir taban olabilir. Uygulamada ise logaritma ölçeği genellikle doğal logaritmayı (ln) hesaplar.
İşlemi görmek için simgeyi tıklayın.
Veriler kuvvet yasası dağılımına uygun olduğunda günlük ölçeklendirme faydalıdır. Basitçe söylemek gerekirse, kuvvetli yasa dağılımı aşağıdaki gibi görünür:
X
'ün düşük değerleriY
'un çok yüksek değerlerine sahiptir.X
değerleri arttıkçaY
değerleri hızla azalır. Sonuç olarak,X
'ün yüksek değerleriY
'ün çok düşük değerlerine sahiptir.
Film derecelendirmeleri, güç yasası dağılımına iyi bir örnektir. Aşağıdaki resimde aşağıdakilere dikkat edin:
- Birkaç filmin çok sayıda kullanıcı puanı var. (
X
'ün düşük değerleriY
'ün yüksek değerlerine sahiptir.) - Çoğu filmin çok az sayıda kullanıcı puanı vardır. (
X
'ün yüksek değerleriY
'ün düşük değerlerine sahiptir.)
Log ölçeklendirme, dağılımı değiştirir. Bu da daha iyi tahminler yapacak bir modelin eğitilmesine yardımcı olur.
İkinci örnek olarak kitap satışları, güç yasası dağılımına uygundur çünkü:
- Yayınlanan kitapların çoğu çok az sayıda (belki bir veya iki yüz) satılır.
- Bazı kitaplar binlerce adet satabilir.
- Yalnızca birkaç çok satan kitap bir milyondan fazla satabilir.
Örneğin, kitap kapaklarının kitap satışlarıyla olan ilişkisini bulmak için doğrusal bir model eğittiğinizi varsayalım. Ham değerlerle eğitilen doğrusal bir modelin, bir milyon kopyası satılan kitaplardaki kitap kapakları hakkında, yalnızca 100 kopyası satılan kitap kapaklarından 10.000 kat daha güçlü bir şey bulması gerekir. Ancak tüm satış rakamlarını logaritmik ölçeklendirmek, görevi çok daha uygulanabilir hale getirir. Örneğin, 100 sayısının logaritması:
~4.6 = ln(100)
1.000.000 sayısının logaritması ise:
~13.8 = ln(1,000,000)
Dolayısıyla, 1.000.000 sayısının logaritması, 100 sayısının logaritmasından yalnızca yaklaşık üç kat daha büyüktür. En çok satan bir kitabın kapağının, az satan bir kitabın kapağına kıyasla (bir açıdan) yaklaşık üç kat daha güçlü olabileceğini tahmin edebilirsiniz.
Kırpma
Kırpma, uç değerlerden kaynaklanan hataların etkisini en aza indirmek için kullanılan bir tekniktir. Özetlemek gerekirse, kırpma genellikle aykırı değerlerin değerini belirli bir maksimum değerle sınırlandırır (azaltır). Kırpma, tuhaf bir fikir olsa da çok etkili olabilir.
Örneğin, çeşitli evlerdeki oda sayısını (toplam oda sayısı, ev sakinlerinin sayısına bölünür) temsil eden roomsPerPerson
adlı bir özellik içeren bir veri kümesi düşünün. Aşağıdaki grafik, özellik değerlerinin% 99'unun normal dağılıma (yaklaşık 1,8 ortalama ve 0,7 standart sapma) uygun olduğunu gösterir. Ancak bu özellikte, bazıları aşırı olan birkaç aykırı değer bulunur:

Bu uç değerlerin etkisini nasıl en aza indirebilirsiniz? Bu histogram eşit dağılım, normal dağılım veya kuvvet yasası dağılımı değildir. roomsPerPerson
değerinin maksimum değerini 4, 0 gibi rastgele bir değere sabitleyebilir veya kesebilirsiniz.

Özellik değerinin 4,0'te kırpılması, modelinizin 4,0'tan büyük tüm değerleri yoksaydığı anlamına gelmez. Bunun yerine, 4,0'dan büyük olan tüm değerlerin 4,0 olduğu anlamına gelir. Bu, 4,0'taki tuhaf tepeyi açıklar. Bu artışa rağmen ölçeklendirilmiş özellik grubu artık orijinal verilerden daha kullanışlıdır.
Bir saniye bekleyin. Her aykırı değer için rastgele bir üst eşiğe inebilir misiniz? Model eğitirken evet.
Diğer normalleştirme biçimlerini uyguladıktan sonra değerleri kırpabilirsiniz. Örneğin, Z-skoru ölçeklendirmesini kullandığınızı ancak birkaç aykırı değerin mutlak değerlerinin 3'ten çok daha yüksek olduğunu varsayalım. Bu durumda şunları yapabilirsiniz:
- 3'ten büyük Z puanlarını tam 3 olacak şekilde kırpın.
- -3'ten düşük Z puanlarını tam olarak -3 olacak şekilde kırpın.
Kırpma, modelinizin önemsiz verilere aşırı derecede dizine eklemesini önler. Ancak bazı aykırı değerler aslında önemlidir. Bu nedenle, değerleri dikkatli bir şekilde kırpın.
Normalleştirme tekniklerinin özeti
Normalleştirme tekniği | Formül | Ne zaman kullanılır? |
---|---|---|
Lineer ölçeklendirme | Özellik sabit bir aralıkta eşit olarak dağıtıldığında | |
Z puanı ölçeklendirmesi | Özellik dağılımı aşırı sapmalar içermediğinde. | |
Günlük ölçeklendirme | Özellik, güç yasasına uygun olduğunda | |
Kırpma | ise olarak ayarlayın ise olarak ayarlayın |
Özellik aşırı sapmalar içeriyorsa. |
Alıştırma: Bilginizi test edin
Bir veri merkezinin üretkenliğini, veri merkezinde ölçülen sıcaklığa göre tahmin eden bir model geliştirdiğinizi varsayalım.
Veri kümenizdeki temperature
değerlerinin neredeyse tamamı 15 ile 30 (Celcius) arasındadır. Aşağıdakiler istisnadır:
- Yılda bir veya iki kez, aşırı sıcak günlerde
temperature
'te 31 ile 45 arasında birkaç değer kaydedilir. temperature
içindeki her 1.000. nokta, gerçek sıcaklık yerine 1.000 olarak ayarlanır.
temperature
için makul bir normalleştirme tekniği hangisi olur?