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