[PYTHON] Normalisierungsmethode (Codierung) und Umkehrung (Decodierung)

0. Übersicht

Es ist keine Übertreibung zu sagen, dass "Normalisierung" die am häufigsten verwendete Technologie zur Vorverarbeitung von Datensätzen beim maschinellen Lernen ist. Es wird an verschiedenen Stellen verwendet, da durch Anwenden der Normalisierung Zahlen mit unterschiedlichen Abmessungen und Skalen mit derselben Größe verarbeitet werden können. Diese Normalisierung ist nichts anderes als eine dimensionslose Größe, beispielsweise das Teilen der Größe durch einen repräsentativen Wert, damit sie miteinander verglichen werden können. Dieses Mal werde ich über diese Methode berichten.

1. MIN-MAX-Normalisierung (0-1)

In diesem Abschnitt wird die am häufigsten verwendete Normalisierungsmethode beschrieben, die einen bestimmten Wert in einem bestimmten Datensatz von 0 bis 1 ausdrückt.

1.1. encode Die Formel, wenn der in einem bestimmten Datensatz zu normalisierende Wert $ \ mathbb {D} $ $ x $ ist, lautet wie folgt.

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

Der Python-Code ist unten.

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

1.2. decode Als nächstes wird die Decodierung wie folgt durchgeführt. Hier ist $ x_ {norm} $ der durch Codierung konvertierte Wert.

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

Ausdruckserweiterung:

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 

Der Python-Code ist unten.

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

2. Normalisierung für Aktivierungsfunktion (-1 bis +1)

Bei Verwendung von "Hard-Tanh" usw. in der Aktivierungsfunktion, wie z. B. Deep Learning, kann der Eingabewert auch in "-1 ~ + 1" umgewandelt werden. Ich möchte auch die Normalisierung zu diesem Zeitpunkt erwähnen.

2.1. encode Die Formel, wenn der in einem bestimmten Datensatz zu normalisierende Wert $ \ mathbb {D} $ $ x $ ist, lautet wie folgt.

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

Der Python-Code ist unten.

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 Als nächstes wird die Decodierung wie folgt durchgeführt. Hier ist $ x_ {norm} $ der durch Codierung konvertierte Wert.

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

Ausdruckserweiterung:

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

Der Python-Code ist unten.

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

Normalisierungsmethode (Codierung) und Umkehrung (Decodierung)
JSON-Codierung und -Decodierung mit Python
Methodenüberschreibung und super
Clipping und Normalisierung in TensorFlow
Störungsentwicklung und Simulation Störungsmethode
Kumulative Summen- und Kartoffelmethode