¿Cómo escalar una matriz de enteros con signo para variar de 0 a 1?


Respuestas:


25

Esto se llama normalización basada en la unidad. Si tiene un vector , puede obtener una versión normalizada del mismo, digamos , haciendo:ZXZ

Z=Xmin(X)max(X)min(X)

1
Este enfoque también se conoce como normalización min-max (ya que estamos usando valores min y max)
Shagun Sodhani

¿Está bien usar este método para normalizar un valor que representa un porcentaje y puede ser negativo pero siempre mayor que -2% y menor que 30%? ¿No será más difícil para una red neuronal obtener la pista del significado del valor si lo normalizo de esta manera?
Ivan

3

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.


@ Jonathan: no importa siempre que ambos valores sean de la misma matriz, original o actualizada. Como se agrega el mismo número a cada valor, la diferencia entre el mínimo y el máximo se mantiene igual.
RemcoGerlich

1

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:

  1. Empujar todo el rango de valores para comenzar desde 0, para que no tengamos negativos

  2. Dividiendo los valores por (max - min) de rango, de modo que max será 1


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.