Feature Engineering für EinsteigerFeature Engineering für Einsteiger
Bild erstellt vom Autor

Einführung

Characteristic Engineering ist einer der wichtigsten Aspekte der Machine-Studying-Pipeline. Dabei handelt es sich um die Praxis, Merkmale oder Variablen zu erstellen und zu ändern, um die Modellleistung zu verbessern. Intestine gestaltete Options können schwache Modelle in starke verwandeln, und durch Characteristic-Engineering können Modelle sowohl robuster als auch genauer werden. Characteristic Engineering fungiert als Brücke zwischen dem Datensatz und dem Modell und gibt dem Modell alles, was es zur effektiven Lösung eines Issues benötigt.

Dies ist ein Leitfaden für neue Datenwissenschaftler, Dateningenieure und Praktiker des maschinellen Lernens. Das Ziel dieses Artikels besteht darin, grundlegende Characteristic-Engineering-Konzepte zu vermitteln und eine Toolbox mit Techniken bereitzustellen, die auf reale Szenarien angewendet werden können. Mein Ziel ist es, dass Sie am Ende dieses Artikels über genügend praktische Kenntnisse über Characteristic-Engineering verfügen, um diese auf Ihre eigenen Datensätze anzuwenden, damit Sie bestens gerüstet sind, um mit der Erstellung leistungsstarker Modelle für maschinelles Lernen zu beginnen.

Funktionen verstehen

Merkmale sind messbare Merkmale eines Phänomens, das wir beobachten. Sie sind die granularen Elemente, aus denen die Daten bestehen, mit denen Modelle arbeiten, um Vorhersagen zu treffen. Beispiele für Merkmale können Dinge wie Alter, Einkommen, ein Zeitstempel, Längengrad, Wert und quick alles andere sein, was man sich vorstellen kann, das gemessen oder in irgendeiner Type dargestellt werden kann.

Es gibt verschiedene Funktionstypen, die wichtigsten sind:

  • Numerische Merkmale: Kontinuierliche oder diskrete numerische Typen (z. B. Alter, Gehalt)
  • Kategoriale Merkmale: Qualitative Werte, die Kategorien darstellen (z. B. Geschlecht, Schuhgrößentyp)
  • Textmerkmale: Wörter oder Wortfolgen (z. B. „dies“ oder „das“ oder „sogar dies“)
  • Zeitreihenfunktionen: Nach Zeit geordnete Daten (z. B. Aktienkurse)

Funktionen sind beim maschinellen Lernen von entscheidender Bedeutung, da sie die Fähigkeit eines Modells, Vorhersagen zu treffen, direkt beeinflussen. Intestine konstruierte Options verbessern die Modellleistung, während schlechte Options es einem Modell erschweren, aussagekräftige Vorhersagen zu treffen. Characteristic-Auswahl und Characteristic-Engineering sind Vorverarbeitungsschritte im maschinellen Lernprozess, mit denen die Daten für die Verwendung durch Lernalgorithmen vorbereitet werden.

Es wird zwischen Characteristic-Auswahl und Characteristic-Engineering unterschieden, obwohl beide für sich genommen entscheidend sind:

  • Characteristic-Auswahl: Die Auswahl wichtiger Options aus dem gesamten Satz aller verfügbaren Options, wodurch die Dimensionalität reduziert und die Modellleistung gefördert wird
  • Characteristic Engineering: Die Erstellung neuer Options und die anschließende Änderung bestehender Options, alles mit dem Ziel, die Leistung eines Modells zu verbessern

Indem nur die wichtigsten Options ausgewählt werden, trägt die Characteristic-Auswahl dazu bei, dass nur das Sign in den Daten zurückbleibt, während das Characteristic-Engineering neue Options erstellt, die dabei helfen, das Ergebnis besser zu modellieren.

Grundlegende Techniken im Characteristic Engineering

Während uns eine breite Palette grundlegender Characteristic-Engineering-Techniken zur Verfügung steht, werden wir einige der wichtigeren und am häufigsten verwendeten Techniken durchgehen.

Umgang mit fehlenden Werten

Es kommt häufig vor, dass Datensätze fehlende Informationen enthalten. Dies kann sich nachteilig auf die Leistung eines Modells auswirken. Deshalb ist es wichtig, Strategien für den Umgang mit fehlenden Daten zu implementieren. Es gibt einige gängige Methoden zur Behebung dieses Issues:

  • Mittelwert/Median-Imputation: Füllen fehlender Bereiche in einem Datensatz mit dem Mittelwert oder Median der Spalte
  • Modusimputation: Fehlende Stellen in einem Datensatz werden mit dem häufigsten Eintrag in derselben Spalte gefüllt
  • Interpolation: Auffüllen fehlender Daten mit Werten von Datenpunkten um sie herum

