Bester Ansatz für ein End-to-End-Machine-Learning-Projekt [2022]
Veröffentlicht: 2021-01-01Maschinelles Lernen nimmt Fahrt auf und war lange Zeit ein Zankapfel. Einige sehr großartige Algorithmen und Architekturen in diesem Bereich haben es ermöglicht, dass das Konzept des maschinellen Lernens in der praktischen und lebenden Welt angewendet wird.
Es ist nicht mehr nur ein Begriff für die Forschung, sondern hat sich tief in nützliche Anwendungsbereiche ausgebreitet. Und heute ist es mehr denn je erforderlich, die Kunst der End-to-End-Pipeline für Machine-Learning-Projekte zu beherrschen.
Viele Menschen interessieren sich zunehmend für maschinelles Lernen, und es steht eine immense Menge an Ressourcen zur Verfügung, die Ihnen helfen können, die Grundlagen von ML und KI zu verstehen. Viele Kurse führen Sie vom Erlernen einiger grundlegender Konzepte bis zum Bau einiger hochmoderner Modelle.
Aber ist es das? Lernen wir wirklich, wie man auf die Daten zugreift, und sehen wir wirklich, wie man die Daten bereinigt, damit unser ML-Modell nützliche Funktionen daraus extrahieren kann? Und was ist mit dem Bereitstellungsteil? Es gibt so viele Fragen in ähnlicher Richtung, die in unseren Köpfen unbeantwortet bleiben, nachdem wir solche Kurse und Lehrpläne abgeschlossen haben.
Dieses Problem entsteht aufgrund eines schlechten Verständnisses einer vollständigen End-to-End-Pipeline für maschinelles Lernen für jedes Projekt. In diesem Artikel werden wir eine solche Pipeline durchgehen, um zu verstehen, was genau getan werden muss, um in einem realen Szenario für jedes ML-Projekt bessere Ergebnisse zu erzielen.
Eines der Bücher, das dies am besten zeigt, ist „Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow“ von Aurelien Geron.

