<EbeneX/>
Daten Grundlagen · Updated 3. Juli 2026

SMOTE

Definition

Eine Technik zur Erzeugung synthetischer Datenpunkte für unterrepräsentierte Klassen – löst das Problem unbalancierter Datensätze im ML.

Fortgeschritten 3 Min. Lesezeit EN: Synthetic Minority Over-sampling Technique

Einfach erklärt

SMOTE erzeugt synthetische Datenpunkte für die Minderheitsklasse durch Interpolation.

Vorher (imbalanced):
Klasse 0: ●●●●●●●●●● (1000)
Klasse 1: ●● (20)

Nach SMOTE:
Klasse 0: ●●●●●●●●●● (1000)
Klasse 1: ●●●●●●●●●● (1000, davon 980 synthetisch)

Technischer Deep Dive

Algorithmus

from imblearn.over_sampling import SMOTE

smote = SMOTE(random_state=42)
X_resampled, y_resampled = smote.fit_resample(X, y)

# So funktioniert es:
# 1. Wähle Sample aus Minderheitsklasse
# 2. Finde k nächste Nachbarn (gleiche Klasse)
# 3. Wähle zufällig einen Nachbarn
# 4. Erzeuge neuen Punkt auf Linie zwischen beiden

Varianten

VarianteBeschreibung
SMOTEStandard-Interpolation
SMOTE-NCFür kategorische Features
Borderline-SMOTEFokus auf Grenzfälle
ADASYNAdaptiv, mehr Samples in schwierigen Regionen

Mathematische Intuition

Der neue Punkt entsteht durch lineare Interpolation zwischen einem Sample der Minderheitsklasse und einem seiner nächsten Nachbarn:

x_neu = x_i + λ × (x_nachbar - x_i)    mit λ ∈ [0, 1]

Der Zufallsfaktor λ bestimmt, wo auf der Verbindungslinie der synthetische Punkt liegt. Bei λ = 0 entspricht er dem Original, bei λ = 1 dem Nachbarn. Dadurch liegen alle synthetischen Punkte innerhalb der konvexen Hülle der vorhandenen Minderheits-Samples – SMOTE erfindet also keine völlig neuen Regionen, sondern verdichtet den bereits abgedeckten Bereich.

Der häufigste Fehler: SMOTE vor dem Split

Wer SMOTE auf den gesamten Datensatz anwendet und erst danach in Trainings- und Testdaten aufteilt, erzeugt Data Leakage: Synthetische Punkte im Testset wurden aus Trainingspunkten interpoliert (und umgekehrt). Die gemessene Performance ist dann zu optimistisch. Richtig ist: erst splitten, dann SMOTE ausschließlich auf die Trainingsdaten anwenden – das Testset bleibt unangetastet und behält die reale Klassenverteilung.

from imblearn.pipeline import Pipeline
from imblearn.over_sampling import SMOTE
from sklearn.linear_model import LogisticRegression

# Pipeline wendet SMOTE nur beim Fitten an, nie beim Predicten
pipe = Pipeline([
    ("smote", SMOTE(random_state=42)),
    ("clf", LogisticRegression())
])
pipe.fit(X_train, y_train)

Die imblearn-Pipeline sorgt auch bei Cross-Validation dafür, dass Oversampling in jedem Fold nur auf den Trainingsanteil angewendet wird.

SMOTE vs. Alternativen

AnsatzIdeeWann sinnvoll
SMOTESynthetische Minderheits-SamplesMittlere Imbalance, numerische Features
Random OversamplingMinderheit duplizierenSchnelle Baseline, Overfitting-Risiko
UndersamplingMehrheit reduzierenSehr große Datensätze
Class WeightsFehlklassifikation der Minderheit stärker gewichtenOhne Datenmanipulation, von vielen Modellen direkt unterstützt

In der Praxis lohnt es sich, zuerst Class Weights (z. B. class_weight="balanced" in scikit-learn) zu testen – oft reicht das bereits und die Pipeline bleibt einfacher. SMOTE spielt seine Stärke aus, wenn das Modell von zusätzlicher Dichte im Feature-Raum der Minderheitsklasse profitiert.

Grenzen des Verfahrens

SMOTE interpoliert rein geometrisch und kennt die Semantik der Daten nicht. Bei verrauschten Labels erzeugt es synthetische Punkte um falsch gelabelte Beispiele herum und verstärkt so das Rauschen. In hochdimensionalen Räumen verlieren Nachbarschaftsbeziehungen an Aussagekraft, und bei kategorischen Features ist die Standard-Interpolation nicht definiert – hier braucht es SMOTE-NC oder SMOTEN. Für Zeitreihen ist SMOTE ungeeignet, weil interpolierte Punkte die zeitliche Struktur zerstören.

SMOTE ist wie das Klonen von seltenen Pflanzen: Statt nur die wenigen Exemplare zu nutzen, erzeugst du ähnliche Varianten, um eine ausgewogene Population zu bekommen.

Erzeugt synthetische Samples für Minderheitsklasse

Interpoliert zwischen existierenden Datenpunkten

Besser als einfaches Duplizieren

Fraud Detection

Wenige Fraud-Fälle vs. viele normale

Medizinische Diagnose

Seltene Krankheiten erkennen

Churn Prediction

Wenige Churner vs. viele Bleibende

SMOTE vs. Undersampling?

SMOTE: Mehr Daten für Minderheit. Undersampling: Weniger Daten für Mehrheit. SMOTE verliert keine Information, Undersampling ist schneller.

Wann SMOTE nicht nutzen?

Bei sehr kleiner Minderheit (zu wenig für Interpolation), bei hochdimensionalen Daten (Curse of Dimensionality), bei Zeitreihen.

Dein persönliches Share-Bild für Instagram – 1080×1080px, bereit zum Posten.