Sayısal veri: Normalleştirme

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ğinin A ö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.

0 ile 1 (dahil) arasındaki standart aralığa ölçeklendirmek için aşağıdaki formülü kullanın:

x=(xxmin)/(xmaxxmin)

Bu örnekte:

  • x, ölçeklendirilmiş değerdir.
  • x, orijinal değerdir.
  • xmin, bu özelliğin veri kümesindeki en düşük değerdir.
  • xmax, bu özelliğin veri kümesindeki en yüksek değerdir.

Örneğin, doğal aralığı 100 ila 900 olan quantity adlı bir özellik düşünün. Belirli bir örnekte quantity değerinin doğal değerinin 300 olduğunu varsayalım. Bu nedenle, 300 değerinin normalleştirilmiş değerini aşağıdaki gibi hesaplayabilirsiniz:

  • x = 300
  • xmin = 100
  • xmax = 900
x' = (300 - 100) / (900 - 100)
x' = 200 / 800
x' = 0.25

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çeren net_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: Doğrusal ölçeklendirme, net_worth değerini normalleştirmek için iyi bir seçim değildir. Bu özellik çok sayıda aykırı değer içeriyor ve değerler birincil aralığında eşit olarak dağıtılmıyor. Çoğu kullanıcı, genel aralığın çok dar bir bandında yer alır.


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.
Şekil 4. İki histogram: Her ikisi de aynı dağılıma sahip normal dağılımları gösteriyor. Ham verileri içeren ilk histogramin ortalaması 200 ve standart sapması 30'dur. İlk dağılımın Z puanı sürümünü içeren ikinci histogramin ortalaması 0 ve standart sapması 1'dir.
Şekil 4. Normal dağılım için ham veri (sol) ve Z puanı (sağ).

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.

Şekil 5. Her biri bir platoya kadar dik bir artış, ardından nispeten hızlı bir düşüş ve kademeli bir düşüş gösteren, aynı şekle sahip iki histogram. Bir histogram, ham verilerin dağılımını gösterir. Diğer histogram ise Z puanı ölçeğiyle normalleştirildiğinde ham verilerin dağılımını gösterir.
            İki histogramın X eksenindeki değerler çok farklı.
            Ham veri histogramı 0 ila 29.000 aralığını kapsarken Z puanı ölçekli histogram -1 ile yaklaşık +4,8 arasında değişir.
Şekil 5. Klasik olmayan normal dağılım için ham veri (sol) ve Z-score ölçeklendirmesi (sağ).

Bir değeri (x) Z puanına göre normalleştirmek için aşağıdaki formülü kullanın:

x=(xμ)/σ

Bu örnekte:

  • x, Z puanıdır.
  • x ham değerdir. Yani x, normalleştirdiğiniz değerdir.
  • μ ortalamadır.
  • σ, standart sapmadır.

Örneğin:

  • mean = 100
  • standart sapma = 20
  • original value = 130

Bu nedenle:

  Z-score = (130 - 100) / 20
  Z-score = 30 / 20
  Z-score = +1.5

Klasik bir normal dağılımda:

  • Verilerin en az% 68,27'sinin Z puanı -1,0 ile +1,0 arasındadır.
  • Verilerin en az% 95,45'inin Z puanı -2,0 ile +2,0 arasındadır.
  • Verilerin en az% 99,73'ünün Z puanı -3,0 ile +3,0 arasındadır.
  • Verilerin en az% 99,994'ü -4,0 ile +4,0 arasında bir Z puanına sahiptir.
