Régularisation et apprenants de base dans XGBoost

Amorçage de gradient avancé avec XGBoost

Sergey Fogelson

Head of Data Science, TelevisaUnivision

Régularisation dans XGBoost

  • La régularisation contrôle la complexité du modèle
  • Viser des modèles à la fois précis et aussi simples que possible
  • Paramètres de régularisation dans XGBoost :
    • gamma : réduction minimale de perte requise pour effectuer une division
    • alpha : régularisation l1 sur les poids des feuilles, plus la valeur est grande, plus la régularisation est forte
    • lambda : régularisation l2 sur les poids des feuilles
Amorçage de gradient avancé avec XGBoost

Exemple de régularisation L1 dans XGBoost

import xgboost as xgb
import pandas as pd
boston_data = pd.read_csv("boston_data.csv")
X,y = boston_data.iloc[:,:-1],boston_data.iloc[:,-1]

boston_dmatrix = xgb.DMatrix(data=X,label=y) params={"objective":"reg:squarederror","max_depth":4}
l1_params = [1,10,100] rmses_l1=[]
for reg in l1_params: params["alpha"] = reg cv_results = xgb.cv(dtrain=boston_dmatrix, params=params,nfold=4, num_boost_round=10,metrics="rmse",as_pandas=True,seed=123) rmses_l1.append(cv_results["test-rmse-mean"].tail(1).values[0])
print("Best rmse as a function of l1:") print(pd.DataFrame(list(zip(l1_params,rmses_l1)), columns=["l1","rmse"]))
Best rmse as a function of l1:
        l1          rmse
    0    1  69572.517742
    1   10  73721.967141
    2  100  82312.312413
Amorçage de gradient avancé avec XGBoost

Apprenants de base dans XGBoost

  • Apprenant de base linéaire :
    • Somme de termes linéaires
    • Le modèle amplifié est une somme pondérée de modèles linéaires (donc linéaire)
    • Rarement utilisé
  • Apprenant de base en arbre :
    • Arbre de décision
    • Le modèle amplifié est une somme pondérée d'arbres de décision (non linéaire)
    • Presque exclusivement utilisé dans XGBoost
Amorçage de gradient avancé avec XGBoost

Créer des DataFrame à partir de listes de même longueur

  • pd.DataFrame(list(zip(list1,list2)),columns=["list1","list2"]))
  • zip crée un generator de valeurs parallèles :
    • zip([1,2,3],["a","b""c"]) = [1,"a"],[2,"b"],[3,"c"]
    • les generators doivent être entièrement instanciés avant d'être utilisés dans des objets DataFrame
  • list() instancie tout le générateur, et le passer dans le DataFrame convertit l'expression complète
Amorçage de gradient avancé avec XGBoost

Passons à la pratique !

Amorçage de gradient avancé avec XGBoost

Preparing Video For Download...