Yazan : Şadi Evren ŞEKER

Bu yazının amacı, istatistiksel normalleştirme (statistical normalization) konusunu açıklamaktır. Şayet ilgilendiğiniz konu, veri tabanlarında normalleştirme (database normalisation) ise lütfen aşağıdaki bağlantıya tıklayarak ilgili yazıya geçiniz.

http://www.bilgisayarkavramlari.com/2012/01/17/normallestirme-normalisation-normalizasyon/

İstatistiksel normalleştirme, özellikle, veri madenciliği (data mining) gibi bilgisayar bilimlerinin istatistiksel veri işleme alanlarında kullanılan bir yöntemdir. Yöntemin amacı, veriler arasında farklılığın çok fazla olduğu durumlarda verileri tek bir düzen içerisinde ele almaktır.

Diğer bir kullanılışı ise farklı ölçekleme sisteminde bulunan verilerin birbiri ile karşılaştırılabilmesidir. Buradaki amaç, matematiksel fonksiyonlar kullanarak, farklı sistemlerde bulunan verileri, ortak bir sisteme taşımak ve karşılaştırılabilir hale getirmektir.

Bu anlamda kullanılan normalleştirme fonksiyonları (normalization functions) aşağıda açıklanmıştır.

1.    Asgari – Azami Normalleştirmesi (Min-Max Normalisation)

Bu yöntemde, bir grup verinin içerisindeki en büyük ve en küçük değerler ele alınır. Diğer bütün veriler, bu değerlere göre normalleştirilir. Buradaki amaç en küçük değeri 0 ve en büyük değeri 1 olacak şekilde normalleştirmek ve diğer bütün verileri bu 0-1 aralığına yaymaktır.

 

Yukarıda verilen formüle göre her değerin normalleştirilmiş değeri hesaplanır. Bu hesaplamanın çalışmasını bir örnek sayı dizisi üzerinde gösterelim. Örneğin sayı dizimi aşağıdaki şekilde verilmiş olsun:

5, 8,9,11,20, 22,24,25,27,29

Yukarıdaki sayıların normalleştirilmiş halleri aşağıda verilmiştir:

5

0

8

0,125

9

0,166666667

11

0,25

20

0,625

22

0,708333333

24

0,791666667

25

0,833333333

29

1

Yukarıda görüldüğü üzere en küçük sayı 0 ve en büyük sayı 1 olarak normalleştirilmiştir. Bu sayılar dışındaki sayılar ise yer aldıkları aralığa göre değerler atanır. Örneğin sayı dizimi aşağıdaki şekilde olsaydı:

10,15,16,17,50,51,55,56,60

Bu durumda normalleştirilmiş değerler aşağıdaki şekilde olacaktı:

10

0

15

0,1

16

0,12

17

0,14

50

0,8

51

0,82

55

0,9

56

0,92

60

1

 

Görüldüğü üzere bu yeni normalleştirme sonucunda da sayılarımız 0 ile 1 arasında değerler aldılar. Şimdi bu iki farklı sayı grubunu karşılaştırabiliriz. Örneğin ilk sayı dizimizde bulunan 25, normalleştirme sonucunda 0,83 değerini almıştır. İkinci sayı grubumuzda bulunan 51 ise, normalleştirilmiş değer olarak 0,82 değerini almıştır. Bu duruma ilk sayı dizisinde bulunan 25’in sayılar arasındaki konumu, ikinci dizide bulunan 51 ile yakındır denilebilir (en azından ikinci dizide bulunan 17 sayısına göre daha yakındır çünkü ikinci dizideki 17 sayısı 0,14 gibi çok daha farklı bir değerdir).

Örnekte de görüldüğü üzere iki farklı dizide bulunan sayılar, birbiri ile karşılaştırılmak istendiğinde, ortak bir sayı sistemine çevrilerek içinde bulundukları diğer sayılara göre, göreceli olarak bir değer atanmış ve karşılaştırılmıştır. İşte normalleştirme tam olarak budur

   2. Standart Skor (Standard Score):

Diğer bir normalleştirme yöntemidir. Bir önceki yöntemde, sayılar en yüksek ve en düşük değerlere göre normalleştirilmişti. Bu yöntemde ise ortalama değer (mean value) ve standart sapma (standard deviation) değerleri göz önüne alınır.  Sistemde kullanılan standart sapmaya atfen, standart skor (standard score) olarak da isimlendirilir. Oldukça popüler normalleştirme yöntemlerinden birisidir. Formülü aşağıdaki şekilde yazılabilir:

 

