Wann müssen Daten normalisiert werden, wenn zwei Datensätze aus derselben Verteilung verwendet werden?


7

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.


Warum hat diese Frage eine Prämie, aber immer noch keine zufriedenstellende Antwort? Nun, ich denke, Sie müssen mehr Informationen über die Datensätze D1 und D2 bereitstellen. Was ist die Quelle (ein physikalischer Prozess?) Und das Format (ist dies ein 1-D-Array von Zahlen?). Das Wissen um das Ziel (z. B. ist es eine binäre Klassifizierung?) Wäre ebenfalls hilfreich.
Hans

@hans: Bei den Daten handelt es sich im Wesentlichen um Metadaten zum Netzwerkverkehr (z. B. durchschnittliche Anzahl von Paketen / Sek.). Ich versuche, Anomalien im Verkehr zu finden. Die Idee war, dass in einem vollkommen feinen Netzwerk der normale Verkehr ein bestimmtes Muster aufweist und dass Anomalien eine Abweichung von diesem Muster verursachen.
DocDriven

Antworten:


3

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.1D.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


'(...) stellen sich vor, dass in D1 und D2 zwei Individuen mit identischen Merkmalen existieren. Sie möchten, dass diese beiden Personen auch in den transformierten Datensätzen identisch sind - nicht genau richtig. Sehr oft machen Sie das Gegenteil: (insbesondere wenn Ihr Datensatz klein ist) Sie erweitern die Daten, sodass ein Beispiel für eine NN einige Male etwas anders dargestellt wird.
Hans

@hans: Also, was Sie sagen, ist, dass Methode 1 praktikabel ist?
DocDriven

@DocDriven Ich sage, dass dieses Argument nicht verwendet werden kann, um Methode eins abzulehnen.
Hans

1

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.


Ich verstehe deine letzte Aussage nicht. Welche Anfangswerte soll ich für was nehmen?
DocDriven

@DocDriven Wenn Sie ein neuronales Netz initialisieren, müssen Sie es mit Anfangswerten für die Gewichte versehen. Das Aussäen mit Gewichten aus dem vorherigen Training kann die Umschulung beschleunigen, obwohl Risiken wie Überanpassung bestehen.
Akkumulation

1

Einige Anmerkungen:

  1. 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.

  2. Ü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).

  3. Trainiere auf einem gemischten Datensatz D.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 ).

  4. Wenn neue Eingänge von derselben Quelle wie D2 stammen, normalisieren Sie sie mit dem Mittelwert und der Varianz von D2.

  5. Das Anwenden von Sigmoid auf normalisierte Werte ist möglicherweise nicht erforderlich.


Vielen Dank für die Klarstellung. Zu Punkt 1.), dass die beiden Datensätze aus derselben Verteilung stammen: Sie sind, aber Mittelwert und Varianz entsprechen nicht immer genau dem Mittelwert und der Varianz der Population, z. B. gibt es geringfügige Unterschiede. Bedeutet dies, dass es keine Rolle spielt, mit welchen Parametern ich neue Eingaben normalisiere (Punkt 4)?
DocDriven

@DocDriven Sie haben Recht, es kann kleine Unterschiede geben. Wenn die Datensätze groß sind, sollten die Unterschiede klein und irrelevant sein. Wenn Datensätze klein sind, besteht das Hauptproblem in der Größe der Datensätze und in der Art und Weise, wie sie erweitert werden können. Wie groß sind sie genau?
Hans

ca. 1000 bis 2000 Proben pro Satz. Ich denke, die Unterschiede sollten gering sein.
DocDriven

1
Ok, und wie unterscheiden sich die Sets voneinander? Wenn ich beispielsweise im CV-Bereich zwei Bildersätze mit unterschiedlichen Kameras hätte, würde ich sie separat normalisieren. Aber wenn ich zwei Sets mit derselben Kamera machen würde, aber an anderen Tagen, würde ich sie zusammenführen und zusammen normalisieren.
Hans
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.