ComeçarComece de graça

Usando regularização no XGBoost

Depois de ver um exemplo de regularização l1 no vídeo, agora você vai variar a penalidade de regularização l2 — também conhecida como "lambda" — e observar seu efeito no desempenho geral do modelo no conjunto de dados de habitação de Ames.

Este exercício faz parte do curso

Extreme Gradient Boosting com XGBoost

Ver curso

Instruções do exercício

  • Crie seu DMatrix a partir de X e y, como antes.
  • Crie um dicionário de parâmetros inicial especificando um "objective" de "reg:squarederror" e "max_depth" de 3.
  • Use xgb.cv() dentro de um laço for e varie sistematicamente o valor de "lambda" passando o valor atual de l2 (reg).
  • Adicione o "test-rmse-mean" da última rodada de boosting para cada modelo xgboost com validação cruzada.
  • Clique em 'Enviar Resposta' para ver os resultados. O que você percebe?

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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 e executar o código