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.
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".
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.
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.
Die Genauigkeit wird verbessert, indem die Differenz zwischen dem vorhergesagten Wert und der Zielvariablen im nächsten Entscheidungsbaum korrigiert wird.
Dieses Mal werden wir eine binäre Klassifizierung durchführen.
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
df = pd.read_csv('hoge.csv')
df.head() #Lesebestätigung
#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
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
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)
xgb_params = {
#Binäre Klassifizierung
'objective': 'binary:logistic',
#Angabe des Protokollverlusts des Bewertungsindex
'eval_metric': 'logloss',
}
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,
)
y_pred = bst.predict(dtest)
acc = accuracy_score(y_test, y_pred)
print('Accuracy:', acc)
Dadurch wird die Genauigkeit ausgegeben. Passen Sie daher die Parameter nach Bedarf an.
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"