Ajustarea parametrului colsample_bytree
Acum este momentul să ajustezi "colsample_bytree". Poate că ai mai întâlnit acest parametru dacă ai lucrat cu RandomForestClassifier sau RandomForestRegressor din scikit-learn, unde purta numele max_features. Atât în xgboost, cât și în sklearn, acest parametru – deși are nume diferite – specifică pur și simplu fracțiunea de caracteristici selectate la fiecare împărțire dintr-un arbore. În xgboost, colsample_bytree trebuie să fie un număr zecimal între 0 și 1.
Acest exercițiu face parte din cursul
Gradient Boosting Extrem cu XGBoost
Instrucțiuni pentru exercițiu
- Creează o listă numită
colsample_bytree_valscare să stocheze valorile0.1,0.5,0.8și1. - Variază sistematic
"colsample_bytree"și efectuează validarea încrucișată, exact așa cum ai făcut anterior cumax_depthșieta.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Create your housing DMatrix
housing_dmatrix = xgb.DMatrix(data=X,label=y)
# Create the parameter dictionary
params={"objective":"reg:squarederror","max_depth":3}
# Create list of hyperparameter values: colsample_bytree_vals
____ = ____
best_rmse = []
# Systematically vary the hyperparameter value
for curr_val in ____:
____ = ____
# Perform cross-validation
cv_results = xgb.cv(dtrain=housing_dmatrix, params=params, nfold=2,
num_boost_round=10, early_stopping_rounds=5,
metrics="rmse", as_pandas=True, seed=123)
# Append the final round rmse to best_rmse
best_rmse.append(cv_results["test-rmse-mean"].tail().values[-1])
# Print the resultant DataFrame
print(pd.DataFrame(list(zip(colsample_bytree_vals, best_rmse)), columns=["colsample_bytree","best_rmse"]))