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çekte olacak şekilde dönüştürmektir. Örneğin, aşağıdaki iki özelliği ele alalım:
X
özelliği 154 ile 24.917.482 arasında değişir.- Özellik
Y
, 5 ile 22 arasındaki aralığı kapsar.
Bu iki özellik çok farklı aralıkları kapsar. Normalleştirme, X
ve Y
değerlerini benzer bir aralığa (ör. 0-1) yayılacak ş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ı olduğunda gradyan inişi "seke"bilir ve yakınsama yavaşlayabilir. Bununla birlikte, Adagrad ve Adam gibi daha gelişmiş optimize ediciler, zaman içinde etkili öğrenme hızını değiştirerek bu soruna karşı koruma sağlar.
- Modellerin daha iyi tahminler yapmasına yardımcı olur. Farklı özelliklerin farklı aralıkları olduğunda, ortaya çıkan model biraz daha az faydalı tahminler yapabilir.
- Özellik değerleri çok yüksek olduğunda "NaN tuzağına" düşülmesini önlemeye yardımcı olur.
NaN, sayı değil ifadesinin kısaltmasıdır. Bir modeldeki değer, kayan nokta duyarlılığı sınırını aştığında sistem, değeri 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çeklendirme olmadan model, geniş aralıklı özelliklere çok fazla, dar aralıklı özelliklere ise yeterince dikkat etmez.
Net bir şekilde 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'dır.
Özellik A
ve Özellik B
nispeten dar aralıklara sahiptir. Ancak B
özelliği, A
özelliğinden 10 kat daha geniş bir kapsama sahiptir. Bu nedenle:
- Eğitimin başında model,
B
özelliğininA
özelliğinden on kat daha "önemli" olduğunu varsayar. - Eğitim, gerekenden daha uzun sürer.
- Elde edilen model optimum olmayabilir.
Normalleştirme yapılmaması nedeniyle oluşan genel hasar nispeten küçük olacaktır.Ancak yine de A Özelliği ve B Özelliği'nin aynı ölçekte (ör. -1,0 ila +1,0) normalleştirilmesini öneririz.
Şimdi de aralıkları daha farklı 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 +5.000, en yüksek değeri ise +1.000.000.000'dir.
Özellik C
ve Özellik D
'i normalleştirmezseniz modeliniz büyük olasılıkla ideal performans göstermez. Ayrıca, eğitimin yakınsaması çok daha uzun sürer veya yakınsama tamamen başarısız olabilir.
Bu bölümde, üç popüler normalleştirme yöntemi ele alınmaktadır:
- doğrusal ölçeklendirme
- Z puanı ölçeklendirme
- log ölçekleme
Bu bölümde ayrıca kırpma konusu da ele alınmaktadır. Kırpma, gerçek bir normalleştirme tekniği olmasa da düzensiz sayısal özellikleri daha iyi modeller üreten aralıklara dönüştürür.
Lineer ölçeklendirme
Doğrusal ölçeklendirme (daha yaygın olarak yalnızca ölçeklendirme olarak kısaltılır), kayan nokta değerlerini doğal aralıklarından standart bir aralığa (genellikle 0 ile 1 veya -1 ile +1) dönüştürme anlamına gelir.
Aşağıdaki koşulların tümü karşılandığında doğrusal ölçeklendirme iyi bir seçimdir:
- Verilerinizin alt ve üst sınırları zaman içinde fazla değişmez.
- Özellik, az sayıda veya hiç aykırı değer içermiyor ve bu aykırı değerler aşırı değil.
- Özellik, aralığına yaklaşık olarak eşit şekilde dağıtılır. Yani, histogramda çoğu değer için yaklaşık olarak eşit çubuklar gösterilir.
İnsan age
özelliğinin olduğunu varsayalım. Doğrusal ölçeklendirme, age
için iyi bir normalleştirme tekniğidir. Bunun nedeni:
- Yaklaşık alt ve üst sınırlar 0 ile 100 arasındadır.
age
, nispeten küçük bir aykırı değer yüzdesi içeriyor. Nüfusun yalnızca% 0,3'ü 100 yaşın üzerindedir.- Belirli yaşlar diğerlerine göre biraz daha iyi temsil edilse de büyük bir veri kümesi, her yaştan yeterli örnek içermelidir.
Alıştırma: Anlayıp anlamadığınızı kontrol edin
Modelinizde, farklı kişilerin net değerini tutannet_worth
adlı bir özellik olduğunu varsayalım. Doğrusal ölçeklendirme, net_worth
için iyi bir normalleştirme tekniği olur mu? Neden evet veya neden hayır?
Z puanı ölçeklendirme
Z puanı, bir değerin ortalamadan standart sapma sayısıdır. Örneğin, ortalamadan 2 standart sapma daha büyük olan bir değerin Z puanı +2,0'dır. Ortalamadan 1,5 standart sapma daha az olan bir değerin Z puanı -1,5'tir.
Bir özelliği Z puanı ölçeklendirmesiyle temsil etmek, bu ö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.
- Sağda, Z puanı ölçeklendirmesiyle normalleştirilmiş aynı dağılım.

