Datennormalisierung und -standardisierung in neuronalen Netzen

40

Ich versuche, das Ergebnis eines komplexen Systems mithilfe neuronaler Netze (ANNs) vorherzusagen. Die (abhängigen) Ergebniswerte liegen zwischen 0 und 10.000. Die verschiedenen Eingangsvariablen haben unterschiedliche Bereiche. Alle Variablen haben ungefähr normale Verteilungen.

Ich betrachte verschiedene Möglichkeiten, um die Daten vor dem Training zu skalieren. Eine Möglichkeit besteht darin, die Eingangsvariablen (unabhängig) und die Ausgangsvariablen (abhängig) auf [0, 1] zu skalieren, indem die kumulative Verteilungsfunktion unter Verwendung des Mittelwerts und der Standardabweichung jeder Variablen unabhängig berechnet wird. Das Problem bei dieser Methode ist, dass ich, wenn ich die Sigmoid-Aktivierungsfunktion am Ausgang verwende, sehr wahrscheinlich extreme Daten verpasse, insbesondere solche, die nicht im Trainingssatz enthalten sind

Eine weitere Option ist die Verwendung eines Z-Scores. In diesem Fall habe ich kein extremes Datenproblem. Ich beschränke mich jedoch auf eine lineare Aktivierungsfunktion am Ausgang.

Was sind andere akzeptierte Normalisierungstechniken, die mit ANNs verwendet werden? Ich habe versucht, nach Rezensionen zu diesem Thema zu suchen, aber nichts Nützliches gefunden.

Boris Gorelik
quelle
Z-Scores Normalisierung wird manchmal verwendet, aber ich habe das komische Gefühl, es könnte der andere Name für die Antwort von Bayer sein?
osknows
Es ist das Gleiche mit Ausnahme des Aufhellungsbereichs.
Bayerj
1
Wenn Sie einen Wert (wie Sie sind) anstelle einer Wahrscheinlichkeit (dh eine Regression anstelle einer Klassifizierung) vorhersagen, sollten Sie immer eine lineare Ausgabefunktion verwenden.
Seanv507
Rank-Gauß von Michael Jahrer . Es ist Rang dann machen es Gaußsch.
User3226167

Antworten:

32

Ein Standardansatz besteht darin, die Eingaben so zu skalieren, dass sie einen Mittelwert von 0 und eine Varianz von 1 haben. Auch eine lineare Dekorrelation / Weißfärbung / pca hilft sehr.

Wenn Sie sich für die Tricks des Handels interessieren, kann ich LeCuns effizientes Backprop-Papier empfehlen .

bayerj
quelle
1
Natürlich sollte man niemals versuchen, Daten blind zu normalisieren, wenn die Daten keiner (einzelnen) Normalverteilung folgen. stats.stackexchange.com/a/816/4581
user4581
24
Bei neuronalen Netzen muss man. Andernfalls werden Sie die verborgenen Einheiten sofort sättigen, ihre Steigungen werden nahe Null sein und es wird kein Lernen möglich sein. Es geht nicht um Modellierung (neuronale Netze übernehmen keine Verteilung in den Eingabedaten), sondern um numerische Probleme.
Bayerj
Ich bin ziemlich verwirrt. Dieser Link ( machinelearningmastery.com/… ) besagt, dass die Standardisierung nützlich ist, wenn der von Ihnen verwendete Algorithmus Annahmen über Ihre Daten mit einer Gaußschen Verteilung trifft (nicht der Fall des NN). Andernfalls sollten Sie die Normalisierung verwenden. Kann mich jemand aufklären?
Ihebiheb
21

1- Die Min-Max-Normalisierung behält die ursprüngliche Verteilung der Bewertungen mit Ausnahme eines Skalierungsfaktors bei und transformiert alle Bewertungen in einen gemeinsamen Bereich [0, 1]. Diese Methode ist jedoch nicht robust (dh die Methode ist sehr empfindlich gegenüber Ausreißern).

2- Standardisierung (Z-Score-Normalisierung) Die am häufigsten verwendete Technik, die anhand des arithmetischen Mittels und der Standardabweichung der angegebenen Daten berechnet wird. Sowohl der Mittelwert als auch die Standardabweichung sind jedoch empfindlich gegenüber Ausreißern, und diese Technik garantiert keinen gemeinsamen numerischen Bereich für die normalisierten Bewertungen. Wenn außerdem die Eingabewerte nicht Gauß-verteilt sind, behält diese Technik die Eingabeverteilung am Ausgang nicht bei.

3- Median und MAD: Der Median und die mediane absolute Abweichung (MAD) sind unempfindlich gegenüber Ausreißern und den Punkten in den extremen Schwänzen der Verteilung. deshalb ist es robust. Diese Technik behält jedoch nicht die Eingabeverteilung bei und transformiert die Bewertungen nicht in einen gemeinsamen numerischen Bereich.

