开始使用免费开始使用

在 XGBoost 中使用正则化

您已经在视频中看到过 l1 正则化的示例。现在请调整 l2 正则化惩罚(也称为 "lambda"),观察其对 Ames 房价数据集整体模型性能的影响。

本练习是课程的一部分

使用 XGBoost 的极端梯度提升

查看课程

练习说明

  • 和之前一样,用 Xy 创建 DMatrix
  • 创建初始参数字典,指定 "objective""reg:squarederror""max_depth"3
  • for 循环中使用 xgb.cv(),通过传入当前的 l2 值(reg)系统地改变 "lambda"
  • 对每个交叉验证得到的 xgboost 模型,追加其最后一轮增益中的 "test-rmse-mean"
  • 点击 "Submit Answer" 查看结果。您发现了什么?

交互式实操练习

通过完成这段示例代码来试试这个练习。

# 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"]))
编辑并运行代码