Aan de slagGa gratis aan de slag

Eta tunen

Tijd om serieus te oefenen met het tunen van andere XGBoost-hyperparameters en te zien wat hun effect is op de modelprestatie! Je begint met het tunen van "eta", ook wel de learning rate.

De learning rate in XGBoost is een parameter die kan variëren tussen 0 en 1. Hogere waarden van "eta" straffen de featuregewichten zwaarder af, wat zorgt voor sterkere regularisatie.

Deze oefening maakt deel uit van de cursus

Extreme Gradient Boosting met XGBoost

Cursus bekijken

Oefeninstructies

  • Maak een lijst eta_vals om de volgende "eta"-waarden op te slaan: 0.001, 0.01 en 0.1.
  • Itereer over je eta_vals-lijst met een for-loop.
  • Stel in elke iteratie van de for-loop de "eta"-sleutel van params gelijk aan curr_val. Voer vervolgens 3-voudige 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.
  • Voeg de RMSE van de laatste ronde toe aan de lijst best_rmse.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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

# Create the parameter dictionary for each tree (boosting round)
params = {"objective":"reg:squarederror", "max_depth":3}

# Create list of eta values and empty list to store final round rmse per xgboost model
____ = [____, ____, ____]
best_rmse = []

# Systematically vary the eta 
for curr_val in ____:

    params["___"] = curr_val
    
    # Perform cross-validation: cv_results
    cv_results = ____
    
    
    
    # Append the final round rmse to best_rmse
    ____.____(____["____"].tail().values[-1])

# Print the resultant DataFrame
print(pd.DataFrame(list(zip(eta_vals, best_rmse)), columns=["eta","best_rmse"]))
Code bewerken en uitvoeren