4-Tanh-Schätzer: Die von Hampel et al. sind robust und hocheffizient. Die Normalisierung ist gegeben durch

tanh Schätzer Dabei sind μGH und σGH der Mittelwert bzw. die Standardabweichung der von Hampel-Schätzern angegebenen echten Punkteverteilung.

Daher empfehle ich Tanh-Schätzer.

Referenz https://www.cs.ccu.edu.tw/~wylin/BA/Fusion_of_Biometrics_II.ppt

Ahmad Hassanat
quelle
Es fällt mir schwer, Informationen zu diesem Tanh-Schätzer zu finden. Kann jemand etwas Licht ins Dunkel bringen?
Ben Ogorek
Endlich ein Artikel gefunden, der gute Arbeit leistet und die Tanh-Schätzer für die Normalisierung beschreibt: wjscheirer.com/papers/wjs_eccv2010_fusion.pdf . Als Allzweck-Normalisierungsoption klingen sie nicht realisierbar. "[Tanh-Schätzer] sind im Vergleich zu den adaptiven z-Scores viel komplizierter zu berechnen ... Die Endpunkte für drei verschiedene Intervalle vom Medianwert der Verteilung müssen ad hoc definiert werden. Diese Parameter können schwierig sein experimentell zu bestimmen und, falls falsch gewählt, die Wirksamkeit von Tanh-Schätzern einzuschränken. "
Ben Ogorek
8

Ich habe hier eine ähnliche Antwort gegeben. Wenn Sie eine multiple Regression durchführen, wann sollten Sie Ihre Prädiktorvariablen zentrieren und wann sollten Sie sie standardisieren? dachte aber, es sei ein hinreichend anderer Zusammenhang, dass hier eine Antwort gehen könnte.

Es gibt eine großartige Usenet-Ressource: http://www.faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html

Es gibt in einfachen Worten einige der Probleme und Überlegungen, wenn man die Daten normalisieren / standardisieren / neu skalieren möchte. Da es das Thema aus der Perspektive des maschinellen Lernens behandelt und Ihre Frage ML ist, könnte es eine gewisse Relevanz haben.

Paul
quelle
Sie sollten die wichtigsten Punkte der einzelnen Links hier schreiben, damit keine zusätzliche "Navigation" erforderlich ist
leoschet
2

Du könntest es tun

  • Min-Max-Normalisierung (Eingaben / Ziele so normalisieren, dass sie in den Bereich [−1,1] fallen) oder
  • Normalisierung der mittleren Standardabweichung (Eingaben / Ziele so normalisieren, dass der Mittelwert und die Einheitsabweichung / Standardabweichung Null sind)
Prashanth
quelle
1

Wenn Sie in arbeiten python, sklearnhaben Sie eine Methode, um dies mit verschiedenen Techniken in ihrem preprocessingModul zu tun (plus eine raffinierte Pipeline-Funktion mit einem Beispiel in ihren Dokumenten):

import sklearn

# Normalize X, shape (n_samples, n_features)
X_norm = sklearn.preprocessing.normalize(X)
Ryanjdillon
quelle
0

Nun, [0,1] ist der Standardansatz. Funktioniert bei neuronalen Netzen am besten im Bereich 0-1. Min-Max-Skalierung (oder Normalisierung) ist der zu verfolgende Ansatz.

Bei den Ausreißern müssen diese in den meisten Szenarien abgeschnitten werden, da Ausreißer nicht häufig auftreten. Sie möchten jedoch nicht, dass Ausreißer sich auf Ihr Modell auswirken (es sei denn, Sie lösen das Problem mit der Erkennung von Anomalien). Sie können es basierend auf der empirischen Regel von 68-95-99.7 ausschneiden oder ein Box-Diagramm erstellen, beobachten und entsprechend ausschneiden.

MinMax Formel - (xi - min(x)) / (max(x) - min(x)) oder verwenden könnensklearn.preprocessing.MinMaxScaler

D Unberührbar
quelle
-1

"Akzeptiert" ist das, was für Sie am besten funktioniert - dann akzeptieren Sie es.

Nach meiner Erfahrung funktioniert das Anpassen einer Verteilung aus der Johnson-Verteilungsfamilie an jedes der kontinuierlichen Features gut, da die Verteilungen sehr flexibel sind und die meisten unimodalen Features in normale Standardverteilungen umwandeln können. Es wird auch bei multimodalen Funktionen hilfreich sein, aber es bringt die Funktionen im Allgemeinen in die bestmögliche Form (standardmäßige Gauß-verteilte Daten sind ideal für die Arbeit - es ist mit den meisten kompatibel und manchmal für die meisten optimal) statistische / ML-Methode verfügbar).

http://qualityamerica.com/LSS-Knowledge-Center/statisticalinference/johnson_distributions.php

JPJ
quelle