Direkt zum Inhalt

Wie man Daten normalisiert: Ein kompletter Leitfaden mit Beispielen

Schluss mit verschwindenden Gradienten und verzerrten Modellen. Lerne, wie du Daten mit Min-Max und Z-Score in Scikit-learn normalisieren kannst, um Machine-Learning-Modelle zu verbessern.
Aktualisiert 29. Jan. 2026  · 14 Min. lesen

Ein neuronales Netzwerk, das einfach nicht konvergieren will, bei dem der Verlust flach bleibt und die Gradienten entweder verschwinden oder explodieren, hat oft überhaupt kein Problem mit seiner Architektur. Das Problem ist oft viel einfacher: Eingabefunktionen, die auf völlig unterschiedlichen Skalen liegen, wobei eine Spalte von 0 bis 1 reicht, während eine andere bis in die Zehntausende reicht. 

Meiner Erfahrung nach taucht dieses Muster in der Praxis ständig auf. Fünf Minuten Vorverarbeitung können das lösen, was tagelanges Hyperparameter-Tuning nicht geschafft hat.

In diesem Tutorial zeige ich dir, wie du Daten normalisierst. Ich zeig dir verschiedene Normalisierungstechniken und wann man sie anwendet, inklusive Python-Implementierungen. Außerdem lernst du, welche Fehler und Missverständnisse oft passieren und wie du sie vermeiden kannst.

Wenn du mehr darüber erfahren möchtest, wie man Daten für Algorithmen des maschinellen Lernens vorbereitet, empfehle ich dir unseren Kurs „Vorverarbeitung für maschinelles Lernen in Python” zu machen.

Was ist Datennormalisierung?

Datennormalisierung ist der Prozess, bei dem numerische Merkmale so umgewandelt werden, dass sie vergleichbare Bereiche abdecken oder einer einheitlichen Skala folgen. 

Der Begriff hat je nach Kontext unterschiedliche Bedeutungen: Im maschinellen Lernen geht's meistens darum, Merkmalswerte neu zu skalieren, damit die Größe nicht die Wichtigkeit bestimmt, während es beim Datenbankdesign darum geht, Tabellen so zu organisieren, dass Redundanzen vermieden werden.

Ich werde mich hauptsächlich auf die Bedeutung des maschinellen Lernens konzentrieren, aber später kurz auf die Datenbanknormalisierung eingehen, um die Überschneidungen im Vokabular zu klären.

Warum ist die Normalisierung von Daten wichtig?

Wenn Merkmale auf verschiedenen Skalen vorkommen, geben manche Algorithmen den Werten, die gerade größer sind, ein übertriebenes Gewicht. 

Ein Merkmal, das das Einkommen in Tausend misst, wird eines dominieren, das das Alter in Jahrzehnten misst, nicht weil das Einkommen für die Vorhersage wichtiger ist, sondern einfach weil die Zahlen größer sind. Durch die Normalisierung werden Merkmale gleich behandelt, damit das Modell lernen kann, welche wirklich wichtig sind.

Neben dem Modelltraining hilft die Normalisierung auch bei:

  • Kombinieren von Messungen, die unterschiedliche Einheiten verwenden
  • Daten aus verschiedenen Quellen mit unterschiedlichen Konventionen zusammenführen
  • Entwerfen von Datenbankschemata, die über einen längeren Zeitraum hinweg konsistent bleiben müssen.

Datennormalisierung vs. Skalierung vs. Standardisierung

Also, was ist der Unterschied zwischen Normalisierung, Skalierung und Standardisierung? Diese drei Begriffe tauchen oft in Dokumentationen auf und werden häufig synonym benutzt, obwohl sie unterschiedliche Bedeutungen haben.

Der praktische Unterschied ist, ob dein Modell Werte innerhalb bestimmter Grenzen braucht. Die Min-Max-Normalisierung sorgt für Grenzen, die Standardisierung nicht. Die folgende Tabelle zeigt die Unterschiede:

Begriff

Was es macht

Ausgangsbereich

Am besten geeignet für

Skalierung

Allgemeiner Begriff für jede Art von Bereichstransformation

Unterschiedlich

Oberkategorie

Normalisierung (Min-Max)

Komprimiert auf feste Grenzen

Normalerweise 0 bis 1

Begrenzte Daten, neuronale Netze, die bestimmte Eingabebereiche erwarten

Standardisierung (Z-Score)

Mittelwert 0, Skala bis Standardabweichung 1

Unbegrenzt (negative Werte sind möglich)

Unbegrenzte Daten, Algorithmen, die von ungefähr normalen Verteilungen ausgehen

