Die Qualität der Eingabedaten hat einen erheblichen Einfluss auf die Leistung von maschinellen Lernmodellen. Eine zentrale Technik in der Datenvorverarbeitung ist die Normalisierung, die sicherstellt, dass numerische Merkmale in einer konsistenten Größenordnung vorliegen. Doch warum ist das so wichtig, und wie funktioniert es?
Warum ist Normalisierung notwendig?
Viele Algorithmen des maschinellen Lernens sind empfindlich gegenüber großen Wertebereichen und Skalierungsunterschieden zwischen Variablen. Beispielsweise könnte ein Datensatz folgende Merkmale enthalten:
Merkmal | Wertebereich |
---|---|
Alter | 18 – 90 |
Einkommen | 20.000 – 500.000 € |
Ohne Normalisierung würde das Einkommen das Alter in den Berechnungen dominieren, weil es in einer viel größeren Größenordnung liegt. Dadurch könnten Gewichte in Modellen wie linearen Regressionen oder neuronalen Netzen verzerrt werden.
Algorithmen, die stark von der Normalisierung profitieren:
- Gradientenbasierte Modelle wie neuronale Netze
- k-Nearest-Neighbor (k-NN) (da Distanzen zwischen Punkten berechnet werden)
- Support Vector Machines (SVMs)
Algorithmen, die weniger betroffen sind:
- Baumbasierte Modelle wie Entscheidungsbäume oder Random Forests (da sie auf Regeln und nicht auf Distanzen basieren)
Methoden der Normalisierung
Es gibt verschiedene Methoden, um numerische Daten zu normalisieren. Die Wahl der richtigen Methode hängt vom Datensatz und dem verwendeten Algorithmus ab.
1. Min-Max-Skalierung (Min-Max-Normalisierung)
Diese Methode transformiert alle Werte auf eine Skala von 0 bis 1 oder von -1 bis 1.
Formel:

Dabei sind:
- X′X’ der normalisierte Wert
- XX der ursprüngliche Wert
- XminX_{\min} das Minimum der Spalte
- XmaxX_{\max} das Maximum der Spalte
✅ Vorteil: Erhält die ursprüngliche Verteilung der Daten.
❌ Nachteil: Empfindlich gegenüber Ausreißern, da ein einzelner Extremwert das Skalierungsintervall stark beeinflussen kann.
Anwendung in Python:
from sklearn.preprocessing import MinMaxScaler
import numpy as np
data = np.array([[18], [25], [40], [60], [90]]) # Beispiel: Alterswerte
scaler = MinMaxScaler()
normalized_data = scaler.fit_transform(data)
print(normalized_data)
2. Z-Score-Normalisierung (Standardisierung)
Hierbei werden die Werte so transformiert, dass sie eine mittlere von 0 und eine Standardabweichung von 1 haben.
Formel:

Dabei sind:
- μ\mu der Mittelwert
- σ\sigma die Standardabweichung
✅ Vorteil: Gut geeignet für Daten mit unterschiedlichen Wertebereichen und Ausreißern.
❌ Nachteil: Kann schwieriger zu interpretieren sein, da die Werte negativ werden können.
Anwendung in Python:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
standardized_data = scaler.fit_transform(data)
print(standardized_data)
3. Logarithmische Skalierung
Diese Methode wird oft verwendet, wenn die Daten stark schief verteilt sind (z. B. Einkommen oder Einwohnerzahlen).
Formel: X′=log(X+1)
✅ Vorteil: Reduziert den Einfluss großer Werte und macht die Verteilung symmetrischer.
❌ Nachteil: Funktioniert nicht für negative Werte.
Anwendung in Python:
import numpy as np
log_transformed_data = np.log1p(data)
print(log_transformed_data)
Wann sollte welche Normalisierungsmethode verwendet werden?
Methode | Wann verwenden? |
---|---|
Min-Max-Skalierung | Wenn alle Features ähnlich skaliert sein sollen (z. B. für neuronale Netze). |
Z-Score-Normalisierung | Wenn die Daten unterschiedlich skaliert sind und robust gegenüber Ausreißern sein sollen. |
Log-Skalierung | Wenn die Daten stark verzerrt sind (z. B. Einkommen, Verkaufszahlen). |
Fazit
Normalisierung ist ein essenzieller Schritt in der Datenvorverarbeitung, der die Leistung vieler Algorithmen verbessert. Die Wahl der richtigen Methode hängt von den Daten und dem verwendeten Modell ab. Während Min-Max-Skalierung für neuronale Netze nützlich ist, bietet die Z-Score-Normalisierung Vorteile bei statistischen Modellen. In allen Fällen gilt: Vor der Modellierung immer prüfen, ob eine Normalisierung notwendig ist!