Angenommen, Sie haben zwei Datensätze D1 und D2. Beide werden von derselben zugrunde liegenden Verteilung X abgetastet. Ich möchte sie zum Trainieren eines neuronalen Netzwerks verwenden. Die Features sind alle vorzeichenlose Ganzzahlen im Bereich [0; 2 ^ 64].
Aufgrund der Tatsache, dass die Merkmale sehr unterschiedliche Maßstäbe haben, habe ich mich für die Z-Score-Normalisierung in Verbindung mit einer Sigmoid-Funktion entschieden. Das bedeutet, dass ich die normalisierten Z-Score-Daten der Logistikfunktion zuführe, um die Features auf [0; 1] Bereich.
Zu diesem Zeitpunkt bin ich mir nicht sicher, an welchem Punkt die Daten normalisiert werden sollen.
1.) Ich benutze D1 und normalisiere es mit mean_1 und std_dev_1, die nur unter Berücksichtigung von D1 erhalten werden. Ich wiederhole den Vorgang für D2 und normalisiere ihn mit mean_2 und std_dev_2. Dann trainiere ich das Netzwerk mit den beiden Datensätzen nacheinander.
2.) Ich addiere D1 und D2, um eine Menge D3 zu erhalten, und normalisiere sie, indem ich mean_3 und std_dev_3 über den gesamten Datensatz (D1 + D2) berechne. Dann trainiere ich das Netzwerk damit.
2 Fragen hier:
a) Führen die beiden Methoden zu ähnlichen Ergebnissen? Dies ist für mich besonders wichtig, da D2 möglicherweise später als D1 für mich verfügbar wird und ich wissen muss, ob ich das Netzwerk mit dem gesamten Datensatz neu trainieren muss.
b) Welche Parameter muss ich bei der Inferenz mit dem trainierten Netzwerk verwenden, um die neuen Eingaben zu normalisieren? Muss ich zum Beispiel mean_3 und std_dev_3 verwenden?
EDIT: Ich fand heraus, dass Mittelwert und Standardabweichung der Kombination der beiden Datensätze aus Mittelwert und Standardabweichung der ursprünglichen Datensätze berechnet werden können. Das bedeutet (theoretisch), dass sie sequentiell trainiert und ihre Verteilungsparameter kombiniert werden könnten, um die Eingaben für die Inferenz zu normieren.
quelle
Antworten:
Sie sollten dieselbe Transformation auf alle Personen anwenden.
Verwenden Sie nicht Methode 1; es wird voreingenommen sein. Eine einfache Möglichkeit, dies zu realisieren, besteht darin, sich vorzustellen, dass in und zwei Personen mit identischen Merkmalen existieren . Sie möchten, dass diese beiden Personen auch in den transformierten Datensätzen identisch sind, aber Ihre Methode 1 lässt dies nicht zu.D.1 D.2
Methode 2 ist in Ordnung. Wenn Sie nacheinander trainieren möchten, besteht eine andere Option darin, die durch mean_1 und std_dev_1 induzierte Transformation auf alle Datenpunkte anzuwenden. Beachten Sie jedoch, dass dies zu Problemen führen kann, wenn sich zukünftige Datenpunkte stark von den Daten in .D.1
quelle
Wenn D1 und D2 wirklich aus derselben Verteilung stammen, sollten Sie, solange D1 mindestens einige hundert Datenpunkte hat, keine großen Abweichungen im Mittelwert und in der Standardabweichung feststellen, sodass eine Normalisierung aller auf D1 basierenden Daten nicht erforderlich ist ein großes Problem darstellen. Das Normalisieren jeder Teilmenge von Daten basierend auf ihrem eigenen Mittelwert und ihrer Standardabweichung bedeutet, dass Ihre Überanpassung mehr aus der Stichprobengröße der Teilmenge als aus der Gesamtstichprobengröße folgt, und in gewisser Weise führen Sie eine falsche Funktion ein: "Welche Teilstichprobe hat dies getan?" Datenpunkt kommen von? ". Das Normalisieren der Daten mit unterschiedlichen Mitteln und Standards sollte das Ergebnis des neuronalen Netz-Trainings nicht so sehr beeinflussen, wie die Konvergenz. Wenn Sie sich über letzteres Sorgen machen, sollten Sie die Ergebnisse von eins als Anfangswerte für verwenden der nächste.
quelle
Einige Anmerkungen:
Wenn beide Datensätze aus derselben Verteilung stammen, sollten beide Verfahren das gleiche Ergebnis liefern (da D1 und D2 den gleichen Mittelwert und die gleiche Varianz haben würden). Aber anscheinend sind sie nicht.
Überprüfen Sie den tatsächlichen Mittelwert und die Varianz für jeden Datensatz. Wenn sie gleich sind, spielt es keine Rolle. Wenn sie unterschiedlich sind, normalisieren Sie jeden Datensatz mit seinem eigenen Mittelwert und seiner eigenen Varianz (Methode 1).
Trainiere auf einem gemischten DatensatzD 3 =D 1¯∪D 2¯ , wo ein Balken Normalisierung bedeutet. Das Training zuerst an einem Datensatz und dann an einem anderen kann viele Probleme verursachen und sollte mit Vorsicht durchgeführt werden (siehe katastrophales Vergessen ).
Wenn neue Eingänge von derselben Quelle wie D2 stammen, normalisieren Sie sie mit dem Mittelwert und der Varianz von D2.
Das Anwenden von Sigmoid auf normalisierte Werte ist möglicherweise nicht erforderlich.
quelle