Für einen tiefergehenden Vergleich, wann jeder Ansatz nach hinten losgeht, check unseren Blogbeitrag „ : Normalisierung vs. Standardisierung erklärt erklärt die Sonderfälle gut.

Anwendungsfälle für die Datennormalisierung

Nachdem wir jetzt die Begriffe geklärt haben, schauen wir uns ein paar typische Anwendungsfälle an. Die Normalisierung kann je nach Situation ganz unterschiedlich nützlich sein, von der Verbesserung der Dynamik beim Modelltraining bis hin zu sinnvollen Vergleichen zwischen verschiedenen Datenquellen.

Mach die Leistung deines Machine-Learning-Modells besser

Neuronale Netze und logistische Regression aktualisieren Gewichte durch Gradientenabstieg, wobei der Beitrag jedes Merkmals zum Vorhersagefehler bestimmt, wie stark das entsprechende Gewicht angepasst wird. 

Wenn sich die Größen der Merkmale stark unterscheiden, tun das auch die resultierenden Gradienten: Große Merkmale erzeugen große Gradienten, kleine Merkmale erzeugen kleine Gradienten. Dieses Ungleichgewicht führt dazu, dass der Optimierer in manchen Richtungen große Schritte macht, während er sich in anderen kaum bewegt, was zu instabilem Training oder gar keiner Konvergenz führt.

Entfernungsbasierte Algorithmen wie kNN und K-Means haben ein ähnliches Problem. Sie berechnen die Ähnlichkeit mithilfe von Distanzmetriken, typischerweise der euklidischen Distanz, wobei größere numerische Werte allein aufgrund ihrer Größe stärker in die Berechnung einfließen. Ein Merkmal von 0 bis 10.000 wird ein Merkmal von 0 bis 1 übertrumpfen, egal welches Merkmal für die Vorhersage wirklich wichtig ist. 

Durch Skalierung wird sichergestellt, dass alle Merkmale proportional zu ihrem tatsächlichen Vorhersagewert beitragen und nicht zu ihrem willkürlichen numerischen Bereich.

Ermögliche einen fairen Vergleich der Funktionen

Wenn man zusammengesetzte Werte erstellt oder Messungen mit unterschiedlichen Einheiten kombiniert, können Rohwerte zu irreführenden Vergleichen führen. 

Eine Kennzahl zur Kundenzufriedenheit, die die monatlichen Ausgaben in Dollar, die Anzahl der Logins und das Alter des Kontos in Tagen zusammenfasst, wird den Dollarbeträgen mehr Gewicht geben, einfach weil diese Zahlen zufällig größer sind. 

Durch die Normalisierung kannst du diese Messungen so zusammenfassen, dass sie ihre tatsächliche Bedeutung widerspiegeln und nicht nur ihre zufällige Größe.

Das gilt auch für die explorative Analyse und Visualisierung. Das Zeichnen von Merkmalen in verschiedenen Maßstäben macht es schwieriger, Muster zu erkennen oder Verteilungen zu vergleichen. Normalisierte Daten zeigen besser, wie die Features miteinander hängen.

Verbesser die Datenqualität und -integrität

Produktionspipelines beziehen ihre Daten oft aus mehreren Quellen mit unterschiedlichen Konventionen. Der Umsatz kann in einem System in Dollar und in einem anderen in Tausend angegeben werden. Daten werden in einer API als Unix-Zeitstempel und in einer anderen als formatierte Zeichenfolgen angezeigt. 

Wenn du vor der Weiterverarbeitung eine einheitliche Skala und ein einheitliches Format festlegst, vermeidest du kleine Fehler, die später schwer zu finden sind.

In Datenbankkontexten hat Normalisierung eine andere, aber ähnliche Bedeutung: Tabellen so organisieren, dass jede Information genau an einem Ort gespeichert ist. 

Das verhindert Probleme bei der Aktualisierung, wo das Ändern eines Werts an einer Stelle zu widersprüchlichen Werten an anderen Stellen führt. Auch wenn die Techniken sich von der Feature-Skalierung unterscheiden, ist der Grund dafür ähnlich: Daten konsistent und vorhersehbar halten.

Gängige Techniken zur Datennormalisierung

Jeder Normalisierungsansatz geht von unterschiedlichen Annahmen über deine Daten aus und führt zu unterschiedlichen Ausgabemerkmalen. Die richtige Wahl hängt davon ab, wie deine Daten verteilt sind, ob es Ausreißer gibt und was dein nachgelagertes Modell erwartet.

Min-Max-Normalisierung