Yukarıdaki denklemden de anlaşılacağı zere, bir değerin normalleştirilmesi sırasında, ortalama değere (μ) olan uzaklığı alınarak standart sapma değerine (σ) bölünür. Konunun anlaşılması için, bir önceki örnekte kullandığımız sayı dizisini yeniden işlemeye çalışalım:

5

-1,367526918

8

-1,025645188

9

-0,911684612

11

-0,683763459

20

0,341881729

22

0,569802882

24

0,797724035

25

0,911684612

29

1,367526918

 

Yukarıdaki değerleri inceleyecek olursak, 5 ve 29 sayılarının normalleştirme sonucunun mutlak değeri aynı çıkmıştır. Bunun sebebi, iki sayının ortalama değer olan 17’ye olan uzaklıklarının eşit olmasıdır ( 5-17 = -12 ve 29-17 = 12) sadece yönleri farklıdır ve bu durum normalleştirme sonucunda görülmüştür.

Gelelim ikinci dizimizin normalleştirme sonucuna:

10

-1,251528679

15

-1,016867051

16

-0,969934726

17

-0,9230024

50

0,625764339

51

0,672696665

55

0,860425967

56

0,907358292

60

1,095087594

 

Bir önceki normalleştirme sonucunda en büyük ve en küçük sayıların sadece yönü farklıyken bu sefer değerlerde farklılık oldu. Bunun sebebi iki sayının ortalama değere olan uzaklığının farklılaşmasıdır. Bu ikinci dizideki ortalama değer 36.667 olduğu için iki değer farklı olarak normalleştirilmiştir.

Bir önceki normalleştirme olan asgari / azami normalleştirmede bu fark görülememekteydi. Diğer bir deyişle asgari / azami normalleştirme, en büyük sayıyı hep 1 ve en küçük sayıyı hep 0 olarak kabul edip, diğer sayıları bu 0-1 aralığına yerleştirmekteydi, z-skor normalleştirmesinde ise sayılar ortalama değere göre uzaklıklarına göre normalleştirilmektedir. Ayrıca standart sapmaya bölünerek, sayılar arasındaki hareketlilik (değişim hızı) ortalamaya olan uzaklığı normalize etmektedir.

Normalizasyon yöntemleri

Gelen bir yorum üzerine bu kısmı eklemeyi gerekli gördüm. Kabaca normalizasyonda kullanılan bazı yöntemleri aşağıdaki şekilde sıralamak mümkündür:

1. Standart Skorlama (Standard Score) : Bir popülasyondaki parametrelerin bilinmesi durumunda hata değerlerini normalleştirmek için kullanılır. Normal dağılımı esas alır ve bu dağılıma uyan popülasyonlarda başarılı çalışır. Basitçe her değerin ortalamadan olan uzaklıklarının standart sapmaya oranı ile bulunur ve aşağıdaki şekilde formülü verilebilir:

normallesme1

2. Student’s t test(Öğrencinin t testi): popülasyonun parametrelerinin bilinmediği durumlarda kullanılan ve dolayısıyla bir beklendik değerle hesaplanan ve bu beklendik değerle veriler arasındaki farkı / hatayı (tortu, residual) bularak bu değere göre normalleştiren yöntemdir. Her değerin beklendik değere olan uzaklığı ve beklendik değerlerin farklarının ortalamasına oranı ile bulunur. Aşağıdaki şekilde formülü verilebilir (s ile gösterilen değer tortu değeridir).

normallesme2

3. Standartlaştırılmış an (Standardized moment): Genelde standart moment olarak Türkçede geçen yöntem, aslında momentlerin standartlaştırılması için k. momentin standart sapmaya oranı ile bulunur.

normallesme3

Merkezi moment değeri ise aşağıdaki şekilde hesaplanabilir (E ile gösterilen fonksiyon beklendik değer (Expected value) olmak üzere):

normallesme4

4. Varyans çarpanı (coefficient of variance): Bir popülasyondaki farklılıkları göstermek için kullanılan çarpandır. Basitçe bir popülasyonun ortalama değerinin standart sapmasına oranı olarak hesaplanır:

normallesme5

5. Özellik ölçeklemesi (Feature Scaling) veya Min-Max Normalleştirmesi : Bir popülasyondaki en yüksek ve en düşük değere görece olarak her değerin konumunu hesaplamak için kullanılır:

normallesme6