Z-skoru -4, 0'tan düşük veya +4, 0'tan yüksek olan veri noktaları nadirdir ancak gerçekten de aykırı değerler midir? Ayrık değerler, kesin bir tanımı olmayan bir kavram olduğundan kesin bir yanıt vermek mümkün değildir. Yeterince fazla sayıda örnek içeren bir veri kümesinin, bu "nadir" örneklerden en az birkaçını içereceğini unutmayın. Örneğin, klasik normal dağılıma uyan bir milyar örnek içeren bir özellikte, -4,0 ile +4,0 aralığının dışında bir puana sahip 60.000 örnek bulunabilir.

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çeren height 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: Bu özellik normal bir dağılıma uygun olduğundan height için Z puanı ölçeklendirmesi iyi bir normalleştirme tekniği olur. On milyon örnek, çok sayıda aykırı değer anlamına gelir. Bu aykırı değerler, modelin çok yüksek veya çok düşük Z puanlarıyla ilgili kalıpları öğrenmesi için yeterli olabilir.


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.

Bir değeri (x) logaritmik olarak normalleştirmek için aşağıdaki formülü kullanın:

x=ln(x)

Bu örnekte:

  • x, x değerinin doğal logaritmasıdır.
  • original value = 54.598

Bu nedenle, orijinal değerin logaritması yaklaşık 4,0'tür:

  4.0 = ln(54.598)

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ğerleri Y'un çok yüksek değerlerine sahiptir.
  • X değerleri arttıkça Y değerleri hızla azalır. Sonuç olarak, X'ün yüksek değerleri Y'ü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ğerleri Y'ün yüksek değerlerine sahiptir.)
  • Çoğu filmin çok az sayıda kullanıcı puanı vardır. (X'ün yüksek değerleri Y'ü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.

Şekil 6. Ham verileri ve ham verilerin günlük kaydını karşılaştıran iki grafik.
            Ham veri grafiğinde, başında çok sayıda kullanıcı derecelendirmesi ve ardından uzun bir kuyruk gösterilir. Günlük grafiği daha dengeli bir dağılıma sahiptir.
Şekil 6. Ham bir dağıtımı günlük kaydıyla karşılaştırma.

İ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:

Şekil 7. Neredeyse tüm değerlerin 0 ile 4 arasında gruplandırıldığı ancak kişi başına 17 odaya kadar uzanan çok uzun bir kuyruğun bulunduğu roomsPerPerson grafiği
Şekil 7. Genel olarak normaldir ancak tamamen normal değildir.

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.

Tüm değerlerin 0 ile 4,0 arasında olduğu roomsPerPerson grafiği. Nokta grafiği çan şeklindedir ancak 4, 0 değerinde anormal bir tepe vardır
Şekil 8. Özellik değerlerini 4,0'ta kırpma.

Ö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ğiFormülNe zaman kullanılır?
Lineer ölçeklendirme
x=xxminxmaxxmin
Özellik sabit bir aralıkta eşit olarak dağıtıldığında
Z puanı ölçeklendirmesi
x=xμσ
Özellik dağılımı aşırı sapmalar içermediğinde.
Günlük ölçeklendirme
x=log(x)
Özellik, güç yasasına uygun olduğunda
Kırpma x>max ise x=maxolarak ayarlayın
x<min ise x=min olarak ayarlayın
Özellik aşırı sapmalar içeriyorsa.

Alıştırma: Bilginizi test edin

Aşağıdaki dağılımı olan bir özelliği normalleştirmek için en uygun teknik hangisidir?

0 ile 200.000 arasındaki değerlere sahip bir veri kümesini gösteren histogram. Veri noktalarının sayısı 0 ile 100.000 arasındaki aralık için kademeli olarak artar ve ardından 100.000 ile 200.000 arasındaki aralık için kademeli olarak azalır.

Z puanı ölçeklendirmesi
Günlük ölçeklendirme
Kırpma
Lineer ölçeklendirme

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?

31 ile 45 arasındaki aykırı değerleri silin ancak 1.000 değerine sahip aykırı değerleri kırpın.
31 ile 45 arasındaki aykırı değerleri kırpın ancak 1.000 değerine sahip aykırı değerleri silin
Tüm aykırı değerleri kırpın
Tüm aykırı değerleri sil