LoslegenKostenlos loslegen

Regularisierung in XGBoost verwenden

Nachdem du im Video ein Beispiel für l1-Regularisierung gesehen hast, variierst du jetzt die l2-Regularisierungsstrafe – auch bekannt als "lambda" – und beobachtest ihren Einfluss auf die Gesamtleistung des Modells auf dem Ames-Housing-Datensatz.

Diese Übung ist Teil des Kurses

Extreme Gradient Boosting mit XGBoost

Kurs anzeigen

Anleitung zur Übung

  • Erstelle wie zuvor deine DMatrix aus X und y.
  • Erzeuge ein initiales Parameter-Wörterbuch mit "objective" auf "reg:squarederror" und "max_depth" auf 3.
  • Verwende xgb.cv() in einer for-Schleife und variiere systematisch den "lambda"-Wert, indem du den aktuellen l2-Wert (reg) übergibst.
  • Hänge den "test-rmse-mean" aus der letzten Boosting-Runde für jedes per Cross-Validation bewertete xgboost-Modell an.
  • Klicke auf "Antwort senden", um die Ergebnisse zu sehen. Was fällt dir auf?

Interaktive Übung

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

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

reg_params = [1, 10, 100]

# Create the initial parameter dictionary for varying l2 strength: params
params = {"____":"____","____":____}

# Create an empty list for storing rmses as a function of l2 complexity
rmses_l2 = []

# Iterate over reg_params
for reg in reg_params:

    # Update l2 strength
    params["lambda"] = ____
    
    # Pass this updated param dictionary into cv
    cv_results_rmse = ____.____(dtrain=____, params=____, nfold=2, num_boost_round=5, metrics="rmse", as_pandas=True, seed=123)
    
    # Append best rmse (final round) to rmses_l2
    ____.____(____["____"].tail(1).values[0])

# Look at best rmse per l2 param
print("Best rmse as a function of l2:")
print(pd.DataFrame(list(zip(reg_params, rmses_l2)), columns=["l2", "rmse"]))
Code bearbeiten und ausführen