Regularisatie en basislearners in XGBoost

Extreme Gradient Boosting met XGBoost

Sergey Fogelson

Head of Data Science, TelevisaUnivision

Regularisatie in XGBoost

  • Regularisatie houdt de modelcomplexiteit in toom
  • Je wilt modellen die nauwkeurig én zo simpel mogelijk zijn
  • Regularisatieparameters in XGBoost:
    • gamma - minimale verliesreductie die nodig is voor een split
    • alpha - l1-regularisatie op bladgewichten, hoger is meer regularisatie
    • lambda - l2-regularisatie op bladgewichten
Extreme Gradient Boosting met XGBoost

Voorbeeld van L1-regularisatie in 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
Extreme Gradient Boosting met XGBoost

Basislearners in XGBoost

  • Lineaire basislearner:
    • Som van lineaire termen
    • Boosted model is een gewogen som van lineaire modellen (dus zelf lineair)
    • Wordt zelden gebruikt
  • Boom-basislearner:
    • Beslissingsboom
    • Boosted model is een gewogen som van beslissingsbomen (niet-lineair)
    • In XGBoost bijna altijd gebruikt
Extreme Gradient Boosting met XGBoost

DataFrames maken uit meerdere lijsten met gelijke lengte

  • pd.DataFrame(list(zip(list1,list2)),columns=["list1","list2"]))
  • zip maakt een generator met parallelle waarden:
    • zip([1,2,3],["a","b""c"]) = [1,"a"],[2,"b"],[3,"c"]
    • generators moeten volledig geïnstantieerd zijn voordat je ze in DataFrame-objecten kunt gebruiken
  • list() instantieert de volledige generator, en door die aan DataFrame te geven wordt de hele expressie omgezet
Extreme Gradient Boosting met XGBoost

Laten we oefenen!

Extreme Gradient Boosting met XGBoost

Preparing Video For Download...