Z puanı ölçeklendirmesi, yalnızca belirsiz bir normal dağılıma sahip olan aşağıdaki şekilde gösterilenler gibi veriler için de iyi bir seçimdir.

Veriler normal dağılımı veya normal dağılıma benzeyen bir dağılımı takip ettiğinde Z puanı iyi bir seçimdir.
Bazı dağılımların, aralığın büyük bir kısmında normal olabileceğini ancak yine de uç değerler içerebileceğini unutmayın. Örneğin, bir net_worth
özelliğindeki noktaların neredeyse tamamı 3 standart sapmaya rahatlıkla sığabilir ancak bu özelliğin birkaç örneği ortalamadan yüzlerce standart sapma uzakta olabilir. Bu gibi durumlarda, bu durumu ele almak için Z puanı ölçeklendirmesini başka bir normalleştirme biçimiyle (genellikle kırpma) birleştirebilirsiniz.
Alıştırma: Anlayıp anlamadığınızı kontrol edin
Modelinizin, on milyon kadının yetişkin boylarını içerenheight
adlı bir özellik üzerinde eğitildiğini varsayalım. Z puanı ölçeklendirmesi, height
için iyi bir normalleştirme tekniği olur mu? Neden evet veya neden hayır?
Logaritmik ölçeklendirme
Log ölçekleme, ham değerin logaritmasını hesaplar. Teoride, logaritma herhangi bir tabana sahip olabilir. Uygulamada ise log ölçeklendirme genellikle doğal logaritmayı (ln) hesaplar.
Veriler güç yasası dağılımına uygun olduğunda log ölçeklendirme yararlıdır. Basit bir ifadeyle, güç yasası dağılımı şu şekilde görünür:
X
'nın düşük değerleri,Y
'nın çok yüksek değerlerine karşılık gelir.X
değerleri arttıkçaY
değerleri hızla düşer. Dolayısıyla,X
yüksek değerlere sahipkenY
çok düşük değerlere sahiptir.
Film derecelendirmeleri, güç yasası dağılımına iyi bir örnektir. Aşağıdaki şekilde şunlara dikkat edin:
- Bazı filmler çok sayıda kullanıcı puanı almıştır. (
X
düşük değerleri,Y
yüksek değerlerine sahiptir.) - Çoğu filmin kullanıcı puanı sayısı çok düşüktür. (
X
yüksek değerleri,Y
düşük değerlerine sahiptir.)
Log ölçekleme, dağıtımı değiştirerek daha iyi tahminler yapacak bir modelin eğitilmesine yardımcı olur.
İkinci bir örnek olarak, kitap satışları aşağıdaki nedenlerle bir güç yasası dağılımına uygundur:
- Yayınlanan çoğu kitap çok az sayıda, belki yüz veya iki yüz kopya satar.
- Bazı kitaplar, binlerce kopya satarak orta düzeyde satış yapar.
- Yalnızca birkaç çok satan kitap bir milyondan fazla kopya satar.
Örneğin, kitap kapaklarının kitap satışlarıyla ilişkisini bulmak için doğrusal bir model eğittiğinizi varsayalım. Ham değerler üzerinde doğrusal bir model eğitimi, bir milyon kopya satan kitaplardaki kitap kapakları hakkında, yalnızca 100 kopya satan kitaplardaki kitap kapaklarından 10.000 kat daha güçlü bir şey bulmak zorunda kalır. Ancak tüm satış rakamlarının log ölçeklendirmesi, görevi çok daha uygulanabilir hale getirir. Örneğin, 100'ün logaritması şöyledir:
~4.6 = ln(100)
1.000.000'un logaritması ise:
~13.8 = ln(1,000,000)
Bu nedenle, 1.000.000'un logaritması, 100'ün logaritmasından yalnızca yaklaşık üç kat daha büyüktür. En çok satan bir kitap kapağının, az satan bir kitap kapağından yaklaşık üç kat daha etkili (bir şekilde) olduğunu tahmin edebilirsiniz.
Kırpma
Kırpma, uç değerlerin etkisini en aza indirmek için kullanılan bir tekniktir. Kısaca, kırpma genellikle aykırı değerlerin değerini belirli bir maksimum değerle sınırlar (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ı bölü konaklayan sayısı) temsil eden roomsPerPerson
adlı bir özellik içeren bir veri kümesi olduğunu düşünün. Aşağıdaki grafik, özellik değerlerinin% 99'dan fazlasının normal dağılıma (kabaca 1,8 ortalama ve 0,7 standart sapma) uygun olduğunu gösteriyor. Ancak bu özellik, bazıları uç nokta olan birkaç aykırı değer içerir:

