ПочатиПочніть безкоштовно

Налаштування colsample_bytree

Тепер час налаштувати "colsample_bytree". Ви вже зустрічалися з цим параметром, якщо працювали зі scikit-learn — у RandomForestClassifier або RandomForestRegressor він має назву max_features. І в xgboost, і в sklearn цей параметр (хоча й називається по-різному) визначає частку ознак, з яких обирають на кожному розщепленні в межах дерева. У xgboost colsample_bytree задається як число з плаваючою комою в діапазоні від 0 до 1.

Ця вправа є частиною курсу

Екстремальний градієнтний бустинг з XGBoost

Переглянути курс

Інструкції до вправи

  • Створіть список colsample_bytree_vals для зберігання значень 0.1, 0.5, 0.8 і 1.
  • Систематично змінюйте "colsample_bytree" і виконуйте крос-валідизацію — так само, як ви робили раніше для max_depth і eta.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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"]))
Редагувати та запускати код