Der MinMax Scaler ist eine Variante, um die Trainingsdaten eines Machine Learning Modells zu normalisieren, also die numerischen Werte auf eine einheitliche Skala zu bringen. Dies führt dazu, dass das Modell schneller lernen und konvergieren kann, da der Gradient sich einheitlicher verändert und nicht durch die unterschiedlichen Skalen große Sprünge macht.
Was bedeutet Normalisierung im Deep Learning?
Die Normalisierung von Daten bedeutet, dass alle Features des Modells auf eine einheitliche Skala gebracht werden. Dafür wird meist der Bereich zwischen 0 und 1 oder zwischen -1 und 1 gewählt. In der Realität haben numerische Features normalerweise auch unterschiedliche Skalen. Wenn wir beispielsweise das Alter einer Person und dessen Gehalt nehmen, dann ist ein Alter von 100 Jahren sehr hoch, während ein monatlicher Verdienst von 100 € eher gering einzuschätzen ist.
Die Normalisierung wird auch nur dann genutzt, wenn die zugrundeliegenden Daten keiner Gauss’schen Normalverteilung folgen. Wenn man also annimmt, dass das Gehalt und das Alter normalverteilt sind, sollte man keine Normalisierung vornehmen.
Warum sollte man Daten vor dem Modelltraining normalisieren?
Die Normalisierung von Daten hat viele positive Eigenschaften auf das Training von Machine Learning Modellen. Jedoch sollte darauf geachtet werden, dass sie genutzt wird, wenn das genutzt Modell keine Normalverteilung der Daten voraussetzt, wie das beispielsweise bei einem Neuronalen Netzwerk der Fall ist. Wenn man hingegen Modelle, wie LDA, Gaussian Naive Bayes oder Logistic Regression nutzt, sollte auf eine Normalisierung verzichtet werden und stattdessen eine Standardisierung genutzt werden.
Die folgenden Vorteile ergeben sich durch die Normalisierung von Daten:
- Durch die Nutzung einer einheitlichen Skala, gibt es keinen Bias des Modells hin zu großen Zahlenwerten. Andernfalls könnten Features, die von Natur aus höhere Zahlen haben, mehr zur Modellvorhersage beitragen als andere.
- Das Training verläuft gleichmäßiger, da es keine großen Sprüngen in den Zahlen gibt, die zu Unregelmäßigkeiten führen könnten. Dadurch können höhere Lernraten genutzt werden und das Training wird beschleunigt.
- Durch die Normalisierung kann auch das Risiko eines Internal Covariate Shifts verringert werden. Der Internal Covariate Shift bezeichnet das Phänomen, wenn die Hidden Layers eines Neuronalen Netzwerks auf eine Änderung der Verteilung der Inputwerte reagieren. Dadurch ändern sich die Gewichtungen in den Schichten sehr stark und das Modell konvergiert nicht.
Was ist der Unterschied zwischen Standardisierung und Normalisierung?
Die Normalisierung von Daten beschreibt den Prozess, numerische Werte auf eine einheitliche Skala zu bringen, beispielsweise in den Bereich zwischen 0 und 1 oder zwischen -1 und 1. Die Normalisierung sollte vor allem verwendet werden, wenn die zugrundeliegende Daten keiner Normalverteilung folgen.
Die Standardisierung bewirkt zwar in vielen Fällen auch, dass die Werte in einer einheitlichen Skala liegen, hat aber eigentlich das Ziel die Verteilung der Werte so zu verändern, dass sie einen Mittelwert von 0 und eine Standardabweichung von 1 haben. Die Standardisierung wird also genutzt, damit alle numerischen Inputwerte einer gleichen Verteilung folgen.
Die Normalisierung wird stark von Ausreißern beeinflusst, also von Datenpunkten, die deutlich größere oder kleinere Werte annehmen, als die umliegenden Datenpunkte. Durch die Skalierung in einheitliche Werte liegen die restlichen Werte sehr stark beieinander und nehmen sehr ähnliche Werte an. Dadurch ist eine Unterscheidung zwischen diesen Werten kaum möglich. Deshalb sollten vor der Normalisierung Ausreißer aus dem Datensatz beseitigt werden.
Die Standardisierung hingegen wird von Ausreißern wenig bis gar nicht beeinflusst. Dadurch, dass keine Skalierung in festen Grenzen stattfindet, können die Ausreißer an den äußeren Enden der Normalverteilung liegen. Somit bleibt auch die Information der Ausreißer im Modell erhalten.
Abhängig vom gewählten Modell, das trainiert werden soll, ergibt sich auch, ob die Daten standardisiert oder normalisiert werden können. Manche Modelle setzen eine Normalverteilung von Daten voraus, weshalb für diese auch nur eine Standardisierung verwendet werden sollte. Dazu gehören beispielsweise LDA, Gaussian Naive Bayes oder die Logistische Regression. Für Neuronale Netzwerke hingegen kann die Normalisierung verwendet werden, da keine Verteilung der Daten vorausgesetzt wird.
Wie funktioniert der MinMax Scaler?
Der MinMax Scaler ist eine Form der Normalisierung, der die Werte zwischen 0 und 1 skaliert. Er erhält seinen Namen, da für die Normalisierung der Maximal- und Minimalwert des Features genutzt wird. Die konkrete Formal des MinMax Scalers ist:
\(\) \[x_{\text{scaled}} = \frac{x – x_{\text{min}}}{x_{\text{max}} – x_{\text{min}}}\]
MinMax Scaler vs. Standard Scaler
In der Praxis stellt sich oft die Frage, ob man den MinMax Scaler oder den Standard Scaler nutzen soll. Zwar nennen sich beide Scaler, jedoch handelt es sich beim MinMax Scaler um eine Normalisierung und beim Standard Scaler um eine Standardisierung. Somit haben beide verschiedene Anwendungsbereiche, da der MinMax Scaler die Werte auf eine einheitliche Skale bringt, während der Standard Scaler eine Normalverteilung der Daten herbeiführt.
Somit hängt die Verwendung der beiden Methoden von dem zu trainierenden Modell ab und ob eine Normalisierung oder eine Standardisierung der Daten vorgenommen werden soll.
Was sind die Vor- und Nachteile des MinMax Scalers?
Der MinMax Scaler ist eine beliebte Technik, um Eigenschaften in einem Datensatz auf einen festen Wertebereich zu skalieren. Zu den Vorteilen dieser Skalierungstechnik zählen unter anderem:
- Einfachheit: Durch die Implementierung in gängigen Machine Learning Bibliotheken, wie beispielsweise scikit-learn, kann der Scaler ohne weiteres geladen und mit wenigen Zeilen Code genutzt werden.
- Beibehaltung der Beziehungen: Durch die Definition des MinMax Scalers ist sichergestellt, dass die Reihenfolge der Datenpunkte erhalten bleibt. Außerdem wird auch der relative Abstand der Datenpunkte weitestgehend erhalten, sodass es eine beliebte Methode für Machine Learning Modelle geworden ist, da der Informationsgehalt der Daten erhalten bleibt.
- Kompatibilität mit abstandsbasierten Algorithmen: Vor allem bei abstandsbasierten Algorithmen, wie beispielsweise dem k-nearest neighbors oder dem Clustering, ist der MinMax Scaler sehr beliebt, da die Ähnlichkeit zwischen den Datenpunkten erhalten bleibt.
- Behält die Interpretierbarkeit bei: Der MinMax Scaler ändert die Einheiten und Bereich der ursprünglichen Daten nicht, sodass die neuen Datenpunkte leicht interpretiert und verstanden werden können. Je nach Anwendung spielt die Interpretierbarkeit eine entscheidende Rolle. Dafür bietet sich der MinMax Scaler an.
Neben diesen Argumenten für die Verwendung des MinMax Scalers sollten jedoch auch die Nachteile der Skalierungsmethode vor dem Einsatz bedacht werden und auf den jeweiligen Anwendungsfall abgestimmt sein:
- Empfindlichkeit gegenüber Ausreißern: Ausreißer können die Leistung des MinMax Scalers stark beeinflussen, da sie direkt in die Berechnung der Werte mit reinspielen. Wenn einem Datensatz ein extremer Ausreißer hinzugefügt wird, können sich die Werte der Skalierung stark verändern, sodass möglicherweise ein Großteil der Datenpunkte sehr nahe beieinander liegt.
- Begrenzter Bereich: Die Werte des MinMax Scalers befinden sich immer im Bereich zwischen 0 und 1. Je nach Anwendung kann diese Datenverteilung für eine effektive Analyse ungeeignet sein und es wird ein größerer Datenbereich, wie beispielsweise zwischen -1 und 1 benötigt.
- Auswirkungen auf die Datenverteilung: Bei schiefen Verteilungen oder extremen Werten kann es passieren, dass die Verteilung der Ursprungsdaten nach der Skalierung verändert wird. Dies kann bei bestimmten Algorithmen erhebliche Auswirkungen auf die Vorhersageleistung haben.
- Abhängigkeit vom Datenbereich: Außerdem sollte beachtet werden, dass die Leistung des MinMax Scalers auch vom Datenbereich der Ursprungsdaten abhängt. Wenn die Datenpunkte bereits in einem engen Datenbereich liegen, kann es passieren, dass der MinMax Scaler die Variationen nicht angemessen erfassen kann.
Die Kenntnis dieser Vor- und Nachteile hilft dabei die Entscheidung für oder gegen die Nutzung des MinMax Scalers zu treffen. Diese Wahl sollte abhängig von den spezifischen Merkmalen des Datensatzes und der Attribute gemacht werden.
Wie kann man den MinMax Scaler in Python benutzen?
Dadurch dass der MinMax Scaler in der Machine Learning Bibliothek Scikit-Learn enthalten ist, kann diese Skalierungsmethode sehr einfach in Python genutzt werden. In diesem Abschnitt schauen wir uns die einzelnen Schritte mit Beispieldaten genauer an.
- Importiere aus Scikit-Learn die entsprechende Funktion.
- Erstelle beispielhafte Daten und eine Instanz des MinMax Scalers, die Du unter der Namen “scaler” ablegst.
- Der Scaler muss dann an die entsprechenden Daten angepasst werden.
In unserem Beispiel haben die Daten eine zweidimensionale Struktur und sind in einer Liste von Listen abgespeichert.
- Nun können die Daten mithilfe von “transform” skaliert werden.
Auf Grundlage des angepassten Scalers werden die neuen Werte errechnet. Mithilfe von “fit_transform” lässt sich die Anpassung an die Daten und die tatsächliche Skalierung ein einem Schritt kombinieren.
Wie man sieht wird jede Spalte des Datensatzes auf der Grundlage der jeweiligen Minimal- und Maximalwerte skaliert. Bei dem Training eines Machine Learning Modells ist es wichtig, dass der Skalierer lediglich an die Trainingsdaten angepasst wird und dann jedoch sowohl auf die Trainings- als auch auf die Testdaten angewandt wird. Dadurch ist die Konsistenz des Skalierungsprozesses sichergestellt.
Mithilfe von “inverse_transform” können die skalierten Werte, wieder in die ursprünglichen Werte umgewandelt werden. Dies kann beispielsweise nützlich sein, um die Interpretation im ursprünglichen Datenbereich vornehmen können.
Mithilfe dieser wenigen Schritte können Daten in Python mit dem MinMax Scaler transformiert werden. Dies ist ein wichtiger Vorbereitungsschritt um den Datensatz dann später einem Machine Learning Modell weitergeben zu können.
Das solltest Du mitnehmen
- Der MinMax Scaler ist eine Methode zur Normalisierung von Daten. Dabei werden numerische Werte in einem Datensatz auf eine einheitliche Skala zwischen 0 und 1 gebracht.
- Die Normalisierung von Daten kann für Modelle genutzt werden, die keine Normalverteilung der numerischen Werte voraussetzen. Vor allem Neuronale Netzwerke arbeiten mit Datennormalisierung.
- Durch die Normalisierung der Werte haben die Modelle keinen Bias für Features, die höhere numerische Werte annehmen.
Was sind N-grams?
Die Macht des NLP: Erforschen Sie n-Grams in der Textanalyse, Sprachmodellierung und verstehen Sie deren Bedeutung im NLP.
Was ist das No-Free-Lunch Theorem (NFLT)?
Entschlüsselung des No-Free-Lunch-Theorems: Implikationen und Anwendungen in ML und Optimierung.
Was ist Automated Data Labeling?
Erschließen Sie die Effizienz des maschinellen Lernens mit Automated Data Labeling. Entdecken Sie die Vorteile, Techniken und Tools.
Was ist die Synthetische Datengenerierung?
Verbessern Sie Ihr Datenmanagement mit synthetische Datengenerierung. Gewinnen Sie neue Erkenntnisse und schließen Sie Datenlücken.
Was ist Multi-Task Learning?
Steigern Sie die Effizienz von ML mit Multi-Task-Learning. Erforschen Sie die Auswirkungen auf verschiedene Bereiche & Anwendungen.
Was ist Federated Learning?
Entdecken Sie das Federated Learning. Zusammenarbeit, Sicherheit und Innovation unter Wahrung der Privatsphäre.
Andere Beiträge zum Thema MinMax Scaler
Die Dokumentation des MInMax Scaler in Scikit-Learn findest Du hier.
Niklas Lang
Seit 2020 bin ich als Machine Learning Engineer und Softwareentwickler tätig und beschäftige mich leidenschaftlich mit der Welt der Daten, Algorithmen und Softwareentwicklung. Neben meiner Arbeit in der Praxis unterrichte ich an mehreren deutschen Hochschulen, darunter die IU International University of Applied Sciences und die Duale Hochschule Baden-Württemberg, in den Bereichen Data Science, Mathematik und Business Analytics.
Mein Ziel ist es, komplexe Themen wie Statistik und maschinelles Lernen so aufzubereiten, dass sie nicht nur verständlich, sondern auch spannend und greifbar werden. Dabei kombiniere ich praktische Erfahrungen aus der Industrie mit fundierten theoretischen Grundlagen, um meine Studierenden bestmöglich auf die Herausforderungen der Datenwelt vorzubereiten.