Regolarizzazione e base learner in XGBoost

Extreme Gradient Boosting con XGBoost

Sergey Fogelson

Head of Data Science, TelevisaUnivision

Regolarizzazione in XGBoost

  • La regolarizzazione controlla la complessità del modello
  • Vogliamo modelli accurati e il più semplici possibile
  • Parametri di regolarizzazione in XGBoost:
    • gamma - riduzione minima della loss richiesta per effettuare uno split
    • alpha - regolarizzazione l1 sui pesi delle foglie; valori maggiori = più regolarizzazione
    • lambda - regolarizzazione l2 sui pesi delle foglie
Extreme Gradient Boosting con XGBoost

Esempio di regolarizzazione L1 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"]))
Miglior rmse in funzione di l1:
        l1          rmse
    0    1  69572.517742
    1   10  73721.967141
    2  100  82312.312413
Extreme Gradient Boosting con XGBoost

Base learner in XGBoost

  • Base learner lineare:
    • Somma di termini lineari
    • Il modello boosted è una somma pesata di modelli lineari (quindi è lineare)
    • Raramente usato
  • Base learner ad albero:
    • Albero decisionale
    • Il modello boosted è una somma pesata di alberi decisionali (non lineare)
    • Quasi sempre usato in XGBoost
Extreme Gradient Boosting con XGBoost

Creare DataFrame da più liste di pari lunghezza

  • pd.DataFrame(list(zip(list1,list2)),columns=["list1","list2"]))
  • zip crea un generator di valori in parallelo:
    • zip([1,2,3],["a","b""c"]) = [1,"a"],[2,"b"],[3,"c"]
    • i generators devono essere completamente istanziati prima di poterli usare nei DataFrame
  • list() istanzia l'intero generator e passando quello al DataFrame converte tutta l'espressione
Extreme Gradient Boosting con XGBoost

Esercitiamoci!

Extreme Gradient Boosting con XGBoost

Preparing Video For Download...