[PYTHON] Méthode de normalisation (encodage) et réversion (décodage)

0. Aperçu

Il n'est pas exagéré de dire que la «normalisation» est la technologie la plus utilisée pour le prétraitement des ensembles de données en apprentissage automatique. Il est utilisé à divers endroits car il est possible de gérer des nombres de dimensions différentes et des échelles de même taille en appliquant une normalisation. Cette normalisation n'est rien d'autre qu'une quantité sans dimension telle que la division de la quantité par une valeur représentative afin qu'elles puissent être comparées entre elles. Cette fois, je vais partager sur cette méthode.

1. Normalisation MIN-MAX (0-1)

Cette section décrit la méthode de normalisation la plus utilisée qui exprime une certaine valeur contenue dans un certain ensemble de données de 0 à 1.

1.1. encode La formule lorsque la valeur à normaliser dans un certain ensemble de données $ \ mathbb {D} $ est $ x $ est la suivante.

x_{norm} = \dfrac{x - x_{min}}{x_{max} - x_{min} }

Le code Python est ci-dessous.

def min_max_encode(self, x, source_min, source_max):
  return (x - source_min) / ( source_max - source_min)

1.2. decode Ensuite, le décodage est effectué comme suit. Ici, $ x_ {norm} $ est la valeur convertie par encodage.

x = x_{norm}x_{max} - x_{norm}x_{min} + x_{min} 

Expression d'expression:

x_{norm} = \dfrac{x - x_{min}}{x_{max} - x_{min} }\\
x_{norm}x_{max} - x_{norm}x_{min} = x - x_{min} \\
x_{norm}x_{max} - x_{norm}x_{min} + x_{min} = x 

Le code Python est ci-dessous.

def min_max_decode(self, x_norm, source_min, source_max):
  return (x_norm * source_max) - (x_norm * source_min) + source_min

2. Normalisation de la fonction d'activation (-1 à +1)

Lors de l'utilisation de «hard-tanh», etc. dans la fonction d'activation telle que l'apprentissage en profondeur, la valeur d'entrée peut également être convertie en «-1 ~ + 1». Je voudrais également mentionner la normalisation en ce moment.

2.1. encode La formule lorsque la valeur à normaliser dans un certain ensemble de données $ \ mathbb {D} $ est $ x $ est la suivante.

x_{norm} = \dfrac{x - x_{min}}{x_{max} - x_{min} } \cdot 2 - 1

Le code Python est ci-dessous.

def min_max_encode(self, x, source_min, source_max):
  return (((x - source_min) / ( source_max - source_min) ) * 2.0) - 1.0

2.2. decode Ensuite, le décodage est effectué comme suit. Ici, $ x_ {norm} $ est la valeur convertie par encodage.

x = \dfrac{x_{norm}x_{max} - x_{norm}x_{min} + x_{max} + x_{min}}{2}

Expression d'expression:

x_{norm} = \dfrac{x - x_{min}}{x_{max} - x_{min} } \cdot 2 - 1 \\
\dfrac{x_{norm} + 1}{2} = \dfrac{x - x_{min}}{x_{max} - x_{min} }\\
\dfrac{(x_{norm} + 1)(x_{max} - x_{min})}{2}=(x - x_{min})\\
\dfrac{x_{norm}x_{max} - x_{norm}x_{min} + x_{max} - x_{min}}{2}+x_{min}=x\\
\dfrac{x_{norm}x_{max} - x_{norm}x_{min} + x_{max} + x_{min}}{2} = x

Le code Python est ci-dessous.

def min_max_decode(self, x_norm, source_min, source_max):
  return ((x_norm * source_max) - (x_norm * source_min) + source_max + source_min) * 0.5

Recommended Posts

Méthode de normalisation (encodage) et réversion (décodage)
Encodage et décodage JSON avec python
Remplacement de méthode et super
Clipping et normalisation dans TensorFlow
Développement et simulation des perturbations Méthode des perturbations
Méthode de la somme cumulée et de la pomme de terre