Aan de slagGa gratis aan de slag

Tunen van max_depth

In deze oefening ga je max_depth tunen, de parameter die bepaalt wat de maximale diepte is die elke boom in een boostingronde kan krijgen. Kleinere waarden leveren ondiepere bomen op en grotere waarden diepere bomen.

Deze oefening maakt deel uit van de cursus

Extreme Gradient Boosting met XGBoost

Cursus bekijken

Oefeninstructies

  • Maak een lijst max_depths om de volgende "max_depth"-waarden op te slaan: 2, 5, 10 en 20.
  • Itereer over je max_depths-lijst met een for-loop.
  • Varieer "max_depth" systematisch in elke iteratie van de for-loop en voer 2-fold cross-validatie uit met early stopping (5 rondes), 10 boostingrondes, een metric "rmse" en een seed van 123. Zorg dat de output een DataFrame is.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Create your housing DMatrix
housing_dmatrix = xgb.DMatrix(data=X,label=y)

# Create the parameter dictionary
params = {"objective":"reg:squarederror"}

# Create list of max_depth values
max_depths = ____
best_rmse = []

# Systematically vary the max_depth
for curr_val in ____:

    params["____"] = ____
    
    # Perform cross-validation
    cv_results = ____
    
    
    
    # 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(max_depths, best_rmse)),columns=["max_depth","best_rmse"]))
Code bewerken en uitvoeren