Diese Füllmethoden sollten basierend auf der Artwork der Daten und den potenziellen Auswirkungen, die die Methode auf das Endmodell haben könnte, angewendet werden.

Der Umgang mit fehlenden Informationen ist entscheidend, um die Integrität des Datensatzes aufrechtzuerhalten. Hier ist ein Beispiel eines Python-Codeausschnitts, der verschiedene Datenfüllmethoden mithilfe von demonstriert pandas Bibliothek.

import pandas as pd
from sklearn.impute import SimpleImputer

# Pattern DataFrame
information = {'age': (25, 30, np.nan, 35, 40), 'wage': (50000, 60000, 55000, np.nan, 65000)}
df = pd.DataFrame(information)

# Fill in lacking ages utilizing the imply
mean_imputer = SimpleImputer(technique='imply')
df('age') = mean_imputer.fit_transform(df(('age')))

# Fill within the lacking salaries utilizing the median
median_imputer = SimpleImputer(technique='median')
df('wage') = median_imputer.fit_transform(df(('wage')))

print(df)

Kodierung kategorialer Variablen

Unter Berücksichtigung der Tatsache, dass die meisten Algorithmen für maschinelles Lernen am besten (oder nur) für den Umgang mit numerischen Daten geeignet sind, müssen kategoriale Variablen häufig numerischen Werten zugeordnet werden, damit diese Algorithmen sie besser interpretieren können. Die gebräuchlichsten Codierungsschemata sind die folgenden:

  • One-Sizzling-Codierung: Erstellen separater Spalten für jede Kategorie
  • Etikettenkodierung: Zuweisen einer Ganzzahl zu jeder Kategorie
  • Zielkodierung: Kodierung von Kategorien anhand der Durchschnittswerte ihrer einzelnen Ergebnisvariablen

Die Kodierung kategorialer Daten ist notwendig, um in vielen Modellen des maschinellen Lernens den Grundstein für das Verständnis zu legen. Die richtige Kodierungsmethode wird von Ihnen je nach Scenario ausgewählt, einschließlich des verwendeten Algorithmus und des Datensatzes.

Unten finden Sie ein Beispiel für ein Python-Skript für die Kodierung kategorialer Funktionen pandas und Elemente von scikit-learn.

import pandas as pd
from sklearn.preprocessing import OneHotEncoder, LabelEncoder

# Pattern DataFrame
information = {'colour': ('purple', 'blue', 'inexperienced', 'blue', 'purple')}
df = pd.DataFrame(information)

# Implementing one-hot encoding
one_hot_encoder = OneHotEncoder()
one_hot_encoding = one_hot_encoder.fit_transform(df(('colour'))).toarray()
df_one_hot = pd.DataFrame(one_hot_encoding, columns=one_hot_encoder.get_feature_names(('colour')))

# Implementing label encoding
label_encoder = LabelEncoder()
df('color_label') = label_encoder.fit_transform(df('colour'))

print(df)
print(df_one_hot)

Daten skalieren und normalisieren

Für eine gute Leistung vieler Methoden des maschinellen Lernens muss eine Skalierung und Normalisierung Ihrer Daten durchgeführt werden. Es gibt verschiedene Methoden zum Skalieren und Normalisieren von Daten, wie zum Beispiel:

  • Standardisierung: Daten so transformieren, dass sie einen Mittelwert von 0 und eine Standardabweichung von 1 haben
  • Min-Max-Skalierung: Skalieren von Daten auf einen festen Bereich, z. B. (0, 1)
  • Robuste Skalierung: Iterative Skalierung hoher und niedriger Werte anhand des Medianwerts bzw. des Interquartilbereichs

Die Skalierung und Normalisierung von Daten ist entscheidend, um sicherzustellen, dass die Characteristic-Beiträge gerecht sind. Mit diesen Methoden können die unterschiedlichen Merkmalswerte entsprechend zu einem Modell beitragen.

Nachfolgend finden Sie eine Implementierung mit scikit-learndas zeigt, wie skalierte und normalisierte Daten vervollständigt werden.

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

# Pattern DataFrame
information = {'age': (25, 30, 35, 40, 45), 'wage': (50000, 60000, 55000, 65000, 70000)}
df = pd.DataFrame(information)

# Standardize information
scaler_standard = StandardScaler()
df('age_standard') = scaler_standard.fit_transform(df(('age')))

# Min-Max Scaling
scaler_minmax = MinMaxScaler()
df('salary_minmax') = scaler_minmax.fit_transform(df(('wage')))

