Gradient Boosting in Python implementieren
Arbeiten Sie an einem Regressionsproblem und suchen Sie einen effizienten Algorithmus zur Lösung Ihres Problems? Wenn ja, sollten Sie die gradientenboostende Regression (oder GBR) erkunden.
In diesem Artikel beginnen wir mit einer Einführung in Gradient Boosting für Regressionsprobleme, was es so vorteilhaft macht und welche verschiedenen Parameter es gibt. Danach werden wir das GBR-Modell in Python implementieren, es für Vorhersagen verwenden und bewerten.
Lass uns anfangen.
Foto von Austin Neill/Unsplash
Voraussetzungen
Um diesem Artikel zu folgen, benötigen Sie Erfahrung mit Python-Code und ein grundlegendes Verständnis von Maschinellem Lernen. Wir gehen davon aus, dass alle Leser Zugang zu ausreichend leistungsstarken Maschinen haben, damit sie den bereitgestellten Code ausführen können.
Für Anleitungen zum Einstieg in Python-Code empfehlen wir, diesen Einsteigerleitfaden auszuprobieren, um Ihr System einzurichten und sich auf die Durchführung von Einsteiger-Tutorials vorzubereiten.
Einführung in die Gradient Boosting Regression
Das "Boosting" im maschinellen Lernen ist eine Methode, um mehrere einfache Modelle zu einem einzigen zusammengesetzten Modell zu kombinieren. Aus diesem Grund wird Boosting auch als additives Modell bezeichnet, da einfache Modelle (auch bekannt als schwache Lerner) nacheinander hinzugefügt werden, während bestehende Bäume im Modell unverändert bleiben. Wenn wir immer mehr einfache Modelle kombinieren, wird das vollständige Endmodell zu einem stärkeren Prädiktor. Der Begriff "Gradient" in "Gradient Boosting" stammt daher, dass der Algorithmus den Gradientenabstieg verwendet, um den Verlust zu minimieren.
Wenn Gradient Boosting verwendet wird, um einen kontinuierlichen Wert vorherzusagen – wie Alter, Gewicht oder Kosten – verwenden wir Gradient Boosting für die Regression. Dies ist nicht dasselbe wie die Verwendung der linearen Regression. Dies unterscheidet sich leicht von der Konfiguration, die für die Klassifikation verwendet wird, daher werden wir in diesem Artikel bei der Regression bleiben.
Entscheidungsbäume werden als schwache Lernende im Gradient Boosting verwendet. Der Entscheidungsbaum löst das Problem des maschinellen Lernens, indem er die Daten in eine Baumdarstellung umwandelt. Jeder interne Knoten der Baumdarstellung steht für ein Attribut und jeder Blattknoten steht für ein Klassenlabel. Die Verlustfunktion ist im Allgemeinen der quadratische Fehler (insbesondere bei Regressionsproblemen). Die Verlustfunktion muss differenzierbar sein.
Ähnlich wie bei der linearen Regression haben wir auch im Gradient Boosting Regression das Konzept der Residuen. Die Gradient Boosting Regression berechnet die Differenz zwischen der aktuellen Vorhersage und dem bekannten korrekten Zielwert.
Diese Differenz wird als Residuum bezeichnet. Danach trainiert das Gradient Boosting Regression ein schwaches Modell, das Merkmale auf dieses Residuum abbildet. Dieses Residuum, das von einem schwachen Modell vorhergesagt wird, wird dem bestehenden Modellinput hinzugefügt und dieser Prozess schiebt das Modell somit in Richtung des korrekten Ziels. Wenn dieser Schritt immer wieder wiederholt wird, verbessert sich die Gesamtvorhersage des Modells.
Es sollte auch darauf hingewiesen werden, dass Gradient Boosting Regression verwendet wird, um kontinuierliche Werte wie den Hauspreis vorherzusagen, während Gradient Boosting Classification verwendet wird, um Klassen vorherzusagen, zum Beispiel ob ein Patient eine bestimmte Krankheit hat oder nicht.
Die großen Schritte, die wir folgen, um Gradient Boosting Regression zu implementieren, sind wie folgt:
- Wählen Sie einen schwachen Lernenden aus
- Verwenden Sie ein additives Modell
- Definiere eine Verlustfunktion
- Minimiere die Verlustfunktion
Foto von Jeremy Bishop/Unsplash
Vergleich von Gradient Boost mit Ada Boost
Sowohl Gradient Boost als auch Ada Boost arbeiten mit Entscheidungsbäumen, jedoch sind die Bäume in Gradient Boost größer als die in Ada Boost.
Sowohl Gradient Boosting als auch Ada Boost skalieren Entscheidungsbäume, jedoch skaliert Gradient Boosting alle Bäume um den gleichen Betrag, im Gegensatz zu Ada Boost.
Vorteile des Gradient Boosting
Verbesserte Genauigkeit: Die Gradient Boosting Regression bietet im Allgemeinen eine bessere Genauigkeit. Wenn wir die Genauigkeit von GBR mit anderen Regressionsverfahren wie der linearen Regression vergleichen, ist GBR meistens der Gewinner. Aus diesem Grund wird GBR in den meisten Online-Hackathons und Wettbewerben eingesetzt.
Weniger Vorverarbeitung: Wie wir wissen, ist die Datenvorverarbeitung einer der entscheidenden Schritte im Workflow des maschinellen Lernens, und wenn wir dies nicht richtig machen, wirkt sich das negativ auf die Genauigkeit unseres Modells aus. Gradient Boosting Regression erfordert jedoch eine minimale Datenvorverarbeitung, was uns hilft, dieses Modell schneller mit weniger Komplexität zu implementieren. Obwohl die Vorverarbeitung hier nicht zwingend erforderlich ist, sollten wir beachten, dass wir die Modellleistung verbessern können, indem wir Zeit in die Vorverarbeitung der Daten investieren.
Höhere Flexibilität: Die Gradient Boosting Regression kann mit vielen Hyperparametern und Verlustfunktionen verwendet werden. Dies macht das Modell äußerst flexibel und es kann eingesetzt werden, um eine Vielzahl von Problemen zu lösen.
Fehlende Daten: Fehlende Daten sind eines der Probleme beim Trainieren eines Modells. Gradient Boosting Regression verarbeitet die fehlenden Daten eigenständig und erfordert nicht, dass wir sie explizit behandeln. Das ist eindeutig ein großer Vorteil gegenüber anderen ähnlichen Algorithmen. In diesem Algorithmus werden fehlende Werte als informationshaltig betrachtet. Daher werden bei der Erstellung von Bäumen die Entscheidungen zum Teilen von Knoten getroffen, indem die Verlustfunktion minimiert wird und fehlende Werte als eine separate Kategorie behandelt werden, die entweder nach links oder nach rechts gehen kann.
Gradient Boosting Parameter
Lass uns einige wichtige Parameter besprechen, die bei der Gradient Boosting Regression verwendet werden. Dies sind die Parameter, die wir möglicherweise anpassen möchten, um die besten Ergebnisse aus unserer Algorithmusimplementierung zu erzielen.
Foto von Drew Patrick Miller/Unsplash
Anzahl der Schätzer: Es wird als n_estimators bezeichnet.
Der Standardwert dieses Parameters beträgt 100.
Die Anzahl der Schätzer ist im Grunde genommen die Anzahl der durch das Modell durchgeführten Boosting-Stufen. Mit anderen Worten, die Anzahl der Schätzer bezeichnet die Anzahl der Bäume im Wald. Mehr Bäume helfen dabei, die Daten besser zu lernen. Andererseits kann eine höhere Anzahl von Bäumen zu längeren Trainingszeiten führen. Daher müssen wir den richtigen und ausgewogenen Wert von n_estimators für eine optimale Leistung finden.
Maximale Tiefe: Sie wird als max_depth bezeichnet.
Der Standardwert von max_depth ist 3 und es ist ein optionaler Parameter.
Die maximale Tiefe ist die Tiefe des Entscheidungsbaum-Schätzers im gradient boosting Regressor. Wir müssen den optimalen Wert dieses Hyperparameters für die beste Leistung finden. Zum Beispiel kann der beste Wert dieses Parameters von den Eingangsvariablen abhängen.
Lernrate: Sie wird als learning_rate bezeichnet.
Der Standardwert von learning_rate ist 0,1 und es ist ein optionaler Parameter.
Die Lernrate ist ein Hyperparameter im Algorithmus des Gradient Boosting Regressors, der die Schrittgröße bei jeder Iteration bestimmt, während man sich einem Minimum einer Verlustfunktion nähert.
Kriterium: Es wird als Kriterium bezeichnet.
Der Standardwert des Kriteriums ist friedman_mse und es ist ein optionaler Parameter.
Das Kriterium wird verwendet, um die Qualität eines Splits für Entscheidungsbäume zu messen.
mse steht für mittlere quadratische Abweichung.
Verlust: Er wird als Verlust bezeichnet.
Der Standardwert für den Verlust ist ls und es ist ein optionales Parameter.
Dieses Parameter gibt die Verlustfunktion an, die optimiert werden soll. Es gibt verschiedene Verlustfunktionen wie ls, das für die kleinste Quadratsregression steht. Die kleinste absolute Abweichung, abgekürzt als lad, ist eine andere Verlustfunktion. Huber, eine dritte Verlustfunktion, ist eine Kombination aus kleinster Quadratsregression und kleinster absoluter Abweichung.
Unterstichprobe: Es wird als Unterstichprobe bezeichnet.
Der Standardwert für die Unterstichprobe beträgt 1,0 und ist ein optionaler Parameter.
Die Unterstichprobe ist der Bruchteil der Proben, der zur Anpassung der einzelnen Entscheidungsbaum-Learner verwendet wird. Wenn die Unterstichprobe kleiner als 1,0 ist, führt dies zu einer Verringerung der Varianz und einer Erhöhung des Bias.
Anzahl der Iterationen ohne Änderung: Sie wird durch n_iter_no_change bezeichnet.
Der Standardwert für subsample ist None und es ist ein optionaler Parameter.
Dieser Parameter wird verwendet, um zu entscheiden, ob ein vorzeitiges Stoppen verwendet wird, um das Training zu beenden, wenn sich die Validierungswertung mit weiteren Iterationen nicht verbessert.
Wenn dieser Parameter aktiviert ist, wird ein Teil der Trainingsdaten in der Größe von validation_fraction als Validierung zurückgestellt und das Training wird beendet, wenn sich die Validierungswertung nicht verbessert.
Die Daten erhalten
Bevor wir mit der Implementierung des Modells beginnen, müssen wir die Daten erhalten. Ich habe hier eine Beispieldaten hochgeladen. Sie können die Daten auf Ihrem eigenen Computer herunterladen, wenn Sie es auf Ihrer eigenen Maschine ausprobieren möchten.
Unten ist der Screenshot der Datenbeschreibung. Wie Sie sehen können, haben wir zwei Variablen, x und y. x ist die unabhängige Variable und y ist die abhängige Variable.
Gradient Boosting Regression Daten
Wir werden diese Daten als eine Linie anpassen, deren Gleichung wie y=mx + c sein wird.
Die m ist die Steigung der Linie und c ist der y-Achsenabschnitt der Linie.
Training des GBR-Modells
Es ist jetzt Zeit, das Modell zu implementieren. Wie im folgenden Code zu sehen ist, beginnen wir mit der Definition der Parameter n_estimators, max_depth, learning_rate und criterion. Die Werte dieser Parameter sind 3, 3, 1 und mse. Wir haben die Parameterwerte in einer Variable namens params gespeichert.
Wir haben das Ensemble aus sklearn importiert und verwenden die Klasse GradientBoostingRegressor, die mit Ensemble definiert ist.
Wir erstellen die Instanz gradient_boosting_regressor_model der Klasse GradientBoostingRegressor, indem wir die oben definierten Parameter an den Konstruktor übergeben.
Danach rufen wir die Fit-Methode auf der Modellinstanz gradient_boosting_regressor_model auf.
In der Zelle 21 unten können Sie sehen, dass das GradientBoostingRegressor-Modell generiert wird. Es gibt viele Parameter wie alpha, Kriterium, Init, Lernrate, Verlust, maximale Tiefe, maximale Merkmale, maximale Blattknoten, minimale Unreinheitsverminderung, minimale Unreinheitsaufteilung, minimale Stichprobengröße für Blätter, durchschnittliche Stichprobengröße für Aufteilungen, minimale Gewichtungsfraktion für Blätter, n Schätzer, n Iterationen ohne Änderung, Vorhersortierung, Zufallszustand, Teilschätzung, Toleranz, Validierungsfraktion, detaillierte Ausgabe und Warmstart, und die standardmäßigen Werte werden angezeigt.
Implementierung der Gradientenverstärkungsregression in Python
Das Modell bewerten
Lass uns das Modell evaluieren. Bevor wir das Modell bewerten, ist es immer eine gute Idee, zu visualisieren, was wir erstellt haben. Ich habe also das x_feature gegen seine Vorhersage geplottet, wie in der untenstehenden Abbildung gezeigt. Das gibt uns ein besseres Verständnis dafür, wie gut das Modell in die Daten passt. Und wie im Diagramm unten deutlich zu sehen ist, sieht es so aus, als hätten wir eine gute Anpassung. Wir verwenden die pyplot-Bibliothek, um das untenstehende Diagramm zu erstellen. Wie Sie im folgenden Code sehen können, habe ich zuerst die Figurengröße festgelegt. Danach müssen wir mit der Titel-Funktion den Titel des Diagramms festlegen. Dann müssen wir das Feature und das Label an die Scatter-Funktion übergeben. Und schließlich verwenden wir die Plot-Funktion, um das Feature, seine entsprechende Vorhersage und die zu verwendende Farbe zu übergeben.
Visualisiere das Gradient Boosting Regressionsmodell
Nach der obigen Visualisierung ist es an der Zeit, herauszufinden, wie das beste Modell die Daten quantitativ passt. Sklearn bietet uns Metriken, um das Modell in numerischen Begriffen zu bewerten.
Wie Sie unten sehen können, liegt die Passgenauigkeitsbewertung des Modells bei etwa 98,90 %. Dies ist eine wirklich gute Bewertung, wie man es von einem Modell wie Gradient Boosting Regression erwartet.
Herausfinden, wie das beste Modell zu den Daten passt
Endnoten
In diesem Tutorial haben wir gelernt, was Gradient Boosting Regression ist und welche Vorteile es hat. Wir haben auch verschiedene Hyperparameter besprochen, die in der Gradient Boosting Regression verwendet werden. Danach haben wir Beispieldaten geladen und ein Modell mit diesen Daten trainiert. Mit dem trainierten Modell haben wir versucht, zu visualisieren und zu quantifizieren, wie gut das Modell zu den Daten passt, was mehr als 98% beträgt.
Foto von bruce mars/Unsplash
Danke fürs Lesen! Viel Spaß beim maschinellen Lernen :)





