Un des algorithmes souvent utilisés dans les concours d'analyse de données. Abrégé en GBDT.
G ・ ・ ・ Gradient = méthode de descente de gradient B ・ ・ ・ Boosting = une des méthodes d'ensemble D ・ ・ ・ Décision T ・ ・ ・ Arbre
En d'autres termes, c'est une méthode qui combine "Gradient", "Boosting (ensemble)" et "Decision Tree".
Un algorithme qui met à jour les poids petit à petit pour trouver le point où le gradient d'erreur est minimisé. Pensez que "plus petite erreur = prédiction plus précise".
L'une des méthodes d'ensemble pour créer un modèle en combinant plusieurs modèles. Les modèles du même type sont combinés en série et les modèles sont entraînés tout en corrigeant les valeurs prédites. Un apprenant fort (très précis) peut être créé en combinant plusieurs apprenants faibles (ceux avec une faible précision de prédiction).
Méthode d'analyse de données à l'aide d'un dendrogramme. Par exemple, lors de la prédiction "d'acheter de la crème glacée"
"Température supérieure à 30 ° C" => achètera "Température inférieure à 30 ° C" => N'achèterait pas
Préparez la condition et faites une prédiction.
--Les caractéristiques sont des valeurs numériques
La quantité de caractéristiques doit être une valeur numérique afin de juger si la branche de l'arbre de détermination est plus grande ou plus petite que la quantité de caractéristiques.
--Peut gérer les valeurs manquantes
Puisqu'il est jugé par la branche de l'arbre de décision, il peut être utilisé sans compléter la valeur manquante.
La précision est améliorée en corrigeant la différence entre la valeur prédite et la variable objectif dans l'arbre de décision suivant.
Cette fois, nous effectuerons une classification binaire.
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() #Confirmation de lecture
#Cette fois à partir de la quantité de caractéristiques X"foo", À partir de la variable objectif Y"bar"Se débarrasser de
X = df.drop(['foo', 'bar'], axis=1)
y = df['bar']
X.head() #Confirmez qu'il a été supprimé
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0, shuffle=True)
test_size: divise le rapport spécifié en tant que données d'évaluation (30% pour 0,3) random_state: spécifiez la valeur de départ lors de la génération de nombres aléatoires shuffle: s'il faut trier au hasard lors du fractionnement des données
xgboost nécessite que l'ensemble de données soit au format DMatrix.
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)
xgb_params = {
#Classification binaire
'objective': 'binary:logistic',
#Spécification de la perte de journal d'index d'évaluation
'eval_metric': 'logloss',
}
bst = xgb.train(xgb_params,
dtrain,
#Nombre de cycles d'apprentissage
num_boost_round=100,
#Si une amélioration ne peut être attendue même après un certain virage, arrêtez d'apprendre
early_stopping_rounds=10,
)
y_pred = bst.predict(dtest)
acc = accuracy_score(y_test, y_pred)
print('Accuracy:', acc)
Cela donnera la précision, donc ajustez les paramètres si nécessaire.
Python: essayez d'utiliser XGBoost https://blog.amedama.jp/entry/2019/01/29/235642
Comprendre intuitivement le mécanisme et la procédure du GBDT avec des chiffres et des exemples concrets https://www.acceluniverse.com/blog/developers/2019/12/gbdt.html
Kaggle Master explique le renforcement du gradient https://qiita.com/woody_egg/items/232e982094cd3c80b3ee
Livres: Daisuke Kadowaki, Takashi Sakata, Keisuke Hosaka, Yuji Hiramatsu (2019) "Technology for Data Analysis to Win with Kaggle" Technical Review Company