私は脳を使用して、正と負の両方の値を含む機能セットでニューラルネットワークをトレーニングしています。しかし、脳には0〜1の入力値が必要です。データを正規化する最良の方法は何ですか?
私は脳を使用して、正と負の両方の値を含む機能セットでニューラルネットワークをトレーニングしています。しかし、脳には0〜1の入力値が必要です。データを正規化する最良の方法は何ですか?
回答:
これは、ユニティベースの正規化と呼ばれます。ベクトルがある場合、次のようにして、のような正規化バージョンを取得できます。
配列内で最大の正の数と最小(最も負)の数を見つけます。配列内のすべての値に最小(最も負)の数値の絶対値を追加します。各結果を最大数と最小数の差で割ります。
値のベクトル/配列があるとしましょう 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 );}
最後の出力はになりますv = [0.6, 0, 1]
。説明:
値の範囲全体を0から開始するようにプッシュして、ネガティブがないようにします。
値を範囲の(max-min)で除算し、最大値が1になるようにします