Kom igångKom igång gratis

Använda regularisering i XGBoost

Nu när du sett ett exempel på l1-regularisering i videon är det dags att variera l2-regulariseringsstraffet – även kallat "lambda" – och se hur det påverkar modellens övergripande prestanda på Ames-husprisdatamängden.

Den här övningen är en del av kursen

Extreme Gradient Boosting med XGBoost

Visa kurs

Övningsinstruktioner

  • Skapa din DMatrix från X och y som tidigare.
  • Skapa en initial parametervärdesordlista med "objective" satt till "reg:squarederror" och "max_depth" satt till 3.
  • Använd xgb.cv() inuti en for-loop och variera "lambda"-värdet systematiskt genom att skicka in det aktuella l2-värdet (reg).
  • Lägg till "test-rmse-mean" från den sista boosting-rundan för varje korsvaliderad xgboost-modell.
  • Klicka på Skicka in svar för att se resultaten. Vad lägger du märke till?

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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"]))
Redigera och kör kod