Maschinelles Lernen - Automatische Workflows

Einführung

Um Ergebnisse erfolgreich auszuführen und zu produzieren, muss ein maschinelles Lernmodell einige Standardworkflows automatisieren. Der Prozess der Automatisierung dieser Standardworkflows kann mithilfe von Scikit-Learn-Pipelines durchgeführt werden. Aus Sicht eines Datenwissenschaftlers ist Pipeline ein verallgemeinertes, aber sehr wichtiges Konzept. Grundsätzlich ermöglicht es den Datenfluss von seinem Rohformat zu einigen nützlichen Informationen. Die Funktionsweise von Pipelines kann anhand des folgenden Diagramms verstanden werden:

Die Blöcke von ML-Pipelines sind wie folgt:

Data ingestion- Wie der Name schon sagt, werden die Daten zur Verwendung in ML-Projekten importiert. Die Daten können in Echtzeit oder in Stapeln aus einzelnen oder mehreren Systemen extrahiert werden. Dies ist einer der schwierigsten Schritte, da die Datenqualität das gesamte ML-Modell beeinflussen kann.

Data Preparation- Nach dem Import der Daten müssen wir Daten vorbereiten, die für unser ML-Modell verwendet werden sollen. Die Datenvorverarbeitung ist eine der wichtigsten Techniken zur Datenaufbereitung.

ML Model Training- Der nächste Schritt ist das Training unseres ML-Modells. Wir haben verschiedene ML-Algorithmen wie überwacht, unbeaufsichtigt, Verstärkung, um die Merkmale aus Daten zu extrahieren und Vorhersagen zu treffen.

Model Evaluation- Als nächstes müssen wir das ML-Modell bewerten. Im Falle einer AutoML-Pipeline kann das ML-Modell mithilfe verschiedener statistischer Methoden und Geschäftsregeln ausgewertet werden.

ML Model retraining- Bei einer AutoML-Pipeline ist es nicht erforderlich, dass das erste Modell das beste ist. Das erste Modell wird als Basismodell betrachtet und wir können es wiederholt trainieren, um die Genauigkeit des Modells zu erhöhen.

Deployment- Endlich müssen wir das Modell bereitstellen. Dieser Schritt umfasst das Anwenden und Migrieren des Modells auf Geschäftsvorgänge zur Verwendung.

Herausforderungen bei ML-Pipelines

Um ML-Pipelines zu erstellen, stehen Datenwissenschaftler vor vielen Herausforderungen. Diese Herausforderungen fallen in die folgenden drei Kategorien:

Datenqualität

Der Erfolg eines ML-Modells hängt stark von der Datenqualität ab. Wenn die Daten, die wir dem ML-Modell zur Verfügung stellen, nicht genau, zuverlässig und robust sind, werden wir mit falschen oder irreführenden Ausgaben enden.

Datenzuverlässigkeit

Eine weitere Herausforderung im Zusammenhang mit ML-Pipelines ist die Zuverlässigkeit der Daten, die wir dem ML-Modell zur Verfügung stellen. Wie wir wissen, kann es verschiedene Quellen geben, aus denen Datenwissenschaftler Daten erfassen können. Um jedoch die besten Ergebnisse zu erzielen, muss sichergestellt sein, dass die Datenquellen zuverlässig und vertrauenswürdig sind.

Datenzugriff

Um die besten Ergebnisse aus ML-Pipelines zu erzielen, müssen die Daten selbst zugänglich sein, was eine Konsolidierung, Bereinigung und Kuratierung der Daten erfordert. Aufgrund der Datenzugriffseigenschaft werden Metadaten mit neuen Tags aktualisiert.

Modellierung der ML-Pipeline und Datenvorbereitung

Datenlecks, die vom Trainingsdatensatz bis zum Testdatensatz auftreten, sind ein wichtiges Thema, mit dem sich Datenwissenschaftler bei der Vorbereitung von Daten für das ML-Modell befassen müssen. Im Allgemeinen verwendet der Datenwissenschaftler zum Zeitpunkt der Datenaufbereitung Techniken wie Standardisierung oder Normalisierung für den gesamten Datensatz, bevor er lernt. Diese Techniken können uns jedoch nicht dabei helfen, Daten zu verlieren, da der Trainingsdatensatz durch den Umfang der Daten im Testdatensatz beeinflusst worden wäre.