Bei der Min-Max-Normalisierung werden Werte auf einen festen Bereich komprimiert, normalerweise von 0 bis 1, indem man das Minimum abzieht und durch den Bereich teilt. Dieser Ansatz behält die ursprüngliche Verteilungsform bei und stellt gleichzeitig sicher, dass alle Werte innerhalb bekannter Grenzen liegen.

So geht's: Zieh das Minimum ab und teil durch den Bereich. Das ist es.

Min-Max-Normalisierung

Was es macht:

  • Sorgt dafür, dass die Leistung innerhalb der festgelegten Grenzen bleibt.
  • Behält die ursprüngliche Form bei – nur in der Größe angepasst
  • Null wird dein Boden, eins wird deine Decke.

Am besten geeignet für:

  • Pixelintensitäten (immer 0-255, so die Definition)
  • Wahrscheinlichkeiten und Prozentsätze
  • Prüfungsergebnisse, Bewertungen, alles, was eine natürliche Unter- und Obergrenze hat
  • Neuronale Netze, die begrenzte Eingaben erwarten, wie Bildklassifikatoren

Was du beachten solltest:

Ausreißer können die Min-Max-Normalisierung komplett kaputt machen. Stell dir vor, die meisten Daten liegen zwischen 10 und 100, aber ein Wert liegt bei 99.999? Dieser eine Punkt vergrößert deinen Bereich so sehr, dass alles Normale zu einem winzigen Streifen nahe Null zusammengedrückt wird. Eine schlechte Beobachtung, und schon ist das ganze Feature ruiniert.

Überleg dir auch, was passiert, wenn neue Daten außerhalb des Trainingsbereichs liegen. Testwerte, die über dem Trainingsmaximum liegen, führen zu einer Ausgabe über 1. Ob das irgendwas kaputt macht, hängt von deinem Modell ab.

Z-Score-Standardisierung

Z-Score-Standardisierung verändert die Daten so, dass der Mittelwert Null und die Standardabweichung Eins ist, ohne dass man feste Grenzen für das Ergebnis festlegen muss. Dieser Ansatz funktioniert gut bei Daten ohne offensichtliche natürliche Grenzen und wird von vielen Algorithmusimplementierungen allgemein angenommen oder empfohlen.

So geht's: Zieh den Mittelwert ab und teil durch die Standardabweichung.

Z-Score-Standardisierung

Was es macht:

  • Alles neu zentrieren, damit der Durchschnitt null wird
  • Skalen, bei denen eine Standardabweichung einer Einheit entspricht
  • Die Ausgabe kann negativ werden und kann jede bestimmte Grenze überschreiten.

Am besten geeignet für:

  • Daten ohne offensichtliche natürliche Grenzen
  • Ungefähr glockenförmige Verteilungen
  • Algorithmen, die eine Standardisierung voraussetzen oder empfehlen (die meisten Tutorials zu neuronalen Netzen, Implementierungen der logistischen Regression)
  • Wenn du nicht weißt, was du sonst nehmen sollst (eine vernünftige Standardeinstellung)

Kompromiss:

Die Interpretierbarkeit leidet darunter. „Diese Beobachtung liegt 1,7 Standardabweichungen über dem Durchschnitt“ ist komplizierter zu verstehen als „das liegt bei 80 % des Bereichs“. Wenn die Beteiligten die skalierten Werte direkt verstehen müssen, könnte Min-Max besser rüberkommen.

Ausreißer blasen immer noch den Mittelwert und die Standardabweichung auf und verzerren die Skalierung für Massendaten, sind aber weniger ein Problem als bei der Min-Max-Normalisierung.

Robuste Skalierung

Robuste Skalierung geht die Ausreißersensitivität sowohl des Min-Max- als auch des Z-Score-Ansatzes an, indem sie Median und Interquartilsabstand (IQR) anstelle von Mittelwert und Standardabweichung. Diese Statistiken bleiben stabil, egal wie extrem die Werte an den Rändern deiner Verteilung sind.

So geht's: Zieh den Median ab und teil durch den IQR (Unterschied zwischen dem 25. und 75. Perzentil).

Robuste Skalierung

Was es macht:

  • Skalen, die auf dem mittleren Teil deiner Daten basieren und Extremwerte nicht berücksichtigen
  • Tails können machen, was sie wollen, ohne die Transformation für typische Werte zu verzerren.
  • Stabiler, wenn deine Daten legitime Ausreißer haben, die du nicht entfernen kannst

Am besten geeignet für:

  • Finanztransaktionen, bei denen die meisten Käufe klein sind, aber manchmal auch echte Transaktionen mit hohem Wert passieren.
  • Einkommensdaten, die oft lange rechte Schwänze haben
  • Sensorwerte, bei denen Spitzen echte Ereignisse zeigen
  • Jede stark schiefe Verteilung und jede Situation, in der sich auf Mittelwerten basierende Ansätze von Extremwerten beeinflussen lassen

