较小的学习率如何影响 gbm 的性能?

机器算法验证 机器学习 助推 样本外
2022-03-24 06:41:23

我一直赞同民间智慧,即降低 gbm(梯度提升树模型)中的学习率不会损害模型的样本外性能。今天,我不太确定。

我正在将模型(最小化平方误差和)拟合到波士顿住房数据集这是在 20% 的测试数据集上按树数绘制的错误图

不同学习率的树数误差

很难看到最后发生了什么,所以这里有一个极端的放大版本

放大版

的学习率似乎是最好的,较小的学习率在保留数据上表现更差。0.01

如何最好地解释这一点?

这是波士顿数据集小规模的产物吗?我更熟悉拥有数十万或数百万个数据点的情况。

我应该开始使用网格搜索(或其他一些元算法)来调整学习率吗?

2个回答

是的,你是对的,较低的学习率应该比较高的学习率找到更好的最优值。但是您应该使用网格搜索来调整超参数,以找到学习率与其他超参数的最佳组合。

GBM 算法除了学习率(收缩率)外,还使用了多个超参数,它们是:

  1. 树的数量
  2. 互动深度
  3. 节点中的最小观测值
  4. 袋子分数(随机选择的观察值的分数)

网格搜索需要检查所有这些以确定最优的参数集。

例如,在我用 GBM 调优的一些数据集上,我观察到随着每个超参数的变化,准确度会有很大差异。我没有在您的示例数据集上运行 GBM,但我将参考另一个数据集的类似调整练习。有关具有高度不平衡类的分类问题,请参阅此图。

不同收缩(学习率)对 Kappa 指标的影响

尽管对于较低的学习率,准确率最高,例如对于最大值。树深度为 16,Kappa 指标在学习率为 0.2 时为 0.425,优于在学习率为 0.35 时的 0.415。

但是,当您查看 0.25 与 0.26 的学习率时,对于 14、15 和 16 的最大树深度,Kappa 会急剧但小幅增加;而对于树深度 12 和 13,它会继续减小。

因此,我建议您应该尝试网格搜索。

此外,正如您所提到的,这种情况也可能因数据集的样本量较小而加剧。

Sandeep S. Sandhu 提供了一个很好的答案。至于你的情况,我认为你的模型对于那些小的学习率还没有收敛。根据我的经验,当在梯度提升树上使用小至 0.001 的学习率时,您需要大约 100,000 个提升阶段(或树)才能达到最小值。因此,如果您将 boost 轮数增加到十倍以上,您应该能够看到较小的学习率比较大的学习率表现更好。

您还可以查看 Laurae++ 的网站,了解 Lightgbm/XGBoost 的每个参数的详细说明(https://sites.google.com/view/lauraepp/parameters并单击“学习率”)。

这是关于学习率的最重要的引述:

信念

一旦你的学习率是固定的,不要改变它。
将学习率视为要调整的超参数并不是一个好习惯。
应根据您的训练速度和性能权衡调整学习率。
不要让优化器对其进行调整。不能期望看到 0.0202048 的过拟合学习率。

细节

每次迭代都应该改善训练损失。
这种改进与学习率相乘以执行较小的更新。
较小的更新允许过拟合较慢的数据,但需要更多的迭代来训练。
例如,以 0.1 的学习率进行 5 次迭代大约需要以 0.001 的学习率进行 5000 次迭代,这对于大型数据集来说可能是令人讨厌的。通常,我们使用 0.05 或更低的学习率进行训练,而使用 0.10 或更大的学习率来修改超参数。