# Strong Scaling
scaler_robust = RobustScaler()
df('salary_robust') = scaler_robust.fit_transform(df(('wage')))

print(df)

Die oben genannten grundlegenden Techniken bieten zusammen mit dem entsprechenden Beispielcode pragmatische Lösungen für fehlende Daten, die Kodierung kategorialer Variablen sowie die Skalierung und Normalisierung von Daten mithilfe leistungsstarker Python-Instruments pandas Und scikit-learn. Diese Techniken können in Ihren eigenen Characteristic-Engineering-Prozess integriert werden, um Ihre Modelle für maschinelles Lernen zu verbessern.

Fortgeschrittene Techniken im Characteristic Engineering

Wir richten unsere Aufmerksamkeit nun auf fortgeschrittenere technische Techniken und fügen einige Beispiel-Python-Codes zur Implementierung dieser Konzepte hinzu.

Characteristic-Erstellung

Bei der Characteristic-Erstellung werden neue Options generiert oder geändert, um ein Modell mit besserer Leistung zu erstellen. Zu den Techniken zum Erstellen neuer Funktionen gehören:

  • Polynom-Options: Erstellung von Options höherer Ordnung mit vorhandenen Options, um komplexere Beziehungen zu erfassen
  • Interaktionsbegriffe: Options, die durch die Kombination mehrerer Options generiert werden, um Interaktionen zwischen ihnen abzuleiten
  • Domänenspezifische Characteristic-Generierung: Options, die auf der Grundlage der Feinheiten von Themen innerhalb des gegebenen Problembereichs entwickelt wurden

Das Erstellen neuer Funktionen mit angepasster Bedeutung kann erheblich dazu beitragen, die Modellleistung zu steigern. Das nächste Skript zeigt, wie Characteristic Engineering genutzt werden kann, um latente Beziehungen in Daten ans Licht zu bringen.

import pandas as pd
import numpy as np

# Pattern DataFrame
information = {'x1': (1, 2, 3, 4, 5), 'x2': (10, 20, 30, 40, 50)}
df = pd.DataFrame(information)

# Polynomial Options
df('x1_squared') = df('x1') ** 2
df('x1_x2_interaction') = df('x1') * df('x2')

print(df)

Dimensionsreduktion

Um Modelle zu vereinfachen und ihre Leistung zu steigern, kann es sinnvoll sein, die Anzahl der Modellfunktionen zu verkleinern. Zu den Techniken zur Dimensionsreduktion, die dabei helfen können, dieses Ziel zu erreichen, gehören:

  • PCA (Hauptkomponentenanalyse): Transformation von Prädiktoren in einen neuen Merkmalssatz, der aus linear unabhängigen Modellmerkmalen besteht
  • t-SNE (t-Distributed Stochastic Neighbor Embedding): Dimensionsreduktion, die zu Visualisierungszwecken verwendet wird
  • LDA (Lineare Diskriminanzanalyse): Finden neuer Kombinationen von Modellmerkmalen, die für die Dekonstruierung verschiedener Klassen effektiv sind

Um die Größe Ihres Datensatzes zu verringern und seine Relevanz beizubehalten, helfen Dimensionsreduktionstechniken. Diese Techniken wurden entwickelt, um die hochdimensionalen Probleme im Zusammenhang mit Daten anzugehen, wie z. B. Überanpassung und Rechenaufwand.

Eine Demonstration der Datenverkleinerung, die mit implementiert wurde scikit-learn wird als nächstes gezeigt.

import pandas as pd
from sklearn.decomposition import PCA

# Pattern DataFrame
information = {'feature1': (2.5, 0.5, 2.2, 1.9, 3.1), 'feature2': (2.4, 0.7, 2.9, 2.2, 3.0)}
df = pd.DataFrame(information)

# Use PCA for Dimensionality Discount
pca = PCA(n_components=1)
df_pca = pca.fit_transform(df)
df_pca = pd.DataFrame(df_pca, columns=('principal_component'))

print(df_pca)

Zeitreihen-Characteristic-Engineering

Bei zeitbasierten Datensätzen müssen bestimmte Characteristic-Engineering-Techniken verwendet werden, wie zum Beispiel:

  • Verzögerungsmerkmale: Ehemalige Datenpunkte werden verwendet, um Modellvorhersagemerkmale abzuleiten
  • Rollierende Statistiken: Datenstatistiken werden über Datenfenster hinweg berechnet, beispielsweise rollierende Mittelwerte
  • Saisonale Zerlegung: Die Daten werden in die Kategorien Sign, Development und Zufallsrauschen unterteilt