Diese End-to-End-Pipeline kann zum besseren Verständnis in einige Schritte unterteilt werden, und diese sind:
- Verständnis der Problemstellung
- Beschaffung der erforderlichen Daten
- Daten verstehen
- Bereinigen der Daten
- Auswahl des besten Trainingsmodells
- Feinabstimmung der Hyperparameter
- Präsentation der Ergebnisse
- Bereitstellung und Wartung des Systems
Um die Pipeline eines realen maschinellen Lernprojekts besser zu verstehen, verwenden wir das beliebte Beispiel des Preisvorhersageproblems für kalifornische Häuser. Wir werden alle oben genannten Punkte in Bezug auf diese Problemstellung diskutieren. Es kann einige geringfügige Änderungen für verschiedene Projekte geben, aber insgesamt bleibt das Ziel dasselbe.
Inhaltsverzeichnis
Verständnis der Problemstellung
Um eine gute Lösung zu bauen, muss man die Problemstellung sehr klar verstehen. Am Ende werden Sie höchstwahrscheinlich ein Modell für maschinelles Lernen erstellen und trainieren, aber reale Anwendungsbereiche benötigen viel mehr als nur die Modelle. Die Ausgabe des Modells sollte mit dem übereinstimmen, was der Endbenutzer genau benötigt.
Für dieses spezielle Beispiel erhalten wir einen Datensatz aller Metriken in Kalifornien wie Bevölkerung, Einkommen, Hauspreise und andere. Die erforderliche Ausgabe des Modells besteht darin, dass es in der Lage sein sollte, den Preis des Hauses anhand seiner anderen Attribute wie Standort, Bevölkerung, Einkommen und andere vorherzusagen.
Der wichtige Grund für diesen Schritt ist, genau zu verstehen, was getan werden muss und welche Art von Lösung genau benötigt wird. Hier findet der Hauptteil des Brainstormings darüber statt, wie die Problemstellung angegangen werden muss.
Lesen Sie: Projektideen für maschinelles Lernen für Anfänger
Beschaffung der erforderlichen Daten
Sobald Sie die Problemstellung klar verstanden und sich entschieden haben, mit einem maschinellen Lernansatz fortzufahren, um das Problem zu lösen, sollten Sie mit der Suche nach relevanten Daten beginnen. Daten sind der wichtigste Bestandteil jedes maschinellen Lernprojekts, daher müssen Sie nur die Qualitätsdaten sorgfältig finden und auswählen. Die endgültige Leistung der ML-Modelle hängt von den Daten ab, die während des Trainings verwendet wurden.
Es gibt verschiedene Quellen, um Daten zu finden, die helfen können, die Datenverteilung auch in realen Beispielen zu verstehen. Für unser Beispiel können wir den Datensatz der kalifornischen Hauspreisvorhersage von Kaggle nehmen. Diese Daten liegen im CSV-Format vor, daher verwenden wir die Pandas-Bibliothek, um den Datensatz zu laden.
Daten verstehen
Es ist ein sehr wichtiger Aspekt der ML-Lösung, die Daten verstehen zu können, mit denen Sie arbeiten. Dadurch können wir auswählen, welche Algorithmen oder Modellarchitekturen für das Projekt besser geeignet sind. Bevor Sie sich die Daten im Detail ansehen, empfiehlt es sich, den Datensatz zunächst in Trainings- und Testsätze aufzuteilen. Dadurch bleibt die Testmenge unberührt und die Wahrscheinlichkeit einer Überanpassung an die Testmenge wird verringert. Auf diese Weise eliminieren Sie die Tendenz des Datenschnüffelns aus dem Modell.
Es gibt verschiedene Möglichkeiten, die Datensätze in diese Zug- und Testsätze aufzuteilen. Eine davon ist die Aufteilung mit einem fest codierten Prozentwert. 90 % Trainieren und 10 % Testen ist in den meisten Fällen ein gängiger Wert.
Nach der Aufteilung müssen Sie den Zugverband detailliert visualisieren, um die Daten zu verstehen. Der aktuelle Datensatz enthält die Breiten- und Längengrade und daher ist es sehr hilfreich, das Streudiagramm zu verwenden, um die Dichte nach den Standorten zu betrachten.
Das Finden der Korrelation zwischen zwei Attributen im Datensatz ist hilfreich, um zu verstehen, welche Attribute sich mehr auf das erforderliche Attribut beziehen. In diesem Fall müssen wir herausfinden, welches Attribut mehr mit den Hauspreisen im Datensatz zusammenhängt. Dies kann in Scikit-Learn ganz einfach mit der Methode corr() durchgeführt werden. Es gibt einen Wert für jedes Attribut in Bezug auf ein anderes zurück. Wenn Sie also die Relationen in Bezug auf die Immobilienpreise sehen müssen, können Sie dies folgendermaßen tun:
corr_matrix[“median_house_value”].sort_values(ascending=False)
median_house_value 1.000000Median_Einkommen 0,687170total_rooms 0.135231Housing_median_age 0.114220Haushalte 0,064702Gesamt_Schlafzimmer 0.047865Bevölkerung -0,026699Längengrad -0.047279Breitengrad -0,142826
Hier ist ersichtlich, dass median_income direkt mit dem Hauswert und andererseits der Breitengrad indirekt damit zusammenhängt.
Schließlich können Sie auch versuchen, ein Feature-Engineering durchzuführen, indem Sie einige Attribute miteinander kombinieren. Beispielsweise kann die Gesamtzahl der Zimmer pro Haushalt viel aussagekräftiger sein als die Einzelwerte der Gesamtzahl der Zimmer oder des Haushalts .
Bereinigen der Daten
In diesem Schritt bereiten Sie die Daten für das Machine Learning-Projekt vor. Dies ist der zeitaufwändigste und wichtigste Schritt der gesamten Pipeline. Die Leistungsfähigkeit des Modells hängt maßgeblich davon ab, wie gut Sie die Daten aufbereiten. Normalerweise empfiehlt es sich, Funktionen für diesen Zweck zu schreiben, da Sie diese Funktionen bei Bedarf verwenden können und dieselben Funktionen in der Produktionslinie verwendet werden können, um die neuen Daten für Vorhersagen vorzubereiten.
Eines der am häufigsten auftretenden Probleme bei echten Daten sind die fehlenden Werte für einige Einträge im Datensatz. Es gibt einige Möglichkeiten, damit umzugehen. Sie können das gesamte Attribut direkt löschen, aber das ist nicht sehr gut für das Modell. Sie können die Zeile mit einem fehlenden Wert entfernen. Eine andere Methode, die meistens verwendet wird, besteht darin, den fehlenden Wert auf einen anderen Wert wie Null oder das arithmetische Mittel der gesamten Spalte zu setzen, wenn es sich um einen numerischen Wert handelt.
Für kategoriale Werte ist es besser, sie durch Zahlen darzustellen und sie in eine One-Hot-Codierung zu codieren, damit das Modell leichter daran arbeiten kann. Scikit-Learn stellt auch die OneHotEncoder-Klasse bereit, damit wir kategoriale Werte einfach in One-Hot-Vektoren umwandeln können.
Eine andere Sache, auf die Sie achten müssen, ist die Feature-Skalierung. Es kann einige Attribute geben, deren Wertebereiche sehr drastisch sind. Daher ist es besser, sie auf eine Standardskala zu skalieren, damit das Modell problemlos mit diesen Werten arbeiten und eine bessere Leistung erbringen kann.
Lesen Sie auch: Gehalt als Machine Learning Engineer in Indien
Auswahl des besten Trainingsmodells
Nach Abschluss der gesamten Datenbereinigung und Feature-Engineering wird der nächste Schritt ganz einfach. Jetzt müssen Sie nur noch einige vielversprechende Modelle mit den Daten trainieren und das Modell herausfinden, das die besten Vorhersagen liefert. Es gibt einige Möglichkeiten, die uns bei der Auswahl des besten Modells helfen.