Yorumlar

  1. Emin

    Hocam Merhabalar,
    Sql Server Analysis Services altında sınıflama yaparken seçilen bayes algoritması sonucu çıkan bazı normalize edilmiş değerler var. Attribute Discrimination altında Favors State 1 ve Favors State 2

    Burada hangi tekniğin kullanıldığı ile alakalı bilginiz var mı?

  2. Şadi Evren ŞEKER Article Author

    Ne yazık ki microsoft dünyasını hiç anlayamadım, algoritmalarını ve yöntemlerini, referansları ile birlikte kaynaklarda belirtseler ne olur sanki?

    Neyse sorunuzun cevabı kısaca, nasıl yaptığını bilmiyorum. Tek bildiğim ikisi arasında bir seçim yapacağı zaman bir tarafa öncelik verdiği. Örneğin iki cluster arasında çalışıyorsunuz, siz burada bir favor tanımladınız, diyelim ki doğum yeri istanbul FAVORS cluster 2 (yani cluster 2 için bir avantaj) bu durumda cluster 2 için doğum yeri istanbul olanlar avantajlı olacak. Ancak bu doğrudan cluster 2 olacağı anlamına gelmez. Yani cluster 1’de olabilir ama avantaj cluster 2’den yana. Şimdi buradaki avantaj neye göre hesaplanıyor (mesela eşitlik durumunda bir avantaj sağladığı kesin ama bunun dışında da belirli bir treshold değeri veya bir hesaplama yöntemi var mı) işte bu konuda hiçbir bilgi yok (ya da ben bilmiyorum, bulamıyorum). En azından msdn içerisine koymalarını veya referans vermelerini beklerdim:

    http://msdn.microsoft.com/en-us/library/ms186525%28v=sql.100%29.aspx

    Başarılar

  3. beyza

    hocam merhaba,
    normalizasyon işlemini tıbbi veriler için yaparken (tetkikler farklı ölçü birimlerine sahip kimi mg/dl kimi mm3 ayrıca değerlerde farklı kimi değerler 1 den küçük kimi 100 den büyük) z-score normalizasyonmu yoksa min-max kullanmak mı daha avantajlı olacaktır. ayrıca bağımlı değişken kategorik ve çok sayıda. yapılacak normalizasyon her özelliğin bulunduğu sutun için ayrı ayrımı yapılacak yoksa tüm özellikler aynı andamı işleme tabi tutulacak
    teşekkür ederim iyi çalışmalar

    1. Şadi Evren ŞEKER

      Normal dağılıma yakın verilerden bahsediyorsanız z-score daha mantıklı ama veriler hakkında bir dağılıma uymama gibi bir durum varsa o zaman min-max kullanabilirsiniz. Aslında tavsiyem şöyle olur, öncelikle her veri kümesinin dağılımlarına bir bakıp sonra en uygun normalleştirme yöntemini kullanmanız daha yerinde olur.
      Sorunuzun ikinci kısmı ise ne istediğiniz ile ilgili. Sanki sorunuzdan birden fazla parametreye ağırlık vererek bir denklem içerisinde kullanmak istediğinizi anlıyorum. Bu şekilde ise, özellikler aynı anda işeleme tabi tutulur ama parametreler arasındaki ilişkilere bakılması gerekir, bazı parametreler diğer parametreleri eziyor olabilir veya çok sayıda farklı ve aynı özelliği taşıyan (biased) parametreyi almak sonucu yanlış etkileyebilir.
      Yorumunuz üzerine yazıya son bir kısım daha ekleyerek farklı normalleştirme yöntemlerini listeledim, elinizdeki verinin dağılımına göre bunları da denemenizde yarar olabilir.

      Başarılar

  4. ahsen

    merhaba;
    değerli bilgilerinizi bizimle paylaştığınız için öncelikle teşekkür ederiz.
    elimdeki veri setini 3 farklı şekilde kaydettim.
    1-verilerin alıp temizlenmiş hali
    2-tüm değerleri normalize ettim 32 özelliğim var bunlardan biri yaş, her bir özniteliği teker teker min-max mormalizasyona tabi tuttum
    3- veri dönüşümünü yaş dahil z-score ile gerçekleştirdim
    4- verileri kategorik hale çevirdim
    aynı veri seti üzerinde yaptığım işlemlerle elimde aynı veri setinin 4 farklı formatta arff dosyası oldu.
    ama sonuçlar ilk ham haliyle aynı çıkıyor. mantıksız değilmi? yaş kimi öznitelikten büyükken kiminden küçük nasıl etkilemez(ders notları, arkadaş sayısı, burs miktarı)
    özellikle j48 algoritmasında wekada bütün varyasyonlar için aynı ağaç yapısını veriyor. ve örneğin kök düğümde baktığı bir değere aşağıda bir yerde ikinci kez bir daha bakıyor. yaş bilgisine bakıyor 40’dan büyükse ders notuna bakıp tekrar yaş bilgisine birkez daha 30dan büyükmü küçükmü diye bakıyor.?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir