[PYTHON] Lassen Sie uns mit xgboost einen Baum mit Gradientenverstärkung modellieren

Was ist ein Baum mit Gradientenverstärkung?

Einer der Algorithmen, die häufig in Datenanalyse-Wettbewerben verwendet werden. Als GBDT abgekürzt.

G ・ ・ ・ Gradient = Gradientenabstiegsmethode B ・ ・ ・ Boosting = Eine der Ensemble-Methoden D ・ ・ ・ Entscheidung T ・ ・ ・ Baum

Mit anderen Worten, es ist eine Methode, die "Gradient", "Boosting" und "Decision Tree" kombiniert.

Gradientenabstiegsmethode

Ein Algorithmus, der die Gewichte nach und nach aktualisiert, um den Punkt zu finden, an dem der Fehlergradient minimiert wird. Denken Sie, dass "kleinerer Fehler = genauere Vorhersage".

Erhöhen

Eine der Ensemble-Methoden zum Erstellen eines Modells durch Kombinieren mehrerer Modelle. Modelle des gleichen Typs werden in Reihe kombiniert, und die Modelle werden trainiert, während die vorhergesagten Werte korrigiert werden. Ein starker Lernender (sehr genau) kann durch Kombinieren mehrerer schwacher Lernender (solche mit geringer Vorhersagegenauigkeit) erstellt werden.

Entscheidungsbaum

Eine Methode zur Analyse von Daten mithilfe eines Dendrogramms. Zum Beispiel bei der Vorhersage, "ob Eis gekauft werden soll"

"Temperatur über 30 ° C" => wird kaufen "Temperatur unter 30 ° C" => Würde nicht kaufen

Bereiten Sie die Bedingung vor und machen Sie eine Vorhersage.

Baummerkmale mit Gradientenverstärkung

Gradient Boosting Flow

  1. Berechnen Sie den Durchschnitt der Zielvariablen
  2. Berechnen Sie den Fehler
  3. Erstellen Sie einen Entscheidungsbaum
  4. Finden Sie mit dem Ensemble neue Vorhersagen
  5. Berechnen Sie den Fehler erneut
  6. Wiederholen Sie 3 ~ 5
  7. Machen Sie eine endgültige Vorhersage

Die Genauigkeit wird verbessert, indem die Differenz zwischen dem vorhergesagten Wert und der Zielvariablen im nächsten Entscheidungsbaum korrigiert wird.

Montagevorgang

Dieses Mal werden wir eine binäre Klassifizierung durchführen.

Bibliothek laden

import xgboost as xgb

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from matplotlib import pyplot as plt

%matplotlib inline

Daten lesen

df = pd.read_csv('hoge.csv')
df.head()    #Lesebestätigung

Wählen Sie die Funktionsmenge aus

#Diesmal ab Merkmalsmenge X."foo"Aus der Zielvariablen Y."bar"Beseitigen, abschütteln

X = df.drop(['foo', 'bar'], axis=1)
y = df['bar']
X.head()    #Bestätigen Sie, dass es entfernt wurde

Trennung von Trainingsdaten und Bewertungsdaten

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0, shuffle=True)

test_size: Teilen Sie das angegebene Verhältnis als Bewertungsdaten (30% für 0,3) random_state: Geben Sie den Startwert an, wenn Sie Zufallszahlen generieren shuffle: Gibt an, ob beim Aufteilen von Daten zufällig sortiert werden soll

In das DMatrix-Format konvertieren

Für xgboost muss das Dataset im DMatrix-Format vorliegen.

dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)

Lernparameter einstellen

xgb_params = {
    #Binäre Klassifizierung
    'objective': 'binary:logistic',
    #Angabe des Protokollverlusts des Bewertungsindex
    'eval_metric': 'logloss',
}

Modell lernen

bst = xgb.train(xgb_params,
                dtrain,
                #Anzahl der Lernrunden
                num_boost_round=100,
                #Wenn auch nach einer bestimmten Runde keine Verbesserung zu erwarten ist, hören Sie auf zu lernen
                early_stopping_rounds=10,
               )

Vorhersageausführung

    y_pred = bst.predict(dtest)

Überprüfung der Richtigkeit

    acc = accuracy_score(y_test, y_pred)
    print('Accuracy:', acc)

Dadurch wird die Genauigkeit ausgegeben. Passen Sie daher die Parameter nach Bedarf an.


Mit dem obigen Fluss sollte es möglich sein, mit einem Gradientenverstärkungsbaum zu analysieren. Die Analyse der Produktionsdaten entfällt hier. Darüber hinaus verfügt xgboost über eine praktische Funktion, z. B. die Visualisierung des Gewichts der Funktionsmenge. Schauen Sie sich diese also bitte an.

Referenz

Python: Versuchen Sie es mit XGBoost https://blog.amedama.jp/entry/2019/01/29/235642

Verstehen Sie den Mechanismus und die Vorgehensweise von GBDT intuitiv anhand von Zahlen und konkreten Beispielen https://www.acceluniverse.com/blog/developers/2019/12/gbdt.html

Kaggle Master erklärt die Erhöhung des Gradienten https://qiita.com/woody_egg/items/232e982094cd3c80b3ee

Bücher: Daisuke Kadowaki, Takashi Sakata, Keisuke Hosaka und Yuji Hiramatsu (2019) "Technologie für Datenanalyse mit Kaggle zum Sieg"

Recommended Posts

Lassen Sie uns mit xgboost einen Baum mit Gradientenverstärkung modellieren
LightGBM bietet eine weitere Gradient Boosting Library
Wählen Sie mit matplotlib abgestufte Farben aus