Unser Beispiel der Hauspreisvorhersage in Kalifornien ist ein Regressionsproblem. Das bedeutet, dass wir aus einer Reihe von Zahlen einen Wert vorhersagen müssen, in diesem Fall den Hauspreis.
Der erste Schritt besteht hier darin, einige Modelle zu trainieren und sie auf dem Validierungsset zu testen. Sie sollten das Test-Set hier nicht verwenden, da dies zu einer Überanpassung des Test-Sets führt und das Modell schließlich eine sehr geringe Regularisierung aufweist. Aus diesen Modellen sollte meistens das Modell mit guter Trainingsgenauigkeit und Validierungsgenauigkeit ausgewählt werden. Dies kann auch vom Anwendungsfall abhängen, da einige Aufgaben andere Konfigurationen erfordern als andere.
Da wir die Daten bereits bereinigt haben und die Vorverarbeitungsfunktionen fertig sind, ist es sehr einfach, verschiedene Modelle in drei bis vier Zeilen Code mit einigen Frameworks wie Scikit-Learn oder Keras zu trainieren. In Scikit-Learn haben wir auch eine Option zur Kreuzvalidierung, die sehr hilfreich ist, um gute Hyperparameter für Modelle wie Entscheidungsbäume zu finden.
Feinabstimmung der Hyperparameter
Nachdem einige Modelle in die engere Wahl gezogen wurden, müssen die Hyperparameter fein abgestimmt werden, um ihr wahres Potenzial freizusetzen. Es gibt auch viele Möglichkeiten, dies zu erreichen. Einer davon ist, dass Sie die Hyperparameter manuell ändern und die Modelle immer wieder trainieren können, bis Sie ein zufriedenstellendes Ergebnis erhalten. Hier sieht man deutlich das Problem, dass man unmöglich so viele Kombinationen auschecken kann, wie es eine automatisierte Aufgabe tun würde. Hier kommen also einige gute Methoden, um dieses Zeug zu automatisieren.
Grid Search ist eine wunderbare Funktion, die von Scikit-Learn in Form einer Klasse GridSearchCV bereitgestellt wird, wo es die Kreuzvalidierung selbst durchführt und die perfekten Hyperparameterwerte für bessere Ergebnisse herausfindet. Wir müssen nur erwähnen, mit welchen Hyperparametern es experimentieren muss. Es ist eine einfache, aber sehr mächtige Funktion.
Die randomisierte Suche ist ein weiterer Ansatz, der für einen ähnlichen Zweck verwendet werden kann. Die Rastersuche funktioniert gut, wenn nur wenig Hyperparameter zum Experimentieren vorhanden sind, aber wenn es eine große Anzahl von Hyperparametern gibt, ist es besser, RandomizedSearchCV zu verwenden. Es probiert zufällige Hyperparameter aus und kommt mit den besten Werten, die es bisher gesehen hat.
Nicht zuletzt der Ansatz des Ensemble-Lernens . Hier können wir mehrere Modelle verwenden, um ihre jeweiligen Vorhersagen zu treffen, und schließlich können wir die endgültige Vorhersage als Durchschnitt aller auswählen. Dies ist eine sehr vielversprechende Methode und gewinnt viele Wettbewerbe auf Kaggle.
Nach der Feinabstimmung aller Hyperparameter für das endgültige Modell können Sie das Modell dann verwenden, um Vorhersagen für die Testmenge zu treffen. Hier können wir auswerten, wie gut das Modell auf dem Testset abschneidet. Denken Sie daran, dass Sie Ihr Modell danach nicht mehr feinabstimmen sollten, um die Genauigkeit des Testsatzes zu erhöhen, da dies zu einer Überanpassung der Stichproben des Testsatzes führt.
Präsentation der Ergebnisse
Sobald das beste Modell ausgewählt und die Bewertung abgeschlossen ist, müssen die Ergebnisse ordnungsgemäß angezeigt werden. Visualisierung ist der Schlüssel zu besseren maschinellen Lernprojekten, da es um Daten und das Verständnis der dahinter stehenden Muster geht. Die rohen numerischen Ergebnisse können für Personen, die bereits mit diesem Bereich vertraut sind, gut klingen, aber es ist sehr wichtig, sie in Grafiken und Diagrammen zu visualisieren, da dies das Projekt attraktiv macht und sich jeder ein klares Bild davon machen kann, was tatsächlich in unserer Lösung passiert.
Bereitstellung und Wartung des Systems
Die meisten Lernenden erreichen diese Phase der Pipeline und stehen vor enormen Problemen, während sie versuchen, das Projekt für die Anwendung in einem realen Szenario einzusetzen. Es ist ziemlich einfach, Modelle in einem Jupyter Notebook zu erstellen und zu trainieren, aber der wichtige Teil besteht darin, das Modell erfolgreich zu speichern und es dann in einer Live-Umgebung zu verwenden.
Eines der häufigsten Probleme, mit denen ML-Ingenieure konfrontiert sind, besteht darin, dass es einen Unterschied zwischen den live empfangenen Daten und den Daten gibt, mit denen sie das Modell trainiert haben. Hier können wir die Vorverarbeitungsfunktionen verwenden, die wir beim Erstellen der Pipeline zum Trainieren unserer Modelle erstellt haben.
Es gibt zwei Arten von Modellen für maschinelles Lernen, die bereitgestellt werden können: ein Online-Modell und ein Offline-Modell. Das Online-Modell lernt ständig aus den Daten, die es in Echtzeit erhält. Offline-Modelle lernen nicht aus neuen Proben und müssen aktualisiert und ordnungsgemäß gewartet werden, wenn sich die Art der empfangenen Daten ändert. Daher müssen beide Arten von Modellen ordnungsgemäß gewartet werden.
Bei der Bereitstellung von Modellen für maschinelles Lernen müssen sie in eine Plattform eingebettet werden, damit die Benutzer problemlos mit ihnen interagieren können. Die Optionen sind vielfältig, wir können es in eine Web-App, Android-App, Restful-API und viele mehr packen. Grundlegende Kenntnisse zum Erstellen solcher Apps oder APIs sind ein großer Pluspunkt. Sie sollten in der Lage sein, NodeJS- oder Python-Apps auf Cloud-Diensten wie Google Cloud Platforms, Amazon Web Services oder Microsoft Azure bereitzustellen.

