梯度提升算法的误差是否总是在训练数据上下降得更快和更低?

数据挖掘 xgboost 过拟合 助推 adaboost 猫促进
2022-03-02 04:29:19

我正在构建另一个 XGBoost 模型,并且我真的在努力不过度拟合数据。我将我的数据拆分为训练集和测试集,并根据测试集误差拟合模型并提前停止,这会导致以下损失图:

在此处输入图像描述

我会说这是非常标准的情节,使用提升算法作为 XGBoost。我的理由是,我的兴趣点主要是测试集上的性能,直到 XGBoost 由于过早停止测试集损失而在第 600 个 epoch 左右停止训练之前,测试集损失仍在下降。另一方面,过度拟合有时被定义为训练误差比测试误差下降得更快的情况,这正是这里发生的情况。但我的直觉是,基于决策树的技术总是向下钻取训练数据(例如,随机森林中的树会故意过度拟合训练集,它是装袋以减少方差的作用)。我相信梯度提升技术也可以通过深入挖掘训练数据集而闻名,即使学习率很低,我们也无能为力。

但我可能错了。因此,我想确认这种情况并不值得担心,并且我不会过度拟合数据。我还想问一下使用梯度提升技术的完美学习曲线图会是什么样子?

2个回答

当测试错误率再次开始上升时,您应该担心过度拟合。在那之前,我会把它放在一边。过度拟合与参数的数量有关,例如,当两个具有相同性能的模型具有不同数量的参数时,您会更喜欢具有较少参数的模型以保持模型的泛化能力。

一般来说,训练误差会低于测试误差,原因很明显(模型只看到训练数据而不是测试数据),但在某些情况下甚至可以逆转。例如,当测试数据很少,或者测试数据与训练数据的分布不同时。

不存在“完美”的学习曲线,最终的表现才是最重要的。

我想确认这种情况并不值得担心,我不会过度拟合数据。

不,情况并不令人担忧,当测试错误开始增加时,您可以认为它令人担忧。通常,最佳模型有点过拟合。

基于决策树的技术总是向下钻取训练数据

是的,你的直觉是对的。随机森林中 bagging 的整个目标是避免单个决策树的过度拟合。

我相信梯度提升技术也可以通过深入挖掘训练数据集而闻名,即使学习率很低,我们也无能为力。

在足够的迭代之后,较小的学习率将导致更多的过度拟合。与梯度下降相同的直觉。

由于提前停止,XGBoost 在第 600 个 epoch 左右停止训练

我不确定 'epoch' 是否在这里是正确的术语(我可能是错的),但可能是更多的迭代,因为它指的是提升集成中的树的数量。

你在绘制什么指标?你确定这是一个有代表性的指标吗?如果您绘制其余的二元分类指标会发生什么?