Regularisering och basmodeller i XGBoost

Extreme Gradient Boosting med XGBoost

Sergey Fogelson

Head of Data Science, TelevisaUnivision

Regularisering i XGBoost

  • Regularisering begränsar modellens komplexitet
  • Målet är modeller som är både träffsäkra och så enkla som möjligt
  • Regulariseringsparametrar i XGBoost:
    • gamma – minsta tillåtna förlustminskning för att en uppdelning ska ske
    • alpha – l1-regularisering på lövvikter, högre värde ger mer regularisering
    • lambda – l2-regularisering på lövvikter
Extreme Gradient Boosting med XGBoost

Exempel på l1-regularisering i 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 med XGBoost

Basinlärare i XGBoost

  • Linjär basinlärare:
    • Summa av linjära termer
    • Den boostade modellen är en viktad summa av linjära modeller (och är därmed själv linjär)
    • Används sällan
  • Trädbaserad basinlärare:
    • Beslutsträd
    • Den boostade modellen är en viktad summa av beslutsträd (icke-linjär)
    • Används nästan uteslutande i XGBoost
Extreme Gradient Boosting med XGBoost

Skapa DataFrames från flera listor med samma längd

  • pd.DataFrame(list(zip(list1,list2)),columns=["list1","list2"]))
  • zip skapar en generator av parallella värden:
    • zip([1,2,3],["a","b""c"]) = [1,"a"],[2,"b"],[3,"c"]
    • generators måste instansieras helt innan de kan användas i DataFrame-objekt
  • list() instansierar hela generatorn och skickar den till DataFrame, vilket konverterar hela uttrycket
Extreme Gradient Boosting med XGBoost

Nu kör vi en övning!

Extreme Gradient Boosting med XGBoost

Preparing Video For Download...