LoslegenKostenlos loslegen

colsample_bytree tunen

Jetzt ist es Zeit, "colsample_bytree" zu tunen. Das kennst du bereits, wenn du mit scikit-learns RandomForestClassifier oder RandomForestRegressor gearbeitet hast – dort heißt es max_features. In xgboost und sklearn gibt dieser Parameter (trotz unterschiedlicher Namen) einfach den Anteil der Features an, aus denen bei jedem Split eines Baums gewählt wird. In xgboost muss colsample_bytree als Float zwischen 0 und 1 angegeben werden.

Diese Übung ist Teil des Kurses

Extreme Gradient Boosting mit XGBoost

Kurs anzeigen

Anleitung zur Übung

  • Erstelle eine Liste namens colsample_bytree_vals, die die Werte 0.1, 0.5, 0.8 und 1 enthält.
  • Variiere "colsample_bytree" systematisch und führe eine Kreuzvalidierung durch – genauso wie du es zuvor mit max_depth und eta gemacht hast.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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"]))
Code bearbeiten und ausführen