Warum das bei verzerrten Daten hilft:

Die Einkommensverteilung ist ein gutes Beispiel dafür. Die meisten Leute verdienen ganz normal, und ein paar verdienen echt viel: eine klassische rechtsverschobene Verteilung. Die Standardabweichung wird durch die Leute mit hohen Einkommen aufgebläht, was die Standardisierung für die meisten Beobachtungen weniger nützlich macht. Median und IQR bleiben trotzdem in der Mitte der Verteilung.

Normalisierung von Vektoren mit Einheitsnorm

Die Normalisierung nach der Einheitsnorm (L1/L2) funktioniert anders als die oben genannten Techniken: Anstatt Merkmale (Spalten) zu skalieren, werden in der Regel einzelne Stichproben (Zeilen) skaliert. Jeder Sample-Vektor wird neu skaliert, sodass seine Länge unter einer gewählten Norm (oft L2) 1 ist. Dadurch wird die Gesamtgröße entfernt und nur die Richtung/die Proportionen bleiben erhalten.

Verwechsle das nicht mit der L1/L2-Regulierung. Regularisierung (Lasso/Ridge): Die Regularisierung ändert das Trainingsziel, indem sie eine Strafe auf die Modellgewichte legt, um Überanpassung zu reduzieren, und nicht, indem sie die Eingabevektoren neu skaliert.

So geht's: Bei der L2-Normalisierung wird jede Zeile durch ihre euklidische Norm geteilt, sodass die quadrierten Werte zusammen eins ergeben. L1 nimmt stattdessen die Summe der absoluten Werte.

L2-Normalisierung

Was es macht:

  • Entfernt die Größe aus der Gleichung
  • Macht Zeilen nach ihrem Anteil vergleichbar, nicht nach ihrer Größe
  • Der Winkel zwischen den Vektoren ist das Signal; wie lang der Vektor ist, ist egal.

Am besten geeignet für:

  • Textdaten als Wortanzahlvektoren dargestellt: Ein Bericht mit 50.000 Wörtern hat natürlich eine höhere Wortanzahl als eine E-Mail mit 500 Wörtern, aber mit L2 kannst du die Anteile der Inhalte vergleichen.
  • Alles, was mit Kosinusähnlichkeit zu tun hat
  • Dokumentenklassifizierung, Informationsgewinnung und Empfehlungssysteme, die auf Inhalten basieren

Nicht nützlich für:

Situationen, in denen es wirklich auf die Größe ankommt. Wenn die Gesamtwortzahl für deine Aufgabe wichtig ist, geht durch die Normalisierung Information verloren.

Datenbanknormalisierung

Datenbanknormalisierung heißt, relationale Tabellen neu zu ordnen, um Redundanzen zu vermeiden und die Datenintegrität zu verbessern – zum Beispiel, indem man sicherstellt, dass die E-Mail-Adresse eines Kunden nur an einer Stelle gespeichert wird und nicht in jedem Bestelldatensatz wiederholt wird.

Es hat nichts mit der Skalierung von Funktionen zu tun.

Der Begriff überschneidet sich einfach. Beim maschinellen Lernen geht es bei der „Normalisierung“ meistens darum, Zahlenwerte zu skalieren. Im Bereich Data Engineering oder SQL geht's darum, Strukturen von Tabellen zu organisieren (oft als 1NF, 2NF oder 3NF bezeichnet).

Wichtigster Unterschied:

  • Merkmalsnormalisierung (ML): Zahlen umwandeln (z. B. Skalierung von 0 bis 1), damit Modelle besser lernen können.
  • Datenbanknormalisierung (SQL): Schema organisieren, um doppelte Daten zu vermeiden.

Wenn ein Dateningenieur dich bittet, „die Datenbank zu normalisieren“, will er, dass du die Struktur der Tabellen korrigierst und nicht „ MinMaxScaler “ ausführst.

Wenn du mehr wissen willst, schau dir diesen Leitfaden zur Datenbanknormalisierung in SQL.

Wie man Daten in der Praxis normalisiert

Um die Normalisierung richtig hinzukriegen, muss man auf die Reihenfolge der Schritte achten, vor allem bei der Aufteilung in Trainings- und Testdaten. Der Code selbst ist einfach, aber kleine Fehler in der Reihenfolge können deine ganze Auswertung zunichte machen.

Daten in Python normalisieren

Scikit-learn gibt dir die Skalierer, aber die Hauptregel ist eher prozedural als mathematisch: zuerst teilen, nur auf das Training anpassen und dann den angepassten Transformator überall sonst wiederverwenden.