Durch die Verwendung von ML-Pipelines können wir diesen Datenverlust verhindern, da Pipelines sicherstellen, dass die Datenaufbereitung wie die Standardisierung auf jede Falte unseres Kreuzvalidierungsverfahrens beschränkt ist.

Beispiel

Das folgende Beispiel in Python zeigt den Workflow für die Datenvorbereitung und Modellbewertung. Zu diesem Zweck verwenden wir den Pima Indian Diabetes-Datensatz von Sklearn. Zunächst erstellen wir eine Pipeline, die die Daten standardisiert. Anschließend wird ein lineares diskriminatives Analysemodell erstellt und schließlich die Pipeline mithilfe einer 10-fachen Kreuzvalidierung bewertet.

Importieren Sie zunächst die erforderlichen Pakete wie folgt:

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

Jetzt müssen wir den Pima-Diabetes-Datensatz wie in den vorherigen Beispielen laden -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values

Als nächstes erstellen wir eine Pipeline mit Hilfe des folgenden Codes:

estimators = []
estimators.append(('standardize', StandardScaler()))
estimators.append(('lda', LinearDiscriminantAnalysis()))
model = Pipeline(estimators)

Zuletzt werden wir diese Pipeline bewerten und ihre Genauigkeit wie folgt ausgeben:

kfold = KFold(n_splits=20, random_state=7)
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

Ausgabe

0.7790148448043184

Die obige Ausgabe ist die Zusammenfassung der Genauigkeit des Setups im Datensatz.

Modellierung der ML-Pipeline und Feature-Extraktion

Datenverlust kann auch beim Merkmalsextraktionsschritt des ML-Modells auftreten. Aus diesem Grund sollten die Verfahren zur Merkmalsextraktion auch eingeschränkt werden, um Datenlecks in unserem Trainingsdatensatz zu verhindern. Wie bei der Datenaufbereitung können wir durch die Verwendung von ML-Pipelines auch diesen Datenverlust verhindern. Zu diesem Zweck kann FeatureUnion verwendet werden, ein von ML-Pipelines bereitgestelltes Tool.

Beispiel

Das folgende Beispiel in Python zeigt den Workflow zur Merkmalsextraktion und Modellbewertung. Zu diesem Zweck verwenden wir den Pima Indian Diabetes-Datensatz von Sklearn.

Zunächst werden 3 Merkmale mit PCA (Principal Component Analysis) extrahiert. Anschließend werden 6 Merkmale mit der statistischen Analyse extrahiert. Nach der Merkmalsextraktion werden die Ergebnisse mehrerer Merkmalsauswahl- und Extraktionsverfahren mithilfe von kombiniert

FeatureUnion-Tool. Zuletzt wird ein logistisches Regressionsmodell erstellt und die Pipeline mithilfe einer 10-fachen Kreuzvalidierung bewertet.

Importieren Sie zunächst die erforderlichen Pakete wie folgt:

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import Pipeline
from sklearn.pipeline import FeatureUnion
from sklearn.linear_model import LogisticRegression
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest

Jetzt müssen wir den Pima-Diabetes-Datensatz wie in den vorherigen Beispielen laden -

path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values

Als Nächstes wird die Feature-Union wie folgt erstellt:

features = []
features.append(('pca', PCA(n_components=3)))
features.append(('select_best', SelectKBest(k=6)))
feature_union = FeatureUnion(features)

Als Nächstes wird die Pipeline mithilfe der folgenden Skriptzeilen erstellt:

estimators = []
estimators.append(('feature_union', feature_union))
estimators.append(('logistic', LogisticRegression()))
model = Pipeline(estimators)

Zuletzt werden wir diese Pipeline bewerten und ihre Genauigkeit wie folgt ausgeben:

kfold = KFold(n_splits=20, random_state=7)
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

Ausgabe

0.7789811066126855

Die obige Ausgabe ist die Zusammenfassung der Genauigkeit des Setups im Datensatz.