Kurs
Feature Engineering in Machine Learning: Ein praktischer Leitfaden
Beim Feature Engineering geht es darum, wichtige Merkmale auszuwählen oder zu erstellen, die die Leistung eines Modells verbessern. Unabhängig von deinem ML-Algorithmus wirst du dich bei der Datenaufbereitung wahrscheinlich auf Techniken des Feature Engineering verlassen.
In diesem Artikel werden wir das Feature Engineering und seine Methoden kennenlernen und verstehen, wie man sie anhand eines praktischen Beispiels zur Vorhersage von Hauspreisen anwendet.
Was ist Feature Engineering beim maschinellen Lernen?
Ich erinnere mich, dass ich ein Modell entwickelt habe, um die Liefertreue bei einem Projekt an meinem Arbeitsplatz zu verbessern. Anstatt komplexe Ensemble-Modelle zu trainieren, haben wireinen einfachen Regressionsalgorithmus mit nur drei zusätzlichen Merkmalen aus den vorhandenen Daten entwickelt.
Allein durch diesen Ansatz verbesserte sich unsere Liefertreue von 48% auf 56%. Das ist eine große Verbesserung, wenn man bedenkt, dass es 10 Millionen Datensätze gibt. So groß ist der Unterschied, den technische Verfahren wie die Merkmalsextraktion machen können!
Einfach ausgedrückt, bedeutet Feature Engineering die Auswahl die richtigen Merkmale aus vorhandenen Daten.
Betrachte einen Wetterdatensatz mit Spalten für Temperatur, Ort, Monat, Jahr und Datum. Die Datumsspalte ist für die Erfassung von saisonalen Trends möglicherweise nicht besonders wertvoll, da die Monatsspalte diese Informationen bereits enthält. Durch das Entfernen der Datumsspalte kann die Dimensionalität des Datensatzes reduziert werden, ohne die Genauigkeit der Wettervorhersagen zu beeinträchtigen.
Werde ein ML-Wissenschaftler
Arten von Merkmalen beim maschinellen Lernen
Bevor wir uns mit den verschiedenen Feature-Engineering-Techniken beschäftigen, sollten wir zunächst die verschiedenen Arten von Features verstehen.
Numerische Merkmale
Wie der Name schon sagt, stellen numerische Merkmale Daten in Zahlen dar. Sie sind kontinuierliche quantitative Variablen. Beispiele sind Größe, Alter und Gehalt.
Kategorische Merkmale
Eine kategoriale Spalte kann nur diskrete Merkmale enthalten. Das Geschlecht einer Person ist zum Beispiel eine kategorische Spalte, da es nur einige Geschlechtstypen geben kann. Der Geburtsmonat ist ein weiteres Beispiel, denn die Werte müssen zwischen Januar und Dezember liegen.
Kategoriale Variablen werden weiter in binäre und nicht-binäre Typen unterteilt. Binäre Variablen haben zwei mögliche Kategorien, während nicht-binäre Merkmale mehrere Kategorien haben können.
Text- und Zeitserienmerkmale
Textuelle Spalten enthalten nur Textdaten. Beispiele sind Produktbewertungen oder Spalten mit Produktbeschreibungen in einem Einzelhandelsdatensatz.
Zeitreihenmerkmale hingegen stellen zeitnahe Daten dar, z. B. wöchentliche Umsätze oder Aktienkursschwankungen über ein Jahr hinweg.
Bild vom Autor
Techniken der Merkmalstechnik
Das Feature-Engineering bietet verschiedene leistungsstarke Techniken zur Umwandlung von Rohspalten in erwünschte Merkmale. Hier besprechen wir einige prominente Beispiele.
Umgang mit fehlenden Werten
Fehlende Werte können die Leistung des Modells beeinträchtigen, daher ist der richtige Umgang mit ihnen entscheidend. Es gibt zwei Hauptansätze:
- Anrechnung: Unter Imputation versteht man das Auffüllen fehlender Werte anhand verfügbarer Informationen. Du kannst zum Beispiel den Mittelwert, den Modus und den Medianwert verwenden, um fehlende Werte zu ersetzen.
- Löschung: Diese Methode entfernt Zeilen mit fehlenden Werten und ist am besten geeignet, wenn die fehlenden Daten weniger als 10 % der Datensatzgröße ausmachen.
Eine ausführliche Anleitung zum Umgang mit fehlenden Daten findest du in diesem Tutorial über Techniken zum Umgang mit fehlenden Daten oder in diesem Kurs über den Umgang mit fehlenden Daten in Python.
Umgang mit Ausreißern
Ausreißer sind anormale Werte, die sich deutlich vom Rest der Datenpunkte unterscheiden. Wenn du zum Beispiel einen Gehaltsdatensatz hast, bei dem die meisten Beobachtungen zwischen 90 und 120 Tausend Dollar liegen, ist eine Gehaltszahl wie 400 Tausend Dollar oder 10 Tausend Dollar ein Ausreißer.
- Ersetzen: Du kannst Ausreißer durch eine statistische Zahl wie das Maximum oder Minimum der Spalte ersetzen.
- Verwandlungen: Wende Transformationen wie Logarithmus oder Quadratwurzel an, um die Auswirkungen zu verringern.
- Robuste Modelle: Verwende Modelle, die weniger anfällig für Ausreißer sind. Entscheidungsbäume, Gradient Boosting und Ridge Regression sind weniger von Ausreißern betroffen.
- Löschen: Wenn keine der Methoden funktioniert, ist das Entfernen der Ausreißer aus dem Datensatz die letzte Option.
Kodierung kategorischer Variablen
Modelle des maschinellen Lernens können kategoriale Variablen nicht direkt verarbeiten, daher müssen sie in numerische Darstellungen umgewandelt werden. Im Folgenden werden einige beliebte Kodierungstechniken vorgestellt.
- One-Hot-Codierung: Jede Kategorie in einem kategorialen Merkmal wird als separate Spalte dargestellt, mit einem Wert von 1, wenn die Kategorie in der Stichprobe vorhanden ist, und 0 für alle anderen Spalten. Das folgende Beispiel erklärt dies.
Betrachte einen Datensatz mit dem folgenden kategorialen Merkmal:
Name |
Geschlecht |
John |
Männlich |
Rachel |
Weiblich |
Emma |
Weiblich |
Mit der One-Hot-Codierung erstellen wir separate Spalten für jede mögliche Kategorie in dem Merkmal Gender
:
Name |
Weiblich |
Männlich |
John |
0 |
1 |
Richale |
1 |
0 |
Emma |
1 |
0 |
Da John männlich ist, bekommt die Spalte "Männlich" ein 1
, während die Spalte "Weiblich" 0
bleibt. Ebenso sind Rachel und Emma weiblich, also steht in der Spalte "Weiblich" 1
und in der Spalte "Männlich" 0
.
Ein komplettes Tutorial zur One-Hot-Kodierung in Python findest du in diesem Tutorial zur One-Hot-Kodierung.
- Kodierung des Labels: Bei der Label-Codierung wird jeder Kategorie eines kategorialen Merkmals ein eindeutiger numerischer Wert zugewiesen. Dieser Ansatz ist nützlich für ordinale Daten (bei denen die Kategorien eine sinnvolle Reihenfolge haben), kann aber bei nicht-ordinalen kategorialen Variablen zu Problemen führen, da das Modell die numerischen Werte fälschlicherweise als eine inhärente Rangfolge interpretieren könnte.
Betrachte einen Datensatz mit einer Spalte Location
, die kategoriale Werte enthält:
Standort |
Kodierter Wert |
New York |
1 |
Kalifornien |
2 |
Texas |
3 |
Kalifornien |
2 |
Texas |
3 |
Jedem eindeutigen Standort wird ein eindeutiger numerischer Wert zugewiesen. Da Kalifornien (2) jedoch nicht von Natur aus "zwischen" New York (1) und Texas (3) liegt, kann die Verwendung der Label-Kodierung für nicht-ordinale Daten zu irreführenden Modellannahmen führen. In solchen Fällen wird oft eine Ein-Punkt-Kodierung bevorzugt, um zu vermeiden, dass eine unbeabsichtigte numerische Beziehung zwischen den Kategorien hergestellt wird.
- Ordinale Kodierung: Die ordinale Kodierung ähnelt der Label-Kodierung, wird aber speziell dann verwendet, wenn kategoriale Werte eine sinnvolle Reihenfolge haben. Anstatt willkürliche Zahlenwerte zuzuweisen, werden die Kategorien auf der Grundlage ihrer Rangfolge zugeordnet. Dadurch wird sichergestellt, dass höhere Werte den höher eingestuften Kategorien entsprechen.
Betrachte eine Education level
Spalte mit den folgenden Kategorien:
Bildungsniveau |
Kodierter Wert |
UG (Undergraduate) |
1 |
PG (Postgraduate) |
2 |
PhD |
3 |
Da ein PhD ein höheres Bildungsniveau darstellt als ein PG, das wiederum höher ist als ein UG, spiegeln die zugewiesenen Zahlenwerte diese Rangfolge wider.
- Zielkodierung: Ersetzt jeden kategorischen Wert durch den Mittelwert der entsprechenden Zielvariablenwerte. Die Zielvariable ist die abhängige Variable, die das Modell vorherzusagen versucht. Diese Technik ist besonders nützlich bei kategorialen Merkmalen mit hoher Kardinalität (d. h. mit vielen eindeutigen Werten), da sie dazu beiträgt, die Dimensionalität zu reduzieren und gleichzeitig die relevanten Informationen zu erhalten.
Betrachte einen Datensatz, bei dem Location
ein kategoriales Merkmal ist und Target variable
ein numerisches Ergebnis darstellt:
Standort |
Zielvariable |
New York |
2 |
Kalifornien |
3 |
Texas |
5 |
Kalifornien |
1 |
Texas |
4 |
Um die Spalte Location
zu kodieren, berechnen wir den Mittelwert der Target variable
für jede einzelne Kategorie:
- Kalifornien: (3 + 1) / 2 = 2
- Texas: (5 + 4) / 2 = 4.5
- New York: Nur ein Wert (2), also bleibt es bei 2
Standort |
Kodierter Wert |
New York |
2 |
Kalifornien |
2 |
Texas |
4.5 |
Kalifornien |
2 |
Texas |
4.5 |
Wenn du nach einem umfassenderen Leitfaden für den Umgang mit kategorischen Daten suchst, findest du in diesem Tutorial zum Umgang mit kategorischen Daten weitere Informationen.
Merkmal Skalierung
Die Skalierung von Merkmalen stellt sicher, dass numerische Merkmale innerhalb eines standardisierten Bereichs liegen und verhindert, dass einige Merkmale aufgrund ihrer größeren Werte den Lernprozess dominieren.
Modelle des maschinellen Lernens, die auf abstandsbasierten Berechnungen beruhen (z. B. lineare Regression, k-nearest neighbors und neuronale Netze), können beeinträchtigt werden, wenn die Merkmale sehr unterschiedliche Größenordnungen haben.
Nehmen wir zum Beispiel einen Arbeitnehmerdatensatz mit den folgenden Merkmalen:
- Altersspanne von 20 bis 60
- Das Einkommen reicht von 30.000 bis 150.000 $.
Da das Einkommen viel größere Werte als das Alter hat, könnte ein Modell dem Einkommen allein aufgrund seiner Größe mehr Bedeutung beimessen, nicht weil es tatsächlich relevanter ist.
Hier sind einige gängige Techniken:
- Normalisierung (Min-Max-Skalierung): Diese Methode skaliert alle Merkmalswerte so, dass sie zwischen 0 und 1 liegen. Sie subtrahiert den Minimalwert der Spalte von jedem Datenpunkt und teilt ihn dann durch den Bereich dieser Spalte, der die Differenz zwischen dem Maximal- und dem Minimalwert ist. Die Formel sieht wie folgt aus:
Skalierter Wert =( Datenpunkt - min(Spalte))/(max(Spalte) - min(Spalte))
- Standardisierung (Z-Score-Skalierung): Dadurch werden alle Merkmale so umgewandelt, dass sie einen Mittelwert von 0 und eine Standardabweichung von 1 haben. Die Formel lautet: Der Mittelwert einer Spalte wird von jedem Datenpunkt dieser Spalte abgezogen, und der Rest wird durch die Standardabweichung dieses Merkmals geteilt.
Skalierter Wert =( Datenpunkt - Mittelwert(Spalte))/(std(Spalte))
Einen detaillierten Vergleich zwischen Normalisierung und Standardisierung findest du hier: Normalisierung vs. Standardisierung. Standardisierungsleitfaden.
Neue Funktionen erstellen
Das Erstellen neuer, aussagekräftiger Merkmale aus bestehenden Daten bietet logischere Einblicke in das Modell.
Wenn du zum Beispiel in einem Datensatz zur Hauspreisvorhersage die Spalten length
und breadth
getrennt hast, kannst du ein neues Merkmal ableiten: area = length * breath
price
, das sich direkt auf die Zielvariable beziehen kann. Die Eingabe dieses area
Merkmals in das Modell vereinfacht die Entdeckung versteckter Muster.
Auswahl der Merkmale
Bei der Merkmalsauswahl werden nur relevante Merkmale berücksichtigt, indem unnötige Spalten entfernt werden. Die Konzentration auf die informativsten Daten hilft dabei, eine Überanpassung zu vermeiden, den Rechenaufwand zu verringern und die Modellleistung zu verbessern. Hier sind einige Techniken:
- Filtermethoden: Diese Methode wählt wichtige Merkmale auf der Grundlage ihrer statistischen Eigenschaften aus. Mit einer Korrelations-Heatmap können wir zum Beispiel Merkmale entfernen, die dieselben Informationen enthalten. Andere Techniken sind der Chi-Quadrat-Test, die ANOVA und die Methoden des Informationsgewinns.
- Wrapper-Methoden: Diese Methoden trainieren ein Vorhersagemodell iterativ mit verschiedenen Kombinationen von Merkmalsuntergruppen und die beste Untergruppe mit optimaler Modellleistung wird ausgewählt. Vorwärts- und Rückwärtsselektion sowie rekursive Eliminierungsmethoden fallen unter diese Kategorie.
Feature Engineering in Python: Ein praktisches Beispiel
Feature Engineering lässt sich am besten durch praktische Umsetzung verstehen.
Die "Hauspreisvorhersage" ist ein riesiger, realistischer Datensatz mit 81 Spalten. Ich habe es wegen seiner vielfältigen Funktionen ausgewählt, die dir helfen können, die Techniken des Feature Engineering in der Praxis besser zu verstehen.
Die ersten Schritte:
- Lade den Datensatz von Kaggle herunter.
- Lade sie in einen Pandas DataFrame für die Analyse und das Feature Engineering.
Umgang mit kategorisch fehlenden Werten
Der folgende Code identifiziert kategoriale Spalten im Datensatz und ersetzt ihre fehlenden Werte durch die häufigste Kategorie:
import pandas as pd
# Load dataset (replace 'your_file.csv' with the actual file name)
df = pd.read_csv('your_file.csv')
# Select categorical columns
categorical_cols = df.select_dtypes(include=['object']).columns
# Replace missing values with the most frequent category (mode)
for col in categorical_cols:
mode = df[col].mode()[0] # Get the most common value
df[col].fillna(mode, inplace=True) # Fill missing values
Umgang mit fehlenden numerischen Werten
Fehlende numerische Werte werden durch den Mittelwert oder den Median ersetzt. Der Mittelwert ist eine beliebte Option für statistisch verteilte Daten, während der Median gut funktioniert, wenn die Spalte Ausreißer enthält. Wir werden also nach Ausreißern suchen und uns für eine Methode entscheiden.
Um potenzielle Ausreißer zu visualisieren, können wir Boxplots verwenden, die helfen, Extremwerte zu identifizieren. Im Folgenden findest du eine Python-Implementierung zur Erkennung von Ausreißern in ausgewählten numerischen Spalten:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
features = ['LotFrontage', 'MasVnrArea', 'GarageYrBlt']
# Plot box plots
df[features]=np.log(df[features])
df[features].boxplot(figsize=(8, 4))
plt.title('Box Plot for Outlier Detection')
plt.ylabel('Values')
plt.xticks(rotation=45)
plt.show()
Ausgabe:
Die obigen Boxplots zeigen Punkte, die außerhalb der Whisker liegen - diese werden als Ausreißer bezeichnet. Ersetzen wir also fehlende Werte durch den Median.
Code, um Nullen durch Medianwerte zu ersetzen:
import pandas as pd
# Select numerical columns
numerical_columns = df.select_dtypes(include=['number']).columns
for col in numerical_columns:
median = df[col].median()
df[col].fillna(median, inplace=True) # Replace nulls with median
Neue Funktionen erstellen
Spalten wie YearBuilt
, YearRemodAdd
, GarageYrBlt
und YrSold
enthalten Jahre (z. B. 2001, 1976), die keinen direkten Einfluss auf die Zielvariable haben. Diese absoluten Jahreswerte haben zwar keinen direkten Einfluss auf die Hauspreise, aber wir können mehr nützliche Erkenntnisse gewinnen, wenn wir berechnen, wie alt das Haus oder die Renovierung zum Zeitpunkt des Verkaufs ist.
Anstatt YearBuilt
zu verwenden, können wir zum Beispiel ein neues Merkmal erstellen: House Age
=YrSold
-YearBuilt
Code, um diese neuen Funktionen zu erstellen:
# Get columns that contain 'Yr' or 'Year'
year_columns = [feature for feature in numerical_columns if 'Yr' in feature or 'Year' in feature]
# Convert year values into age-related features
for col in year_columns:
df[col] = df['YrSold'] - df[col]
Feature Transformation
Beim maschinellen Lernen können sich schiefe numerische Merkmale negativ auf die Modellleistung auswirken, vor allem bei Modellen, die von einer Normalverteilung ausgehen (z. B. bei der linearen Regression). Um dies zu korrigieren, wenden wir eine Log-Transformation an.
Bevor wir eine Log-Transformation anwenden, müssen wir schiefe Merkmale identifizieren. Wir schließen jedoch Spalten mit Nullen aus, da der Logarithmus von Null undefiniert ist.
Hier ist eine Implementierung in Python, um schiefe Spalten zu erkennen:
import pandas as pd
# Get numerical columns
numerical_columns = df.select_dtypes(include=['number']).columns
# Identify columns containing zeros
numerical_0s = df.loc[:, (df == 0).any()].select_dtypes(include=['number']).columns
# Remove columns that contain zeros from consideration
numerical_columns = numerical_columns.difference(numerical_0s)
# Calculate skewness for the remaining numerical columns
skewness = df[numerical_columns].skew()
# Set threshold for skewness (e.g., absolute value > 1 indicates high skewness)
skewed_columns = skewness[abs(skewness) > 1]
# Display skewed columns
print("Skewed Columns:")
print(skewed_columns)
Ausgabe:
Wir werden die Lognormalverteilung verwenden, um diese fünf schiefen Spalten in eine Gaußverteilungumzuwandeln:
import numpy as np
# The list of highly skewed features identified earlier
skew_features = ['LotFrontage', 'LotArea', '1stFlrSF', 'GrLivArea', 'SalePrice']
# Apply log transformation to each skewed feature
for col in skew_features:
df[col] = np.log(df[col])
Wandle kategorische Merkmale in numerische Werte um
Wir haben bereits verschiedene Kodierungstechniken besprochen; in diesem Beispiel werden wir die Zielkodierung anwenden.
# Select categorical variables
categorical_columns = df.select_dtypes(include=['object', 'category']).columns
# Apply target encoding
for col in categorical_columns:
# Compute mean SalePrice for each category
labels_ordered = df.groupby([col])['SalePrice'].mean().sort_values().index
# Assign numerical values based on target variable mean
labels_ordered = {x: i for i, x in enumerate(labels_ordered, 0)}
# Map encoded values back to the dataframe
df[col] = df[col].map(labels_ordered)
Im obigen Code ist die Zielvariable SalePrice
, also haben wir die Daten nach jeder kategorialen Spalte gruppiert und den Mittelwert SalePrice
für jede Gruppe berechnet. Diese Mittelwerte wurden dann den entsprechenden kategorialen Werten in dieser Spalte zugeordnet.
Unser Datensatz ist jetzt bereit für maschinelles Lernen!
Wenn du dein Verständnis von Konzepten des überwachten Lernens vertiefen möchtest und wissen willst, wie Modelle konstruierte Merkmale nutzen, ist dieser Kurs zum überwachten Lernen mit Scikit-Learn einehervorragende Ressource.
Tools und Bibliotheken für das Feature Engineering
In diesem Abschnitt stellen wir dir die am häufigsten verwendeten Python-Bibliotheken und Automatisierungstools für das Feature Engineering vor.
Pandas
Pandas ist das am häufigsten verwendete Python-Framework zur Verarbeitung strukturierter Daten. Es führt viele Schritte der Merkmalstechnik durch, wie z. B. Transformation, Datenaggregation und Merkmalsextraktion. Pandas machen auch die Datenbereinigung und -manipulation einfach.
Wenn du Pandas noch nicht kennst, ist dieser Kurs zur Datenbearbeitung mit Pandas ein guter Startpunkt.
Scikit-Learn
Scikit-learn ist eine leistungsstarke Bibliothek für maschinelles Lernen mit verschiedenen Werkzeugen für das Feature Engineering. Sie enthält Methoden wie OneHotEncoder
und LabelEncoder
, um kategorische in numerische Variablen umzuwandeln. Es bietet auch Methoden zur Skalierung von Merkmalen wie StandardScaler
und Minmaxscaler
.
Feature-Engine
Feature-engine ist eine offeneurce Python-Bibliothek, die eine Vielzahl von Transformatoren zur Vereinfachung des Feature-Engineering bietet. Diese Transformatoren sind spezialisierte Werkzeuge für bestimmte Aufgaben, z. B. für die Imputation fehlender Daten, die Behandlung von Ausreißern, die Auswahl von Merkmalen und die Diskretisierung. Diese Transformatoren sind vollständig mit scikit-learn kompatibel und können als Eingabeparameter für das Tuning der Hyperparameter übergeben werden.
Automatisierte Tools für das Feature Engineering
- Featuretools: Featuretools ist eine Open-Source-Bibliothek zur Automatisierung des Feature Engineering. Das Framework wird in erster Linie verwendet, um neue Features aus einer relationalen Datenbank zu erstellen. Er basiert auf dem DFS-Algorithmus (Deep Feature Synthesis), der neue Merkmale auf der Grundlage von Transformations- und Aggregationsoperationen erstellt.
- TSFresh: TSFresh, bekannt als Time Series Feature Extraction based on Scalable Hypothesis Tests, wurde speziell entwickelt, um aussagekräftige Merkmale aus Zeitreihendaten zu extrahieren. Die Bibliothek führt Hypothesentests durch, um statistisch signifikante Merkmale für die Vorhersage auszuwählen.
- Autofeat: Die Autofeat-Bibliotheky automatisiert die Auswahl, Erstellung und Umwandlung von Merkmalen, um die Genauigkeit von linearen Modellen zu verbessern. Zum Beispiel bietet die Bibliothek anstelle von
fit()
einefit_transform()
Methode, die gleichzeitig Anpassungs- und Transformationsoperationen an den Eingabedaten durchführt. Außerdem sindFeatureSelector
undAutoFeatLight
für die Auswahl und Skalierung von Merkmalen verfügbar.
Best Practices für Feature Engineering
Um Feature Engineering effektiv umzusetzen, solltest du dich an diesen Best Practices orientieren.
Kenne deine Daten
Wenn du die Bedeutung und Wichtigkeit jedes Merkmals verstehst, kannst du Techniken wie die Merkmalsauswahl oder -extraktion viel einfacher durchführen. Ich schlage vor, du recherchierst deine Daten und das relevante Fachwissen für ein effektives Feature Engineering.
Durchführen einer explorativen Datenanalyse (EDA)
Nutze Python-Bibliotheken wie Pandas und Matplotlib, um umfassende explorative Datenanalysen durchzuführen,z. B. statistische Informationen, Visualisierungen und Korrelationen, um Muster und potenzielle Beziehungen in den Daten zu finden.
Interaktionsfunktionen erstellen
Bei der Erstellung von Interaktionsmerkmalen geht es darum, Beziehungen zwischen bestehenden Merkmalen zu erkennen und neue Merkmale abzuleiten. Bei der Vorhersage von Hauspreisen zum Beispiel zeigt die Berechnung des Alters eines Hauses durch Subtraktion des Baujahrs vom aktuellen Jahr Trends auf, wie z. B. sinkende Hauspreise im Laufe der Zeit.
Wähle dein Modell im Voraus
Verschiedene Machine-Learning-Modelle erfordern unterschiedliche Schritte der Merkmalstechnik. Zum Beispiel profitieren Modelle wie lineare oder multiple Regression, SVM und KNN oft von der Standardisierung der Merkmale, aber diese Technik hilft baumbasierten Modellen nicht.
Wenn du dich also schon im Voraus für dein Modell entscheidest, kannst du eine effektive Feature-Engineering-Pipeline für deinen Anwendungsfall aufbauen.
Fazit
Das Feature-Engineering ist ein wesentlicher Bestandteil der Entwicklung von Machine-Learning-Lösungen und ermöglicht es dir, Features auf die effizienteste Weise zu nutzen. Dieser Prozess wird von Datenwissenschaftlern oder ML-Ingenieuren durchgeführt, wenn sie mit einem beliebigen Datensatz arbeiten. Wenn du ein Datenexperte bist oder einer werden willst, wird dir das Beherrschen aller in diesem Artikel genannten Techniken helfen, deine Karriere voranzutreiben!
Wenn du diese Techniken genauer kennenlernen möchtest, schau dir die DataCamp-Kurseüber Feature Engineering für maschinelles Lernen und Feature Engineering für NLPan. Es gibt auch einen Kurs über Feature Engineering für R-Programmierer.
Fähigkeiten im Bereich Machine Learning aufbauen
FAQs
Wie unterscheidet sich das Feature Engineering von der Feature Selection?
Beim Feature-Engineering werden neue Features erstellt oder bestehende umgewandelt, um die Modellleistung zu verbessern. Bei der Merkmalsauswahl hingegen werden die relevantesten Merkmale ausgewählt und irrelevante oder redundante Merkmale verworfen, um eine Überanpassung zu verhindern und die Komplexität des Modells zu reduzieren.
Kann das Feature Engineering automatisiert werden?
Ja! Automatisierte Feature-Engineering-Tools wie FeatureTools, AutoML-Bibliotheken (z. B. Auto-sklearn, H2O.ai) und die AutoML-Tabellen von Google können Features automatisch erstellen und umwandeln und so Zeit und Mühe sparen. Für die Interpretation und die Auswahl der besten Merkmale ist das Fachwissen jedoch nach wie vor entscheidend.
Wie beeinflusst das Feature Engineering die Interpretierbarkeit des Modells?
Feature Engineering kann die Interpretierbarkeit verbessern oder verringern, je nachdem, welche Techniken verwendet werden. Zum Beispiel:
- Die Erstellung aussagekräftiger Merkmale (z. B. "Hausalter" statt "Baujahr") verbessert die Interpretierbarkeit.
- Die Anwendung von Transformationen wie PCA (Principal Component Analysis) kann dazu führen, dass die Merkmale weniger interpretierbar sind, aber die Modellleistung verbessert wird.
Hängt das Feature Engineering von der Art des maschinellen Lernmodells ab?
Ja! Verschiedene Modelle profitieren von unterschiedlichen Techniken der Merkmalstechnik:
- Lineare Modelle (z. B. lineare Regression, logistische Regression) - Erfordern eine Skalierung der Merkmale und profitieren oft von polynomialen Merkmalstransformationen.
- Baumbasierte Modelle (z. B. Entscheidungsbäume, Random Forest, XGBoost) - eignen sich gut für nicht skalierte Daten und profitieren oft mehr von der Merkmalsauswahl als von Transformationen.
- Deep-Learning-Modelle - Bevorzugen rohe Merkmale, und Transformationen wie Einbettungsebenen helfen bei kategorischen Daten.
Was ist Feature Crossing und wann sollte ich es nutzen?
Beim Feature-Crossing werden zwei oder mehr Features miteinander kombiniert, um ein neues Feature zu erstellen, das die Wechselwirkungen zwischen ihnen erfasst. Beispiel:
- Anstatt "Alter" und "Einkommen" getrennt zu verwenden, solltest du ein "Verhältnis zwischen Einkommen und Alter" erstellen, um die finanzielle Stabilität in den verschiedenen Altersgruppen zu erfassen.
- Verwende Feature-Crossing, wenn sich Beziehungen zwischen Variablen nichtlinear auf die Zielvariable auswirken.
Wie kann ich beurteilen, ob eine Funktion die Leistung des Modells verbessert?
Du kannst die Wichtigkeit von Merkmalen bewerten:
- Permutationsbedeutung - Misst, wie sich das Mischen eines Merkmals auf die Modellgenauigkeit auswirkt.
- Merkmalsbedeutung in baumbasierten Modellen - Viele Modelle wie Random Forests bieten integrierte Merkmalsbedeutungsbewertungen.
- Kreuzvalidierung - Vergleiche die Modellgenauigkeit mit und ohne ein Merkmal.
Was ist Interaction Feature Engineering?
Bei der Entwicklung von Interaktionsmerkmalen werden neue Merkmale auf der Grundlage von Interaktionen zwischen bestehenden Merkmalen erstellt. Das kann Folgendes beinhalten:
- Multiplikation (Produktmerkmale): Kombination von zwei Merkmalen (z. B. "Größe × Gewicht" für den BMI).
- Verhältnisse: Ein Merkmal durch ein anderes dividieren (z. B. "Preis pro Quadratfuß").
- Polynomielle Merkmale: Erhöhen von Merkmalen auf eine Potenz (z. B. "Alter²" für nicht lineare Beziehungen).
Wie gehst du mit kategorialen Variablen mit hoher Kardinalität um?
Für kategoriale Variablen mit vielen eindeutigen Werten (z. B. Postleitzahlen, Benutzer-IDs):
- Zielkodierung: Ersetze die Kategorien durch den Mittelwert der Zielvariablen.
- Einbettungsschichten (für Deep Learning): Lerne niederdimensionale Darstellungen von Kategorien.
- Hashing Encoding: Weisen Sie den Kategorien mithilfe einer Hash-Funktion Eimer zu.
Srujana ist freiberufliche Tech-Autorin und hat einen vierjährigen Abschluss in Informatik. Das Schreiben über verschiedene Themen wie Data Science, Cloud Computing, Entwicklung, Programmierung, Sicherheit und viele andere ist für sie selbstverständlich. Sie liebt klassische Literatur und erkundet gerne neue Reiseziele.
Lerne mehr über maschinelles Lernen mit diesen Kursen!
Kurs
Feature Engineering for Machine Learning in Python
Kurs
Machine Learning for Time Series Data in Python
Der Blog
Top 30 Generative KI Interview Fragen und Antworten für 2024

Hesam Sheikh Hassani
15 Min.

Der Blog
Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn
Der Blog
Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Nisha Arya Ahmed
15 Min.
Der Blog
Q2 2023 DataCamp Donates Digest
Der Blog