Wieso die ganze Aufregung? Weil die Skalierung Zahlen aus Daten lernt: Min/Max, Mittelwert/Standardabweichung, Median/IQR. Wenn diese Zahlen mit dem Testsatz berechnet werden, hast du stillschweigend zukünftige Informationen in das Training einfließen lassen. Nichts stürzt ab, aber deine Metriken haben einfach nicht mehr die Bedeutung, die du ihnen gibst.

Ein kleines Beispiel:

import pandas as pd
from sklearn.preprocessing import MinMaxScaler, StandardScaler, RobustScaler
from sklearn.model_selection import train_test_split

# Example data
data = pd.DataFrame({
    'age': [25, 32, 47, 51, 62, 28, 35, 44],
    'income': [30000, 45000, 72000, 85000, 120000, 38000, 55000, 67000],
    'score': [0.2, 0.5, 0.7, 0.4, 0.9, 0.3, 0.6, 0.8]
})

# Split happens before any scaling
train_data, test_data = train_test_split(data, test_size=0.25, random_state=42)

An dieser Stelle siehst du den Trainingssplit als „das Bild, wie die Welt aussah, als ich das Modell erstellt habe“. Der Test-Split besteht aus „neuen, unbekannten Daten“. Dein Scaler muss die Welt nur vom ersten lernen.

MinMaxScaler

Die Min-Max-Standardisierung ist ziemlich einfach: Sie speichert das Trainingsminimum und -maximum für jede Spalte und wendet dann später dieselbe Zuordnung an.

scaler = MinMaxScaler()
scaler.fit(train_data)  # training only

train_scaled = scaler.transform(train_data)
test_scaled = scaler.transform(test_data)

Wenn du dich dabei erwischst, wie du „ fit() “ auf dem Testsatz sagst, halt kurz inne. Das macht den ganzen Sinn eines Tests irgendwie zunichte.

StandardScaler

StandardScaler Speichert den Mittelwert und die Standardabweichung aus dem Trainingssatz und nutzt dann dieselben Werte, um sowohl das Training als auch den Test zu transformieren.

scaler = StandardScaler()
scaler.fit(train_data)

train_standardized = scaler.transform(train_data)
test_standardized = scaler.transform(test_data)

Das ist der Typ, der leise kaputtgeht, wenn was schiefgeht, weil man den Mittelwert und die Standardabweichung leicht „stabilisieren“ kann, indem man aus Versehen mehr Daten nimmt, als man sollte.

RobustScaler

RobustScaler macht das Gleiche wie „einmal anpassen, immer wieder verwenden“, nutzt aber Median und IQR, sodass ein paar extreme Punkte nicht die Skala bestimmen.

scaler = RobustScaler()
scaler.fit(train_data)

train_robust = scaler.transform(train_data)
test_robust = scaler.transform(test_data)

Ein praktischer Hinweis darauf, dass sich eine robuste Skalierung lohnt: Du hast einen Long Tail, den du wirklich behalten möchtest (Zahlungen, Ansprüche, Sensorspitzen), und du willst nicht, dass ein einziger seltsamer Tag den Rest der Funktion fast auf Null drückt.

Schnelle Pandas-Berechnungen

Für schnelle Erkundungen ist es okay, die Berechnungen direkt in Pandas zu machen, solange du ehrlich bist, was du tust: Das ist zum Anschauen von Verteilungen, nicht zum Bewerten von Modellen.

# Min-max
df_minmax = (data - data.min()) / (data.max() - data.min())

# Z-score
df_zscore = (data - data.mean()) / data.std()

Verhindern von Datenlecks

Vorsicht: Die Statistiken basieren auf dem gesamten Datensatz. Mach das vor dem Teilen, und die Testwerte beeinflussen die Umwandlung. Deine Bewertung verliert an Bedeutung, weil bei der Vorverarbeitung bereits Antworten eingesehen wurden, die nicht hätten eingesehen werden dürfen.

Das Leckmuster sieht normalerweise so aus:

So machst du es nicht:

scaler = MinMaxScaler()
scaled_all = scaler.fit_transform(full_data)  # problem
train, test = split(scaled_all)

Bei diesem Ansatz werden die Daten vor dem Aufteilen normalisiert, sodass die Testdaten die Transformation schon beeinflusst haben.

So machst du es richtig:

Indem wir die Daten zuerst aufteilen, stellen wir sicher, dass der Scaler die Statistiken nur aus dem Trainingssatz lernt und die Testdaten wirklich unbekannt bleiben.

scaler = MinMaxScaler()
scaler.fit(train_data)
train_scaled = scaler.transform(train_data)
test_scaled = scaler.transform(test_data)

