2

Ich habe eine Frage zur Datenvorverarbeitung für maschinelles Lernen. Spezifisches Transformieren der Daten, so dass sie null Mittelwert und Einheitsvarianz aufweist. Ich habe meine Daten in zwei Datensätze aufgeteilt (ich weiß, ich sollte drei haben, aber der Einfachheit halber sagen wir einfach, ich habe zwei). Sollte ich meinen Trainingsdatensatz so transformieren, dass der gesamte Trainingsdatensatz eine Einheitsvarianz und einen Nullmittelwert aufweist und dann beim Testen des Modells jeden Testeingabevektor so transformiert, dass jeder bestimmte Testeingabevektor Einheitsvarianz und Nullmittelwert darstellt, oder sollte ich einfach transformieren der gesamte Datensatz (Ausprobieren und Testen) zusammen, so dass das Ganze Einheit var und Null bedeutet? Meine Überzeugung ist, dass ich die erstere so machen sollte, dass ich keine verachtenswerte Menge an Voreingenommenheit in den Testdatensatz einführen werde. Aber ich bin kein Experte, also meine Frage.Machine Learning Datenvorverarbeitung

+0

Afaik, Leute wenden Standardisierung auf den gesamten Datensatz an. Aber ich habe eine ähnliche Frage [hier] gestellt (http://stats.stackexchange.com/questions/212597/standardization-in-neural-network-online-training), weil es in einem Online-Trainingsszenario nicht so einfach ist. – davidhigh

Antwort

1

Die Montage Ihres Präprozessors sollte nur am Trainingssatz erfolgen und die Mittelwert- und Varianztransformatoren werden dann im Test-Set verwendet. Berechnen dieser Statistiken über Zug- und Testlecks einige Informationen über das Test-Set.

Lassen Sie mich Link auf eine good course auf Deep-Learning und zeigen Ihnen ein Zitat (beide von Andrej Karpathy):

Gemeinsame pitfall. Ein wichtiger Punkt, der über die Vorverarbeitung zu machen ist, ist, dass jede Vorverarbeitungsstatistik (z. B. der Datenmittelwert) nur auf den Trainingsdaten berechnet und dann auf die Validierungs-/Testdaten angewendet werden muss. Z.B. es wäre ein Fehler, den Mittelwert zu berechnen und ihn von jedem Bild über den gesamten Datensatz zu subtrahieren und dann die Daten in Zug/Wert/Testaufteilungen aufzuteilen. Stattdessen muss der Mittelwert nur über die Trainingsdaten berechnet und dann gleichmäßig von allen Splits (Train/Val/Test) abgezogen werden.

+0

Brilliant! Wird es durchlesen. Ich fand, dass dieses Leck real war, wenn ein Modell, das ich in einem Datensatz trainierte, der vor der Trennung von Zug- und Validierungsdaten standardisiert war, eine störende 98% ige Genauigkeit bei den Testsatzvorhersagen ergab. Es war einfach zu schön, um wahr zu sein. –