Min-Max Normalleştirilmesi

Uzun süredir gerek iş hayatımda gerek özel hayatımda yaşadığım hareketlilikten dolayı bloguma yeterli ilgiyi gösteremedim. Bir yandan da yüksek lisans devam ediyor ve ben tez yazmaya devam ediyorum. Teknik kısımda büyük yol aldım. Yazım kısmı da fena gitmiyor. Lakin daha da hızlanmam gerektiğinin farkındayım.

Yazılarıma Veri Madenciliği konusu ile devam etmek istiyorum. Hatta mümkün olursa bundan sonra bu konuda daha derinlemesine yazılar yazmayı planlıyorum. Bugün bahsedeceğim konu ise veri dönüştürme sürecinde kullanılanMin-Max Normalleştirilmesi konusu. Umarım birilerinin işine yarar

Veri Madenciliği süreçleri, veri üzerinde herhangi bir algoritma uygulamadan önce, kaba tabirle verinin adam edilmesi de denebilir. Bu süreç içerisinde verinin yapısına uygun olarak, veri, temizleme, bütünleştirme, indirgeme vedönüştürme gibi süreçlerden geçirilerek algoritma uygulanmasına uygun hale getirilir. Aksi taktirde veri kümesi içerisinde gürültülü veriler olur ve istenilen sonuçların çıkmasına engel olacağı gibi verilerin yanlış yorumlanmasına da neden olabilmektedir.

Veri dönüştürme süreci, verinin aynen uygulamaya katılmayacağı durumlarda kullanılır. Çünkü değişkenlerin ortalama ve varyansları birbirinden çok uzak aralıklarda olabilir. Bu da veri setinde ortalama ve alt düzeyde yer alan verilerin etkisini azaltır.

Bu problemin önüne geçmek için uygulanan algoritmalardan birisi Min-Max Normalleştirmesi‘dir. Bu yöntem, veri seti içerisindeki en büyük ve en küçük değerlerin belirlenerek, diğerlerini buna uygun bir biçimde dönüştürme esasına dayanmaktadır. Aslında değerler 0-1 arasında bir sayısal değere dönüştürülmektedir.

Formül ile ifade edersek:

X = Dönüştürülmüş değer

X = İlgili değer

Xmin = Veri setindeki en küçük değer

Xmax = Veri setindeki en büyük değer

Örneğin elimizde [30, 36, 45, 50, 60] gibi bir veri setimiz olsun. Bu veri setini aşağıdaki php kodu ile normalizasyon işlemi yapalım.

<pre><?php class Minmaxnorm {          private $trainingSet = array(30, 36, 45, 50, 62);         private $normalizedSet = array();         private $min;         private $max;          public function process()         {                  $this->min = min($this->trainingSet);                 $this->max = max($this->trainingSet);                 $this->doNorm();         }          private function doNorm()         {                 foreach($this->trainingSet as $val)                 {                          $this->normalizedSet[] = $this->formula($val);                 }         }          private function formula($val)         {                 return ($val – $this->min) / ($this->max – $this->min);         }          private function setTrainingSet($trainingSet)         {                 $this->trainingSet = $trainingSet;         }          public function getTrainingSet()         {                 return $this->normalizedSet;         }          public function getMin()         {                 return $this->min;         }          public function getMax()         {                 return $this->max;         }          public function getNormalizedSet()         {                 return $this->normalizedSet;         }} $norm = new Minmaxnorm();$norm->process(); print_r($norm->getNormalizedSet());echo “<br>”;echo $norm->getMin();echo “<br>”;echo $norm->getMax();echo “<br>”;print_r($norm->getNormalizedSet()); ?></pre>

İlgili eğitim setinin normalize edilmiş hali ise şöyledir:

30 => 0,0000

32 => 0,1875

45 => 0,4688

50 => 0,6250

62 => 1,0000

Normalizasyon işlemi sonucunda verilerimizi daha düzenli bir hale getirerek, seçilen veri madenciliği algoritmasını uygulamaya hazır hale getirmiş olduk.

 

CEVAP VER