Gleiche Vorgänge, andere Reihenfolge. Und die Reihenfolge ist das Wichtigste.

Wenn du lieber die End-to-End-Vorverarbeitung üben möchtest (einschließlich korrekter Standardisierung und Vermeidung von Datenverlusten), ist dieser Kurs genau das Richtige für dich: Vorverarbeitung für maschinelles Lernen in Python.

Normalisierung in SQL

Wie wir schon gesagt haben, gibt's verschiedene Bedeutungen für dasselbe Wort. Hier ist „Normalisierung“ keine numerische Transformation. Es ist eine strukturelle Entscheidung, keine doppelten Fakten mehr zu machen.

Wenn deine Auftragstabelle in jeder Zeile die Spalte „ customer_email “ hat, kannst du das in der Datenbank machen. Die Datenbank kann auch später noch gut mit Widersprüchen klarkommen: eine E-Mail in einer Zeile, eine andere E-Mail in einer anderen Zeile, und keine offensichtliche Möglichkeit, zu wissen, welche davon „echt” ist.

Vor der Normalisierung:

CREATE TABLE orders_denormalized (
    order_id INT,
    customer_name VARCHAR(100),
    customer_email VARCHAR(100),
    product_name VARCHAR(100),
    product_price DECIMAL(10,2),
    quantity INT
);

Die Kundendaten werden in jeder Zeile wiederholt. E-Mail-Adressen zu aktualisieren heißt, alle Bestellungen zu suchen und zu ändern.

Nach der Normalisierung:

CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);

CREATE TABLE products (
    product_id INT PRIMARY KEY,
    name VARCHAR(100),
    price DECIMAL(10,2)
);

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT REFERENCES customers(customer_id),
    product_id INT REFERENCES products(product_id),
    quantity INT
);

Kundeninfos gibt's nur einmal. Abfragen brauchen Verknüpfungen, aber Updates werden an einer Stelle gemacht.

Wie man die richtige Normalisierungstechnik auswählt

Zum Schluss möchte ich dir einen Entscheidungsrahmen geben, den du nutzen kannst, wenn du dich das nächste Mal fragst, welche Normalisierungstechnik du verwenden sollst.

Min-Max, wenn Grenzen vorhanden sind

Die Min-Max-Skalierung klappt am besten, wenn deine Daten bekannte, stabile Grenzen haben, die sich zwischen Training und Einsatz nicht ändern. Pixelwerte liegen immer zwischen 0 und 255. Die Wahrscheinlichkeitswerte können nicht größer als 1 sein. Die Noten für Prüfungen haben festgelegte Mindest- und Höchstwerte.

Dieser Ansatz passt auch, wenn dein Modell wie manche neuronale Netzwerkarchitekturen bestimmte Eingabegrenzen braucht. Vermeide aber die Min-Max-Skalierung, wenn es Ausreißer gibt, weil ein einziger Extremwert alle normalen Beobachtungen in einen engen Bereich um Null herum quetschen kann.

Standardisierung als Notlösung

Standardisierung ist eine vernünftige Standardoption, wenn du keine klaren Annahmen über die Grenzen oder die Verteilung deiner Daten hast. Das funktioniert gut bei Merkmalen mit unterschiedlichen Bereichen, unbekannten Grenzen oder ungefähr glockenförmigen Verteilungen.

Viele Algorithmus-Implementierungen gehen von standardisierten Eingaben aus oder empfehlen diese, darunter die meisten Frameworks für neuronale Netze und Bibliotheken für logistische Regression. Wenn du dir nicht sicher bist, welchen Ansatz du wählen sollst, und deine Daten keine offensichtlichen natürlichen Grenzen haben, ist die Standardisierung normalerweise eine sichere Wahl.

Robust genug für die Unordnung der echten Welt

Robuste Skalierung ist die richtige Wahl, wenn deine Daten erhebliche Ausreißer enthalten, die legitime Werte und keine Fehler darstellen. Finanztransaktionsdaten haben meistens diese Eigenschaft: Die meisten Einkäufe sind klein, aber ab und zu gibt's auch mal große Beträge, die echt sind und im Datensatz bleiben sollten.

Einkommensverteilungen, Sensorwerte mit gelegentlichen Spitzen und alle Daten mit starker Verzerrung oder langen Schwänzen profitieren von einer robusten Skalierung. Der Median und der Interquartilsabstand bleiben an den Großteil deiner Verteilung gebunden, egal was an den Extremen passiert.

Wann man nicht normalisieren sollte

