Saya menggunakan Brain untuk melatih jaringan saraf pada set fitur yang mencakup nilai-nilai positif dan negatif. Tetapi Brain membutuhkan nilai input antara 0 dan 1. Apa cara terbaik untuk menormalkan data saya?
Saya menggunakan Brain untuk melatih jaringan saraf pada set fitur yang mencakup nilai-nilai positif dan negatif. Tetapi Brain membutuhkan nilai input antara 0 dan 1. Apa cara terbaik untuk menormalkan data saya?
Jawaban:
Ini disebut normalisasi berbasis kesatuan. Jika Anda memiliki vektor , Anda bisa mendapatkan versi yang dinormalkan, katakan Z , dengan melakukan:
Temukan angka positif terbesar dan angka terkecil (paling negatif) dalam array. Tambahkan nilai absolut dari angka terkecil (paling negatif) ke setiap nilai dalam array. Bagilah setiap hasil dengan selisih antara jumlah terbesar dan terkecil.
katakanlah Anda memiliki vektor / array nilai v = [1, -2, 3]
minV = Math.min.apply(Math, v);;
for(var i=0; i<v.length; i++) {v[i] -= minV;}
maxV = Math.max.apply(Math, v);;
for(var i=0; i<v.length; i++) {v[i] /= ( maxV - minV );}
Output pada akhirnya akan menjadi v = [0.6, 0, 1]
. Penjelasan:
Mendorong seluruh rentang nilai mulai dari 0, sehingga kami tidak memiliki negatif
Membagi nilai dengan rentang (maks - min), sehingga maks akan menjadi 1
Sebelum Anda melakukan itu, Anda mungkin ingin memeriksa outliers. Katakanlah 99% data berada dalam kisaran (-5, 5), tetapi seorang pria kecil mengambil nilai 25.0. Array yang dinormalkan akan mengelompok di sekitar (0, 0,3), dan itu akan menyebabkan masalah bagi jaringan saraf untuk belajar.