Feature Engineering
Feature Engineering wandelt Rohdaten mithilfe von Fachwissen in Eingaben um, aus denen ein Modell leicht lernen kann. Zentrale Techniken, Fallstricke durch Datenleckage, Anwendungen und Code.
Feature Engineering bezeichnet das Erstellen, Umwandeln und Auswählen der Eingabevariablen oder Merkmale, aus denen ein Modell des maschinellen Lernens lernt. Dabei kommen Kenntnisse über den Anwendungsbereich und die Daten zum Einsatz. Aus einem rohen Zeitstempel werden die Tageszeit und der Wochentag, aus einer Liste von Kartentransaktionen werden die Ausgaben eines Kunden in den letzten 30 Tagen, und aus Entfernung und Dauer einer Fahrt wird deren Geschwindigkeit. Gut gewählte Merkmale helfen einem einfachen Modell, Muster zu erfassen, die es sonst übersehen würde. Besonders wichtig sind sie bei Tabellen- und Zeitreihendaten, denn ein Modell kann nur die bereitgestellten Spalten nutzen. Deep-Learning-Modelle lernen ihre Merkmale selbstständig aus Rohbildern, Audiodaten und Texten. In diesen Bereichen verlagerte sich das Feature Engineering dadurch auf die Datenaufbereitung und das Erstellen von Merkmalen aus Modellausgaben.
Gängige Verfahren#
- Skalierung und Normalisierung: Durch die Standardisierung auf einen Mittelwert von null und eine Varianz von eins wird verhindert, dass Merkmale mit großen Einheiten distanzbasierte Modelle und gradientenbasiertes Training dominieren. Eine logarithmische Transformation komprimiert stark schiefe Werte wie Einkommen oder Preise.
- Codierung kategorialer Merkmale: Bei der One-Hot-Codierung wird eine Kategorie wie eine Farbe in binäre Spalten umgewandelt. Bei der Zielcodierung wird jede Kategorie durch den durchschnittlichen Zielwert dieser Kategorie ersetzt. Dieser Wert wird anhand separater Folds berechnet, damit die Codierung nicht das Label der jeweiligen Zeile preisgibt.
- Verhältnisse und Wechselwirkungen: Das Verhältnis von Schulden zu Einkommen, der Preis pro Quadratfuß und der Body-Mass-Index kombinieren jeweils zwei Rohwerte zu der Größe, die das Ergebnis tatsächlich beeinflusst.
- Datums- und Zeitmerkmale: Stunde, Wochentag, Monat und Feiertagskennzeichen machen Zyklen sichtbar. Mit Sinus- und Kosinus-Codierungen der Stunde liegen 23:00 und 00:00 nahe beieinander.
- Verzögerungswerte und gleitende Zeitfenster: Vorherige Werte, gleitende Mittelwerte und Anzahlen über aktuelle Zeitfenster vermitteln einem Modell die jüngste Entwicklung eines Sensors, Kontos oder Produkts.
- Diskretisierung: Bei der Gruppierung kontinuierlicher Werte in Bereiche, etwa Altersgruppen, werden stufenartige Effekte erfasst und extreme Werte weniger stark gewichtet.
- Dimensionsreduktion mit PCA: Die Hauptkomponentenanalyse fasst viele korrelierte Merkmale zu wenigen unkorrelierten Merkmalen zusammen.
- Merkmalsauswahl: Filtermethoden bewerten Merkmale anhand ihrer Korrelation oder gegenseitigen Information mit dem Zielwert. Wrapper-Methoden testen Merkmalskombinationen mit einem Modell, und eingebettete Methoden wie die L1-Regularisierung entfernen Merkmale während des Trainings.
Ein Verhältnismerkmal zeigt, warum das funktioniert. Ein in der Tiefe begrenzter Entscheidungsbaum kann jeweils nur nach einem Merkmal aufteilen. Daher bildet er die Regel „Durchschnittsgeschwindigkeit über 90 km/h“ allein anhand von Entfernung und Dauer nur unzureichend ab, lässt sich aber exakt anwenden, sobald die Geschwindigkeit berechnet wurde:
import numpy as np
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
# 1,000 trips: raw distance (km) and duration (h); label = average speed above 90 km/h
rng = np.random.default_rng(0)
distance = rng.uniform(10, 300, 1000)
hours = rng.uniform(0.5, 4.0, 1000)
y = (distance / hours > 90).astype(int)
raw = np.column_stack([distance, hours])
engineered = (distance / hours).reshape(-1, 1) # domain knowledge: speed = distance / time
tree = DecisionTreeClassifier(max_depth=2, random_state=0)
for name, X in [("Raw distance and duration", raw), ("Engineered speed", engineered)]:
print(f"{name}: accuracy {cross_val_score(tree, X, y, cv=5).mean():.3f}")Mit demselben Baum der Tiefe 2 steigt die kreuzvalidierte Genauigkeit von 0.861 bei den ursprünglichen Merkmalen Entfernung und Dauer auf 1.000 beim abgeleiteten Geschwindigkeitsmerkmal, weil die diagonale Grenze im Raum aus Entfernung und Dauer zu einem einzelnen Schwellenwert für die Geschwindigkeit wird.
Merkmale ohne Datenleck validieren#
Ein Merkmal ist nur dann gültig, wenn sein Wert zum Zeitpunkt der Vorhersage bekannt ist. Ein Abwanderungsmodell, das „Anzahl der Supportanrufe im Monat nach der Kündigung“ verwendet, oder eine Zielkodierung, die anhand des vollständigen Datensatzes berechnet wurde, erzielt beim Testen gute Werte und versagt in der Produktion – eine Form von Datenleck. Jede Transformation mit gelernten Parametern, etwa Mittelwerten eines Skalierers oder Kategoriecodierungen, wird deshalb nur anhand der Trainings-Folds angepasst, wie es scikit-learn-Pipelines automatisch tun. Jedes neue Merkmal bleibt nur erhalten, wenn es den kreuzvalidierten Wert verbessert. Auch in Produktionssystemen muss jedes Merkmal genau wie beim Training berechnet werden. Feature Stores stellen dies sicher, indem sie beiden Umgebungen dieselben Merkmalsdefinitionen bereitstellen.
Merkmalsentwicklung in der Computer Vision#
Die klassische Computer Vision stützte sich auf manuell entworfene Merkmale wie Kantendarstellungen, SIFT-Merkmalsbeschreibungen von Schlüsselpunkten und Histogramme orientierter Gradienten, die dann von Klassifikatoren wie Support Vector Machines beschriftet wurden. Seit AlexNet 2012 die ImageNet Challenge gewann, lernen Convolutional Neural Networks ihre eigenen Merkmalskarten aus Pixeln. Der Entwicklungsaufwand verlagerte sich auf die Trainingsdaten – durch Datenerweiterung – und auf die Ausgaben von Bildverarbeitungsmodellen. Der Ultralytics-SpeedEstimator erstellt aus der Ausgabe der Objektverfolgung von YOLO26 ein Geschwindigkeitsmerkmal: Sobald eine Spur fünf Positionen enthält, rechnet er die Pixelverschiebung zwischen der ersten und der letzten Position mit der Skala meter_per_pixel in Meter um und teilt sie durch die verstrichene Zeit, um km/h auszugeben.
Anwendungen#
- Kreditrisiko: Kreditgeber leiten aus den Rohdaten von Konten das Verhältnis von Schulden zu Einkommen, die Kreditauslastung und die Anzahl der Monate seit der letzten versäumten Zahlung ab. Diese Merkmale sagen einen Zahlungsausfall besser voraus als die Kontostände allein.
- Vorausschauende Wartung: Gleitende Mittelwerte, Änderungsraten und die Energie von Frequenzbändern, berechnet aus Schwingungs- und Temperaturdatenströmen, machen beginnenden Verschleiß sichtbar, bevor ein Messwert einen Alarmgrenzwert überschreitet.
- Betrugserkennung: Häufigkeitsmerkmale wie die Anzahl der Kartentransaktionen in der vergangenen Stunde und die Entfernung zwischen einem Kauf und dem üblichen Aufenthaltsort des Karteninhabers helfen dabei, Betrug von normalem Zahlungsverhalten zu unterscheiden.
- Nachfrageprognosen: Einzelhandelsmodelle kombinieren für jedes Geschäft und jedes Produkt verzögerte Umsatzwerte, gleitende Mittelwerte, Preisänderungen, Aktionskennzeichen und Feiertagsindikatoren.
Merkmalsentwicklung und verwandte Begriffe#
- Merkmalsextraktion: Berechnet Merkmale automatisch mithilfe eines festen Algorithmus oder eines gelernten Modells, etwa PCA oder des Backbones eines neuronalen Netzes. Die beiden Begriffe werden oft synonym verwendet. Merkmalsentwicklung bezeichnet den umfassenderen, fachlich angeleiteten Prozess.
- Datenvorverarbeitung: Bereinigt und formatiert Daten, indem Fehler korrigiert, fehlende Werte ergänzt und Datentypen umgewandelt werden. Dieser Schritt erfolgt, bevor Merkmale entworfen werden.
- Embeddings: Dichte Vektoren, die ein Modell während des Trainings lernt, um Wörter, Bilder oder Benutzer darzustellen. In den meisten Sprach- und Bildverarbeitungssystemen ersetzen sie von Hand erstellte Merkmale wie Wortanzahlen.










