Eine effektivere Variation des Gradienten -Boosting -Frameworks, das sowohl einen linearen Modelllöser als auch Baumlernmethoden enthält, wird als extreme Gradienten -Boosting bezeichnet (XGBOOST). Es wird auf dem Gradienten -Boosting -Algorithmus entwickelt, der ein Ensemble schwacher Vorhersagemodelle, häufig Entscheidungsbäume, als Vorhersagemodell erzeugt. Wettbewerbe für maschinelles Lernen enthalten häufig XGBOOST. Es ist entscheidend, die Ursachen und Mechanismen hinter dem erfolgreichen Betrieb dieses Algorithmus zu verstehen. Wir werden uns über Entscheidungsbäume, Gradienten -Boosting, Xgboost und seine Implementierung in diesem Artikel kennenlernen.
Was sind Entscheidungsbäume?
Ein Computeralgorithmus, der als Entscheidungsbaumalgorithmus bezeichnet wird. Der Datensatz verfügt über Attribute, die manchmal als Merkmale oder Eigenschaften bezeichnet werden, und ein Klassenattribut. Ziel und Ergebnis sind andere Wörter für Klasseneigenschaften. Dieses Merkmal hofft wir vorweg. Der Entscheidungsbaumalgorithmus schafft ein Entscheidungsbaummodell. Ein Wurzelknoten, Blattknoten und Kanten bilden das Entscheidungsbaummodell. Der Entscheidungsbaumalgorithmus ist rekursiv, was bedeutet, dass er sich erneut anruft und die Daten fortsetzt, bis eine Stoppbedingung erfüllt ist.
Beispiel für Entscheidungsbaum aus Wikipedia
Was ist Gradient Boosting?
Für Regressions- und Klassifizierungsprobleme ist Gradient Boosting eine Technik für maschinelles Lernen, die ein Modell in Form einer Gruppe schwacher Vorhersagemodelle erzeugt, häufig Entscheidungsbäume. Ähnlich wie bei anderen Boosting -Techniken konstruiert es das Modell in Stufen, verallgemeinert sie jedoch durch die Optimierung einer Verlustfunktion. Drei wesentliche Prozesse sind an der Gradientenverstärkung beteiligt:
- Die Optimierung einer Verlustfunktion ist der erste Schritt, der unternommen werden muss. Eine differenzierbare Verlustfunktion ist erforderlich. Wie gut ein maschinelles Lernmodell für ein bestimmtes Phänomen passt, wird durch seine Verlustfunktion bestimmt.
- Die Verwendung eines schwachen Lernenden ist der zweite Schritt. Ein Entscheidungsbaum dient als schwacher Lerner in Gradienten -Boostern. Regressionsbäume, die reale Werte für Splits erzeugen und deren Ausgabe zusammengefügt werden kann.
- Der dritte Schritt besteht darin, viele schwache Lernende hinzuzufügen. Einer nach dem anderen werden Entscheidungsbäume hinzugefügt. Beim Hinzufügen von Bäumen wird ein Ansatz für den Abstiegsabfällen verwendet, um den Verlust zu verringern. Die Gradientenkomponente von Gradienten -Boostern ist das. Beim maschinellen Lernen wird häufig die Optimierung des Abstiegs zur Abstammung verwendet, um die mit einem einzelnen Modell verbundenen Parameter zu identifizieren.
Was ist Xgboost?
Ein Python -Modul zum Ausführen von Gradientensteigerungen wird als Xgboost bezeichnet (Extreme Gradient Boosting). Ablaufstärkte Entscheidungsbäume dienen als Fundament. Es ist ein Boosting -Algorithmus, der die Robustheit und Genauigkeit des Modells in verschiedenen Wettbewerbsplattformen wie Kaggle erhöht. Die besten Algorithmen für kleine bis mittelgroße strukturierte oder tabellarische Daten basieren auf Entscheidungsbäumen. Die Modellkonstruktion mit Xgboost ist schnell und effektiv.
Wo können wir Xgboost verwenden??
- Im Falle einer großen Anzahl von Beobachtungen in Trainingsdaten.
- Die Anzahl der Merkmale ist weniger als die Anzahl der Beobachtungen.
- Wenn die Modellleistungsmetrik berücksichtigt wird.
Implementierung in Sklearn
# Importieren erforderliche Bibliotheken
von Sklearn.Datensätze importieren make_classification
von Sklearn.model_selection import train_test_split
Xgboost importieren
# Erstellen des Datensatzes
X, y = make_classification (n_samples = 1000, n_features = 5, n_informative = 2, n_redundant = 0, random_state = 0, shuffle = false)
print ('Funktionen sind', x [: 20])
print ('Etiketten sind', y [: 20])
# Die Daten in Zug und Test aufteilen
X_train, x_test, y_train, y_test = train_test_split (x, y, test_size = 0.2, random_state = 0)
# Erstellen der Xgboost -Instanz
xgb_classifier = xgboost.XgbClassifier ()
# Das Modell an die Zugdaten anpassen
xgb_classifier.fit (x_train, y_train)
# Die Vorhersagen machen
Vorhersagen = xgb_classifier.prognostizieren (x_test)
# 20 Vorhersagen drucken
print ('Vorhersagen sind', Vorhersagen [: 20])
Ausgang
Merkmale sind [[-1).66853167 -1.29901346 0.2746472 -0.60362044 0.70885958]
[-2.9728827 -1.08878294 0.42281857 -3.11685659 0.64445203]
[-0.59614125 -1.37007001 -1.91374267 0.66356158 -0.1540724]
[-1.06894674 -1.17505738 1.19361168 -0.09816121 -0.88661426]
[-1.30526888 -0.96592566 -0.14735366 1.05980629 0.02624662]
[-2.18261832 -0.97011387 -0.11433516 0.74355352 0.21035937]
[-1.24797892 -1.13094525 -0.00592741 1.36606007 1.55511403]
[-1.35308792 -1.06633681 0.61332623 -0.28595915 1.49691099]
[-1.13449871 -1.27403448 1.18311956 0.71889717 -1.21607658]
[-0.38457445 -1.08840346 0.1406719 -0.74367217 -0.15901225]
[-1.0106506 -0.52017071 0.24005693 0.10015941 -0.47517511]
[-0.58310155 -1.18236446 1.27295375 -1.69613127 0.73018353]
[-0.29760388 -1.45995253 -1.85748327 0.38259814 -0.88690433]
[-0.86057581 -1.01530275 0.87830376 0.08645252 0.24770638]
[-2.47091771 -1.21696663 -1.01827933 -0.65457013 0.20721739]
[-1.33090082 -1.01316175 0.58356993 2.92909624 0.22285832]
[0.74840002 -0.91748674 0.97603753 -1.55693393 -1.32989186]
[-1.05483466 -0.9320408 -0.35549477 -1.1974277 1.48639925]
[-2.19888276 -1.17327072 -0.41021869 1.38218189 1.48678247]
[-0.68305478 -0.94253787 0.04277972 0.50179975 -0.05609947]]]
Etiketten sind [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
Vorhersagen sind [1 1 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0]
Abschluss
Wir haben den Xgboost -Algorithmus im maschinellen Lernen besprochen. Dies ist eine Implementierung der Gradienten -Boosting -Technik, die heute in Wettbewerben häufig eingesetzt wird. Wir haben gesehen, warum dieser Algorithmus gut abschneidet und was er unter der Motorhaube verwendet. Zuletzt haben wir auch die Implementierung von Xgboost in Python durchlaufen.