Estoy usando Brain para entrenar una red neuronal en un conjunto de características que incluye valores positivos y negativos. Pero Brain requiere valores de entrada entre 0 y 1. ¿Cuál es la mejor manera de normalizar mis datos?
Estoy usando Brain para entrenar una red neuronal en un conjunto de características que incluye valores positivos y negativos. Pero Brain requiere valores de entrada entre 0 y 1. ¿Cuál es la mejor manera de normalizar mis datos?
Respuestas:
Esto se llama normalización basada en la unidad. Si tiene un vector , puede obtener una versión normalizada del mismo, digamos , haciendo:Z
Encuentre el número positivo más grande y el número más pequeño (más negativo) en la matriz. Agregue el valor absoluto del número más pequeño (más negativo) a cada valor en la matriz. Divide cada resultado por la diferencia entre el número más grande y el más pequeño.
digamos que tiene un vector / matriz de valores 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 );}
La salida al final será v = [0.6, 0, 1]
. Explicación:
Empujar todo el rango de valores para comenzar desde 0, para que no tengamos negativos
Dividiendo los valores por (max - min) de rango, de modo que max será 1
Antes de hacer eso, es posible que desee verificar los valores atípicos. Digamos que el 99% de los datos se encuentran en el rango (-5, 5), pero un pequeño individuo toma un valor de 25.0. Su matriz normalizada se agruparía alrededor (0, 0.3), y eso causaría problemas para que la red neuronal aprenda.