Bu uç değerlerin etkisini nasıl en aza indirebilirsiniz? Histogram, eşit dağılım, normal dağılım veya güç yasası dağılımı değildir. roomsPerPerson
değerinin maksimum değerini rastgele bir değerle (örneğin 4, 0) sınırlarsanız veya kırparsanız ne olur?

Özellik değerinin 4,0'da kırpılması, modelinizin 4,0'dan büyük tüm değerleri yoksaydığı anlamına gelmez. Bu, 4,0'dan büyük olan tüm değerlerin artık 4,0 olacağı anlamına gelir. Bu, 4.0'daki tuhaf tepeyi açıklar. Bu zorluğa rağmen, ölçeklendirilmiş özellik grubu artık orijinal verilerden daha kullanışlı.
Bir saniye bekleyin. Her aykırı değeri gerçekten de rastgele bir üst eşiğe düşürebilir misiniz? Model eğitirken evet.
Diğer normalleştirme biçimlerini uyguladıktan sonra da değerleri kırpabilirsiniz. Örneğin, Z puanı ölçeklendirmesi kullandığınızı ancak birkaç aykırı değerin mutlak değerlerinin 3'ten çok daha büyük olduğunu varsayalım. Bu durumda şunları yapabilirsiniz:
- 3'ten büyük olan Z puanları tam olarak 3 olur.
- Klip Z puanları -3'ten küçükse tam olarak -3 olur.
Kırpma, modelinizin önemsiz verilerde aşırı indeksleme yapmasını ö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 | $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ | Özellik, aralık boyunca çoğunlukla eşit olarak dağıtıldığında. Yassı (Flat-shaped) |
Z puanı ölçeklendirme | $$ x' = \frac{x - μ}{σ}$$ | Özellik normal dağılım gösterdiğinde (zirve ortalamaya yakın olduğunda). Çan şekli |
Logaritmik ölçeklendirme | $$ x' = log(x)$$ | Özellik dağıtımı, kuyruğun en az bir tarafında yoğun şekilde çarpık olduğunda Ağır kuyruk şekilli (Heavy Tail-shaped) |
Kırpma | $x > max$ ise $x' = max$olarak ayarlayın. $x < min$ ise $x' = min$ olarak ayarlayın. |
Özellik aşırı aykırı değerler içerdiğinde |
Alıştırma: Bilginizi test edin
Bir veri merkezinin verimliliğini, veri merkezinin içindeki 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 (Celsius) arasındadır. Ancak aşağıdaki istisnalar vardır:
- Yılda bir veya iki kez, aşırı sıcak günlerde
temperature
'da 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.
Aşağıdakilerden hangisi temperature
için makul bir normalleştirme tekniği olur?
1.000 değerleri hatalıdır ve kırpılmak yerine silinmelidir.
31 ile 45 arasındaki değerler geçerli veri noktalarıdır. Veri kümesinde, modeli iyi tahminler yapacak şekilde eğitmek için bu sıcaklık aralığında yeterli örnek olmadığı varsayıldığında bu değerler için kırpma işlemi yapmak iyi bir fikir olabilir. Ancak çıkarım sırasında, kırpılmış modelin 45 derece sıcaklık için 35 derece sıcaklıkla aynı tahmini yapacağını unutmayın.