Baumbasierte Modelle wie Random Forests, XGBoost und Gradient Boosted Trees teilen sich nach Schwellenwerten auf und berechnen nie Abstände oder Gradienten zwischen Merkmalen. Die Skalierung ist für sie nicht sichtbar, daher macht die Normalisierung die Sache nur komplizierter, ohne dass es einen Vorteil bringt.

One-Hot-codierte Merkmale sind schon binär (0en und 1en), also bringt es nichts, sie zu skalieren. Nur kategoriale Datensätze gehören zur gleichen Kategorie.

Manchmal funktionieren domänenspezifische Transformationen besser als allgemeine Normalisierung:

  • Die Log-Skalierung komprimiert lange rechte Schwänze und verteilt gleichzeitig die gebündelten niedrigeren Werte, was bei Einkommens- oder Preisdaten oft besser funktioniert als Standardansätze. 
  • Binning ist sinnvoll, wenn die Zugehörigkeit zu einer Kategorie wichtiger ist als genaue Zahlenwerte. 
  • Leistungstransformatoren helfen dabei, Schwankungen in bestimmten Situationen zu stabilisieren.

Zusammenfassende Vergleichstabelle

Hier ist ein Überblick über die Techniken und ihre Anwendungsfälle:

Technique

Wann man es benutzt

Vermeiden, wenn

Ausgangsbereich

Min-max

Die Daten haben bekannte Grenzen; das Modell erwartet begrenzte Eingaben.

Ausreißer vorhanden; Grenzen können sich verschieben

0 bis 1 (fest)

Standardisierung

Unbekannte Grenzen; ungefähr normale Verteilung; nicht sicher, welche man nehmen soll

Brauche garantierte Grenzen; starke Ausreißer

Unbegrenzt

Robuste Skalierung

Starke Ausreißer; schiefe Verteilungen; lange Schwänze

Die Daten sind schon sauber und symmetrisch.

Unbegrenzt

L1/L2-Normalisierung

Textdaten; Kosinusähnlichkeit; hochdimensionale Räume

Die Größe hat Bedeutung

Einheitsvektor

Keiner

Baumbasierte Modelle; One-Hot-Merkmale; domänenspezifische Transformationen verfügbar

Gradienten- oder distanzbasierte Modelle

Original

Fazit

Skalierungsunterschiede machen Modellen, die sich darum kümmern, echt Probleme. Entfernungsmetriken bevorzugen Merkmale mit großer Ausdehnung. Der Gradientenabstieg hat Probleme, wenn die Gradienten mehrere Größenordnungen umfassen. Das Training bleibt stehen oder geht voll daneben, und man kann nicht einfach aus dem Code oder der Architektur erkennen, warum.

Die Normalisierung kümmert sich darum. Verwende die Min-Max-Normalisierung für begrenzte Daten, robuste Skalierung, wenn Ausreißer echt sind und nicht entfernt werden können, und Standardisierung als vernünftige Standardeinstellung. Die Mechanik ist einfach: Trainier dich fit und wende das Gelernte überall konsequent an. 

Meiner Erfahrung nach kostet es Zeit, wenn man nicht erkennt, wann Skalierung wichtig ist, und dann tagelang das Modellverhalten debuggt, obwohl die Lösung eigentlich in der Vorverarbeitung liegt. Oder der umgekehrte Fehler, wie zum Beispiel das reflexartige Anwenden von Skalierung auf Modelle, bei denen das gar nicht nötig ist, was die Komplexität erhöht, ohne dass es was bringt.

Bereit für das nächste Level? Unser umfassendes Angebot Machine Learning Engineer Der Lernpfad führt durch alle Schritte des Machine-Learning-Workflows.

Häufig gestellte Fragen zur Datennormalisierung

Was ist der Unterschied zwischen Normalisierung und Standardisierung?

Auch wenn die Begriffe in der Dokumentation oft verwechselt werden, meinen sie doch verschiedene Techniken. Bei der Normalisierung (genauer gesagt der Min-Max-Skalierung) werden die Daten normalerweise auf einen festen Bereich, meistens 0 bis 1, umskaliert. Standardisierung (Z-Score-Normalisierung) wandelt Daten so um, dass sie einen Mittelwert von 0 und eine Standardabweichung von 1 haben.

Muss man bei jedem Machine-Learning-Modell die Daten skalieren?

Nein. Algorithmen, die auf Entfernungsberechnungen (wie K-Nearest Neighbors) oder Gradientenabstieg (wie neuronale Netze) basieren, müssen skaliert werden, damit sie richtig funktionieren. Allerdings verarbeiten baumbasierte Modelle wie Random Forests und XGBoost Merkmale einzeln nach Teilungsregeln und sind im Allgemeinen unabhängig von der Skalierung der Merkmale.

