Читать книгу Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow - Aurélien Géron - Страница 76
Skalieren von Merkmalen
ОглавлениеDas Skalieren von Merkmalen ist eine der wichtigsten Arten von Transformationen, die Sie werden anwenden müssen. Mit wenigen Ausnahmen können Machine-Learning-Algorithmen nicht besonders gut mit numerischen Eingabedaten auf unterschiedlichen Skalen arbeiten. Dies ist bei den Immobiliendaten der Fall: Die Gesamtzahl der Zimmer reicht von etwa 6 bis 39.320, während das mittlere Einkommen nur von 0 bis 15 reicht. Eine Skalierung der Zielgröße ist dagegen im Allgemeinen nicht erforderlich.
Es gibt zwei übliche Verfahren, um sämtliche Merkmale auf die gleiche Skala zu bringen: die Min-Max-Skalierungund die Standardisierung.
Die Min-Max-Skalierung (viele nennen dies Normalisieren) ist schnell erklärt: Die Werte werden verschoben und so umskaliert, dass sie hinterher von 0 bis 1 reichen. Wir erreichen dies, indem wir den kleinsten Wert abziehen und anschließend durch die Differenz von Minimal- und Maximalwert teilen. Scikit-Learn enthält für diesen Zweck den Transformer MinMaxScaler. Über den Hyperparameter feature_range können Sie den Wertebereich einstellen, falls Sie aus irgendeinem Grund nicht 0 bis 1 nutzen möchten.
Die Standardisierung funktioniert deutlich anders: Bei dieser wird zuerst der Mittelwert abgezogen (sodass standardisierte Werte stets den Mittelwert Null besitzen), anschließend wird durch die Standardabweichung geteilt, sodass die entstehende Verteilung eine Varianz von 1 hat. Im Gegensatz zur Min-Max-Skalierung sind die Werte bei der Standardisierung nicht an einen bestimmten Wertebereich gebunden. Für einige Algorithmen stellt das ein Problem dar (z.B. erwarten neuronale Netze meist Eingabewerte zwischen 0 und 1). Dafür ist die Standardisierung wesentlich weniger anfällig für Ausreißer. Stellen Sie sich vor, ein Bezirk hätte durch einen Datenfehler ein mittleres Einkommen von 100. Die Min-Max-Skalierung würde alle übrigen Werte von 0 bis 15 in den Bereich 0 bis 0,15 quetschen, während sich bei der Standardisierung nicht viel ändert. Scikit-Learn enthält zur Standardisierung einen Transformer namens StandardScaler.
Wie bei allen Transformationen ist es wichtig, das Skalierungsverfahren nur mit den Trainingsdaten anzupassen, nicht mit dem vollständigen Datensatz (der die Testdaten enthält). Nur dann dürfen Sie diese zum Transformieren des Trainingsdatensatzes und des Testdatensatzes (und neuer Daten) verwenden. |