ComenzarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Crea tu DMatrix a partir de X y y como antes.
  • Crea un diccionario de parámetros inicial especificando un "objective" de "reg:squarederror" y "max_depth" de 3.
  • Usa xgb.cv() dentro de un bucle for y 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 de xgboost con 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"]))
Editar y ejecutar código