Wenn Sie mit einigen Frameworks wie Django oder Flask nicht vertraut sind, können Sie Streamlit ausprobieren, mit dem Sie einen Python-Code in Form einer Web-App in nur wenigen Zeilen zusätzlichen Codes bereitstellen können. Es gibt verschiedene solcher Bibliotheken und Frameworks, die erkundet werden können.
Fazit
Zum Abschluss dieses gesamten Artikels würde ich sagen, dass Machine Learning-Projekte sich in Bezug auf eine Pipeline deutlich von anderen traditionellen Projekten unterscheiden, und wenn Sie es schaffen, diese Pipeline zu beherrschen, wird alles andere viel einfacher.
Einige der wichtigsten Schritte dieser End-to-End-Pipeline, die viele Anfänger vernachlässigen, sind die Datenbereinigung und die Modellbereitstellung. Wenn diese Schritte erledigt sind, ist der Rest des Teils genau wie bei jedem anderen Projekt.
Das Befolgen dieser Schritte und das Einrichten einer Pipeline für Projekte hilft Ihnen, eine klare Vorstellung von den Aufgaben zu haben, und das Debuggen der Probleme wird einfacher zu handhaben. Ich schlage daher vor, dass Sie diese Schritte durchgehen und versuchen, mithilfe dieser Checkliste ein eigenes End-to-End-Machine-Learning-Projekt zu implementieren. Nehmen Sie eine Problemstellung auf, finden Sie den Datensatz und machen Sie weiter, um Spaß an Ihrem Projekt zu haben!
Wenn Sie mehr über maschinelles Lernen erfahren möchten, sehen Sie sich das PG-Diplom in maschinellem Lernen und KI von IIIT-B & upGrad an, das für Berufstätige konzipiert ist und mehr als 450 Stunden strenge Schulungen, mehr als 30 Fallstudien und Aufgaben bietet, IIIT- B-Alumni-Status, mehr als 5 praktische, praktische Abschlussprojekte und Jobunterstützung bei Top-Unternehmen.
Was ist maschinelles Lernen oder ML?
Die Fähigkeit eines Systems, eine Aufgabe zu lernen, ohne explizit aus bereitgestellten Daten programmiert zu werden, wird als maschinelles Lernen bezeichnet. Dieser Bereich konzentriert sich auf die Entwicklung von Computerprogrammen, die auf Daten zugreifen und selbstständig lernen können. Es ist ein Teilbereich des umfangreichen Themas Künstliche Intelligenz (KI). Maschinelles Lernen wird in fast allen Branchen eingesetzt, um die Produktivität, das Marketing, den Vertrieb, die Kundenzufriedenheit und den Unternehmensgewinn zu steigern. Viele IT-Experten haben sich dafür interessiert und erwägen einen Berufswechsel.
Was sind End-to-End-ML-Projekte?
End-to-End-Projekte für maschinelles Lernen umfassen die Schritte wie die Vorbereitung von Daten, das Training eines Modells darauf und die Bereitstellung dieses Modells. Es besteht aus Pipelines, mit denen der Code geschrieben und der Arbeitsprozess automatisiert werden kann. Diese Pipelines führen bei richtiger Kompilierung zur Bildung eines erfolgreichen Projekts für maschinelles Lernen. Das Verstehen der Problemstellung, das Erhalten der entsprechenden Daten, das Verstehen der Daten, das Bereinigen der Daten, das Auswählen des optimalen Modells für das Training, das Feinabstimmen der Hyperparameter und das Präsentieren der Ergebnisse sind nur einige der beteiligten Phasen.
Was sind Hyperparameter beim maschinellen Lernen?
Ein Hyperparameter ist ein Parameter beim maschinellen Lernen, dessen Wert verwendet wird, um den Lernprozess zu beeinflussen. Sie können in zwei Teile eingeteilt werden, Modell-Hyperparameter und Algorithmus-Hyperparameter. Modell-Hyperparameter können nicht angenommen werden, während die Maschine dem Trainingssatz zugeführt wird, da sie auf die Modellauswahlaufgabe verweisen. Im Gegensatz dazu haben Algorithmus-Hyperparameter keinen Einfluss auf die Leistung des Modells, sondern beeinflussen die Geschwindigkeit und Qualität des Lernprozesses. Unterschiedliche Hyperparameter werden von unterschiedlichen Modelltrainingstechniken benötigt, aber es gibt einige grundlegende Algorithmen, die keine Hyperparameter benötigen.