Sayısal veri: Normalleştirme

Verilerinizi istatistiksel ve görselleştirme teknikleriyle inceledikten sonra verilerinizi, modelinizin daha etkili bir şekilde eğitilmesine yardımcı olacak şekilde dönüştürmeniz gerekir. Normalleştirmenin amacı, özellikleri benzer ö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ı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 şu faydaları sağlar:

  • Eğitim sırasında modellerin daha hızlı yakınlaşmasına yardımcı olur. Farklı özelliklerin aralıkları farklı olduğunda 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 +5,0'dır.

A özelliği ve B özelliği nispeten dar olabilir. Bununla birlikte, B özelliğinin kapsamı, A özelliğinin kapsama alanı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 yetersiz olabilir.

Normalleştirme yapılmamasından kaynaklanan genel hasar nispeten küçük olsa da A ve B özelliklerini aynı ölçeğe (ör. -1,0 ila +1,0) normalleştirmenizi öneririz.

Şimdi, aralıklar arasında daha fazla uyumsuzluk olan iki özelliği düşünün:

  • 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 alıştırma konuları ele alınmaktadır. Gerçek bir normalleştirme tekniği olmasa da kırpma, asi sayısal özellikleri daha iyi modeller üreten aralıklara yerleştirir.

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.

Aşağıdaki koşulların tümü karşılanıyorsa doğrusal ölçeklendirme 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, içerdiği aralıkta yaklaşık olarak eşit bir şekilde dağıtılmıştır. Yani histogram, çoğu değer için kabaca eşit çubuklar gösterir.

İnsan age değerinin 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şlar diğerlerinden biraz daha iyi temsil edilse de büyük bir veri kümesi tüm yaşlar için yeterli sayıda ö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?

Z puanını ölçeklendirme

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 düşük 1,5 standart sapma olan bir değerin Z puanı -1,5'tir.

Bir özelliği Z-puanı ölçeklendirme ile temsil etmek, o özelliğin Z-puanın özellik vektöründe depolanması anlamına gelir. Örneğin, aşağıdaki şekilde iki histogram gösterilmektedir:

  • Solda, klasik bir normal dağılım.
  • 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 veri içeren ilk histogramın ortalaması 200, standart sapması ise 30'dur. İlk dağılımın Z puanı sürümünü içeren ikinci histogramın ortalama değeri 0, standart sapma değeri ise 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 yükseliş, ardından nispeten hızlı bir düşüş ve kademeli bir azalma 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 ile 29.000 arası alanı kapsarken Z puanına göre ölçeklendirilmiş histogram ise -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ğ).

Veriler normal bir dağılıma veya kısmen normal bir dağılıma benzer bir dağılıma sahipse Z puanı iyi bir seçenektir.

Bazı dağılımların, aralıkları büyük çoğunluğu içinde normal olabileceğini, ancak yine de 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?

Günlük ölçeklendirme

Log ölçeklendirme, ham değerin logaritmasını hesaplar. Teoride, logaritma herhangi bir tabanda olabilir. Uygulamada ise günlük ölçeklendirme genellikle doğal logaritmayı (ln) hesaplar.

Veriler kuvvet yasası dağılımına uygun olduğunda günlük ölçeklendirme faydalıdır. Basitçe ifade etmek gerekirse, kuvvetli yasa dağılımı şu şekilde görünür:

  • Düşük X değerleri, çok yüksek Y 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 şunlara 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.)

Günlük ölçeklendirme, dağıtımı değiştirerek daha iyi tahminler yapacak bir model eğitmeye 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şlangıçta ç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 dağıtımı günlüğüyle karşılaştırma.

İkinci örnek olarak kitap satışları, güç yasası dağılımına uygundur çünkü:

  • Yayınlanan çoğu kitabın çok az sayıda kopyası satılır. Belki bir veya iki yüz kopya.
  • Bazı kitaplar binlerce adet satabilir.
  • Yalnızca birkaç çok satan site bir milyondan fazla kopya 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'un günlüğü ise şöyle olur:

  ~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 grafikte, özellik değerlerinin% 99'unun normal dağılıma (yaklaşık 1,8 ortalama ve 0,7 standart sapma) uygun olduğu gösterilmektedir. Ancak bu özellikte, bazıları aşırı olan birkaç aykırı değer vardır:

Ş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. Maksimum roomsPerPerson değerini rastgele bir değerle (4, 0 gibi) sınırlar veya klip ederseniz ne olur?

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'da kırpılması, modelinizin 4.0'dan büyük tüm değerleri yok sayacağı anlamına gelmez. Bunun yerine, 4,0'dan büyük olan tüm değerlerin 4,0 olduğu anlamına gelir. Bu da 4.0 noktasındaki özel tepeyi açıklıyor. 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.

Değerleri, diğer normalleştirme biçimlerini uyguladıktan sonra da kırpabilirsiniz. Örneğin, Z puanı ölçeklendirmesini kullandığınızı ancak birkaç aykırı değerin 3'ten çok büyük mutlak değerlere sahip olduğunu varsayalım. Bu durumda yapabilecekleriniz:

  • 3'ten büyük Z puanlarını tam 3 olacak şekilde kırpın.
  • -3'ten düşük Z puanlarını kesip tam olarak -3 yapmak.

Kırpma, modelinizin önemsiz verileri fazla 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' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ Özellik sabit bir aralıkta eşit olarak dağıtıldığında
Z puanını ölçeklendirme $$ x' = \frac{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' = 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

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
Veri noktaları genellikle normal bir dağılıma uygundur. Bu nedenle, Z puanı ölçeği onları -3 ile +3 aralığına zorlar.
Lineer ölçeklendirme
Bu sayfada normalleştirme teknikleriyle ilgili tartışmaları inceleyip tekrar deneyin.
Günlük ölçeklendirme
Bu sayfadaki normalleştirme teknikleriyle ilgili tartışmaları inceleyip tekrar deneyin.
Kırpma
Bu sayfada normalleştirme teknikleriyle ilgili tartışmaları inceleyip tekrar deneyin.

Bir veri merkezinin üretkenliğini, veri merkezinde ölçülen sıcaklığa göre tahmin eden bir model geliştirdiğinizi varsayalım. Aşağıdaki istisnalar dışında veri kümenizdeki temperature değerlerinin neredeyse tamamı 15 ile 30 (Santigrat) arasında yer alı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 aralığındaki 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 kırpın ancak 1.000 değerine sahip aykırı değerleri silin

1.000 değeri hatadır ve kırpılmak yerine silinmelidir.

31 ile 45 arasındaki değerler geçerli veri noktalarıdır. Veri kümesinin, modeli iyi tahminler yapacak şekilde eğitmek için bu sıcaklık aralığında yeterli örnek içermediği varsayıldığında, bu değerler için kesme işlemi muhtemelen iyi bir fikir olacaktır. Ancak kesilmiş modelin, çıkarım sırasında 45 derecelik bir sıcaklık için 35 derecelik bir sıcaklıkla aynı tahmini yapacağını unutmayın.

Tüm aykırı değerleri kırpın
Bu sayfada normalleştirme teknikleriyle ilgili tartışmaları inceleyip tekrar deneyin.
Aykırı değerlerin tümünü silin
Bu sayfada normalleştirme teknikleriyle ilgili tartışmaları inceleyip tekrar deneyin.
31 ile 45 arasındaki aykırı değerleri silin ancak aykırı değerleri 1.000 değerinde kırpın.
Bu sayfadaki normalleştirme teknikleriyle ilgili tartışmaları inceleyip tekrar deneyin.