Wo in der Pipeline soll ich den Scaler einbauen?

Du musst den Scaler nur auf die Trainingsdaten anwenden, und zwar nach der Aufteilung in Trainings- und Testdaten. Wenn du den Scaler vor dem Teilen auf den ganzen Datensatz anwendest, beeinflussen die Infos aus dem Testsatz den Trainingsprozess, was zu irreführenden Bewertungsmetriken führt.

Was passiert, wenn man die Normalisierung nicht macht?

Die Auswirkungen hängen vom jeweiligen Algorithmus ab. Neuronale Netze können Probleme mit der Konvergenz haben, was zu unregelmäßigem Training oder komplettem Lernversagen führen kann. K-Nearest Neighbors (KNN) liefert verzerrte Ergebnisse, weil der Algorithmus Merkmale mit größeren Werten (z. B. Gehalt) viel stärker gewichtet als Merkmale mit kleineren Werten (z. B. Alter).

Gibt's Fälle, wo Skalierung nach hinten losgehen kann?

Ja. Wenn dein Datensatz viele Ausreißer hat, kann die Min-Max-Normalisierung die meisten „normalen“ Daten in einen sehr kleinen Bereich packen und so alle nützlichen Abweichungen unterdrücken. Außerdem ist eine Skalierung bei kategorischen Merkmalen, die mit One-Hot-Kodierung kodiert wurden, meistens nicht nötig, weil sie schon binär sind (0 und 1).


Josep Ferrer's photo
Author
Josep Ferrer
LinkedIn
Twitter

Josep ist Data Scientist und Projektmanager beim katalanischen Fremdenverkehrsamt und nutzt Daten, um die Erfahrungen von Touristen in Katalonien zu verbessern. Sein Fachwissen umfasst das Management von Datenspeicherung und -verarbeitung, gekoppelt mit fortschrittlichen Analysen und der effektiven Kommunikation von Datenerkenntnissen.

Er ist auch ein engagierter Pädagoge, der den Big-Data-Masterstudiengang an der Universität von Navarra unterrichtet und regelmäßig aufschlussreiche Artikel über Datenwissenschaft auf Medium und KDNuggets veröffentlicht.

Er hat einen BS in technischer Physik von der Polytechnischen Universität von Katalonien und einen MS in intelligenten interaktiven Systemen von der Universität Pompeu Fabra.

Derzeit engagiert er sich leidenschaftlich dafür, datenbezogene Technologien durch die Medium-Publikation ForCode'Sake einem breiteren Publikum zugänglich zu machen.

Themen

Kurse zur Datennormalisierung

Lernpfad

Ingenieur für maschinelles Lernen

44 Std.
Auf diesem Lernpfad lernst du alles, was du über maschinelles Lernen und MLOps wissen musst.
Details anzeigenRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Tutorial

Wie man Listen in Python aufteilt: Einfache Beispiele und fortgeschrittene Methoden

Lerne, wie du Python-Listen mit Techniken wie Slicing, List Comprehensions und itertools aufteilen kannst. Finde heraus, wann du welche Methode für die beste Datenverarbeitung nutzen solltest.
Allan Ouko's photo

Allan Ouko

Tutorial

Python JSON-Daten: Ein Leitfaden mit Beispielen

Lerne, wie man mit JSON in Python arbeitet, einschließlich Serialisierung, Deserialisierung, Formatierung, Leistungsoptimierung, Umgang mit APIs und Verständnis der Einschränkungen und Alternativen von JSON.
Moez Ali's photo

Moez Ali

Tutorial

Abstrakte Klassen in Python: Ein umfassender Leitfaden mit Beispielen

Lerne mehr über abstrakte Klassen in Python, wozu sie gut sind und wie du mit dem Modul „abc“ einheitliche Schnittstellen sicherstellen kannst. Enthält praktische Beispiele und bewährte Methoden für eine effektive Umsetzung.
Derrick Mwiti's photo

Derrick Mwiti

Tutorial

Wie man in Python auf 2 Dezimalstellen rundet

Lerne, wie du in Python eine Zahl auf zwei Dezimalstellen rundest, um die Genauigkeit zu verbessern, indem du Techniken wie round(), format() und String-Formatierungstechniken verwendest.
Allan Ouko's photo

Allan Ouko

Tutorial

Python-Arrays

Python-Arrays mit Code-Beispielen. Lerne noch heute, wie du mit Python NumPy Arrays erstellen und ausdrucken kannst!
DataCamp Team's photo

DataCamp Team

Tutorial

Python Switch Case Statement: Ein Leitfaden für Anfänger

Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Matt Crabtree's photo

Matt Crabtree

Mehr anzeigenMehr anzeigen