Temporale Modelle erfordern im Vergleich zur direkten Modellanpassung eine unterschiedliche Erweiterung. Diese Methoden folgen zeitlichen Abhängigkeiten und Mustern, um das Vorhersagemodell schärfer zu machen.

Eine Demonstration der angewandten Erweiterung von Zeitreihenfunktionen pandas wird auch als nächstes gezeigt.

import pandas as pd
import numpy as np

# Pattern DataFrame
date_rng = pd.date_range(begin="1/1/2022", finish='1/10/2022', freq='D')
information = {'date': date_rng, 'worth': (100, 110, 105, 115, 120, 125, 130, 135, 140, 145)}
df = pd.DataFrame(information)
df.set_index('date', inplace=True)

# Lag Options
df('value_lag1') = df('worth').shift(1)

# Rolling Statistics
df('value_rolling_mean') = df('worth').rolling(window=3).imply()

print(df)

Die obigen Beispiele demonstrieren praktische Anwendungen fortgeschrittener Characteristic-Engineering-Techniken durch die Verwendung von pandas Und scikit-learn. Durch den Einsatz dieser Methoden können Sie die Vorhersagekraft Ihres Modells verbessern.

Praktische Tipps und Finest Practices

Hier sind ein paar einfache, aber wichtige Tipps, die Sie beim Durcharbeiten Ihres Characteristic-Engineering-Prozesses beachten sollten.

  • Iteration: Das Characteristic-Engineering ist ein Versuch-und-Irrtum-Prozess, und Sie werden mit jeder Iteration besser darin. Testen Sie verschiedene Characteristic-Engineering-Ideen, um die besten Options zu finden.
  • Domänenwissen: Nutzen Sie bei der Erstellung von Funktionen das Fachwissen derjenigen, die sich mit der Materie intestine auskennen. Manchmal können subtile Zusammenhänge mit reichsspezifischem Wissen erfasst werden.
  • Validierung und Verständnis der Funktionen: Wenn Sie verstehen, welche Funktionen für Ihren Modus am wichtigsten sind, sind Sie in der Lage, wichtige Entscheidungen zu treffen. Zu den Instruments zur Bestimmung der Characteristic-Wichtigkeit gehören:
    • SHAP (SHapley Additive exPlanations): Hilft bei der Quantifizierung des Beitrags jedes Options in Vorhersagen
    • LIME (Native Interpretable Mannequin-agnostic Explanations): Darstellung der Bedeutung von Modellvorhersagen in einfacher Sprache

Um sowohl gute als auch leicht verständliche Ergebnisse zu erzielen, ist eine optimale Mischung aus Komplexität und Interpretierbarkeit erforderlich.

Abschluss

In diesem kurzen Leitfaden werden grundlegende Characteristic-Engineering-Konzepte sowie grundlegende und fortgeschrittene Techniken sowie praktische Empfehlungen und Finest Practices behandelt. Behandelt wurden einige der wichtigsten Characteristic-Engineering-Praktiken – der Umgang mit fehlenden Informationen, die Kodierung kategorialer Daten, die Skalierung von Daten und die Erstellung neuer Options.

Characteristic Engineering ist eine Praxis, die mit der Ausführung besser wird, und ich hoffe, Sie konnten etwas mitnehmen, das Ihre datenwissenschaftlichen Fähigkeiten verbessern könnte. Ich ermutige Sie, diese Techniken auf Ihre eigene Arbeit anzuwenden und aus Ihren Erfahrungen zu lernen.

Denken Sie daran, dass der genaue Prozentsatz zwar je nach dem, wer ihn angibt, variiert, der Großteil jedes maschinellen Lernprojekts jedoch in der Datenvorbereitungs- und Vorverarbeitungsphase aufgewendet wird. Das Characteristic-Engineering ist ein Teil dieser langwierigen Section und sollte als solcher mit der erforderlichen Bedeutung betrachtet werden. Wenn Sie lernen, Characteristic Engineering als das zu verstehen, was es ist – eine helfende Hand im Modellierungsprozess –, sollte es für Neulinge leichter verständlich sein.

Viel Spaß beim Engineering!

Matthew Mayo (@mattmayo13) hat einen Grasp-Abschluss in Informatik und ein Diplom in Knowledge Mining. Als geschäftsführender Redakteur möchte Matthew komplexe datenwissenschaftliche Konzepte zugänglich machen. Zu seinen beruflichen Interessen zählen die Verarbeitung natürlicher Sprache, Algorithmen für maschinelles Lernen und die Erforschung neuer KI. Sein Antrieb ist die Demokratisierung des Wissens in der Knowledge-Science-Neighborhood. Matthew programmiert seit seinem sechsten Lebensjahr.



Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert