Uso de la regularización en XGBoost
Después de ver un ejemplo de regularización l1 en el vídeo, ahora vas a variar la penalización de regularización l2 —también conocida como "lambda"— y observar su efecto en el rendimiento general del modelo en el conjunto de datos de viviendas de Ames.
Este ejercicio forma parte del curso
Extreme Gradient Boosting con XGBoost
Instrucciones del ejercicio
- Crea tu
DMatrixa partir deXyycomo antes. - Crea un diccionario de parámetros inicial especificando un
"objective"de"reg:squarederror"y"max_depth"de3. - Usa
xgb.cv()dentro de un buclefory varía sistemáticamente el valor de"lambda"pasando el valor l2 actual (reg). - Añade el
"test-rmse-mean"de la última ronda de boosting para cada modelo dexgboostcon validación cruzada. - Pulsa "Submit Answer" para ver los resultados. ¿Qué observas?
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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"]))