假设您正在尝试通过迭代次数最小化目标函数。当前值为。在给定的数据集中,没有“不可减少的错误”,您可以将损失降至最低100.0训练数据 0.0。现在,您有两种方法可以做到这一点。0.0
现在考虑一下:这两种方法是否相等?如果不是,那么在优化上下文和机器学习上下文中哪个更好?
在优化文献中,这两种方法是相同的。因为它们都收敛到最优解。另一方面,在机器学习中,它们并不相等。因为在大多数情况下,我们不会将训练损失设为,否则会导致过度拟合。0
我们可以将第一种方法视为“粗级网格搜索”,将第二种方法视为“细级网格搜索”。第二种方法通常效果更好,但是需要更多的计算能力才能进行更多的迭代。
为了防止过度拟合,我们可以做不同的事情,第一种方法是限制迭代次数,假设我们正在使用第一种方法,将迭代次数限制为5。最后,训练数据的损失为50。(顺便说一句,从优化的角度来看,这很奇怪,这意味着我们将来可以改进我们的解决方案/它尚未收敛,但我们选择不这样做。在优化中,通常我们会向目标函数明确添加约束或惩罚项,但通常不限制迭代次数。)
另一方面,我们也可以使用第二种方法:如果我们将学习率设置为较小,比如说每次迭代减少损失,尽管我们有很多次迭代(例如500次迭代),我们仍然没有将损失最小化为0.0。0.15000.0
这就是为什么小学习率等于“更多正则化”的原因。
这是一个使用的实验数据使用不同学习率的示例xgboost
。请检查follwoing两个链接,看看有什么不eta
和n_iterations
的意思。
Tree Booster的参数
XGBoost控制过度拟合
对于相同的迭代次数,说。小学习率表示“欠拟合”(或者模型具有“高偏差”),大学习率表示“过度拟合”(或者模型具有“高方差”)。50
PS。拟合不足的证据是训练集和测试集都有较大的误差,并且训练集和测试集的误差曲线彼此接近。过度拟合的迹象是训练集的误差非常低,而测试集则很高,两条曲线彼此相距很远。