降低学习率会使我在验证集上的准确性下降

数据挖掘 机器学习 xgboost 助推
2022-03-02 11:03:12

我正在使用 XGBoost,当我将验证集的平均绝对误差从 0.05 更改为 0.03 时,我的平均绝对误差会上升,我认为较小的学习率只会使其运行速度变慢,并且如果有任何影响,它会提高模型的准确性,因为它所做的一切是使步幅更小,因此如果有的话,它不太容易过度射击。

所以也许我并不像我想象的那样了解学习率。

为什么会这样?

PS。除了反复试验之外,有没有一种很好的方法来计算学习率和其他参数,如 n_estimators(在本例中为 XGBoost)等等?

2个回答

ML 算法中的优化器函数使用学习率更新自身以收敛局部最小值。当步长(这里的学习率 = eta)变小时,函数可能不会收敛,因为这个小学习率(步长)没有足够的步长。

您应该增加学习率或步数,同时保持学习率恒定以处理问题。

您可能想查看梯度下降:https ://en.wikipedia.org/wiki/Gradient_descent

下图也很好地解释了如何调整学习率。(来源:https ://www.jeremyjordan.me/nn-learning-rate/ )

在此处输入图像描述

确保在降低 learning_rate 时增加n_estimators的值,否则模型会过早停止而无法找到最优值。这应该在调整其他参数之后完成。

这里有一些关于超参数调整的好教程:

https://blog.cambridgespark.com/hyperparameter-tuning-in-xgboost-4ff9100a3b2f

https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/