在 XGBoost 中使用正则化
您已经在视频中看到过 l1 正则化的示例。现在请调整 l2 正则化惩罚(也称为 "lambda"),观察其对 Ames 房价数据集整体模型性能的影响。
本练习是课程的一部分
使用 XGBoost 的极端梯度提升
练习说明
- 和之前一样,用
X与y创建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"]))