为了评估偏差-方差权衡,我更喜欢绘制预测误差与训练估算器复杂度的关系图。误差与复杂度图
在xgboost的情况下,文档中指出,复杂度被视为目标函数的正则化项。因此,原则上生成这样的图表应该很容易。
然而,我无法弄清楚如何获取已训练模型的计算正则化项。我使用的是Python的scikit-learn API。
这个值在库中是否可用,还是需要在训练后重新计算?
回答:
你不需要获取正则化项,而是需要设置正则化。正则化越低,模型越复杂,反之亦然。在XGBoost中,正则化是通过lambda参数设置的(文档链接)。
你需要遍历l2
值列表,训练模型,并计算训练和测试子集的误差。
这里还有一篇很好的文章,介绍如何为XGBoost调整正则化。