如果你想很好地理解某些内容,请尝试简单地给别人解释出来。——费曼
XGBoost是一个很优美的算法,它的过程不乏启发性。这些通常简单而美丽的概念在数学术语中消失了。我在理解数学的过程中也遇到过同样的挑战,所以我写这篇文章的目的是巩固我的理解,同时帮助其他人完成类似的过程。
为了解XGBoost是什么,我们首先要了解什么是梯度提升机Gradient Boosting,以及梯度提升机背后的数学概念。请注意,这篇文章假设你对梯度提升机非常熟悉,并试图触及梯度提升机和XGBoost背后的直觉和数学。现在我们开始吧。
理解梯度提升机
第一步 - 初始函数
与往常一样,让我们从粗略的初始函数F0开始,类似于回归时所有值的平均值。它将为我们提供一些输出,无论效果如何。
第二步 - 损失函数
下面我们计算损失函数L(y_i,F_t (x_i))
那么什么是损失函数?它是一种度量预测值与真实值之间差异的算式,这里有几个例子:
从下表可以理解为什么对异常值的鲁棒性很重要:
其思想是,损失函数的值越低,我们的预测就越准确,所以获取最佳的预测值等价为损失函数的最小化问题。
第三步 - 新的目标
到目前为止,我们已经建立了我们的初始模型,并进行了预测。接下来,我们应该在损失函数给出的残差上拟合一个新模型,但有一个微妙的转折:我们将拟合损失函数的负梯度,下面给出我们为什么这样做以及为什么它们相似的直觉:
梯度可以解释为函数的“最快增加的方向和速率”,因此负梯度告诉我们函数最小值的方向,在这种情况下为损失函数的最小值。
我们将遵循梯度下降法,逐步逼近损失函数的极小值,算法的学习速率将给出每一次更新的步长。在损失函数最小的情况下,我们的错误率也最低。
因此,我们将在损失函数的-ve梯度处建立新模型hₜ₊₁
第四步 - 累加
在-ve梯度上迭代拟合模型的过程将继续进行,直到我们达到给定的弱学习器数量的最小值或极限T为止,这称为累加。
回想一下,在Adaboost中,模型的“缺点”是由高权重数据点确定的。在梯度提升机中,“缺点”是通过梯度来识别的。
简单来说,这就是梯度提升机的工作机制。在回归和分类任务中,唯一不同的是所使用的损失函数。