集成学习算法梯度提升(gradient boosting)的直观看法

reference:
Intuitive Ensemble Learning Guide with Gradient Boosting

文章目录

  • 几句话总结全文
  • Introduction
  • Ensemble Learning
  • Gradient Boosting (GB)
  • 梯度提升的总结

几句话总结全文

  1. 梯度提升算法的核心思想:使用前一个模型的残差作为下一个模型的目标。

Introduction

使用单个机器学习模型可能并不总是适合数据。优化其参数也可能无济于事。一种解决方案是将多个模型组合在一起以拟合数据。本教程以梯度提升(gradient boosting)作为研究案例讨论了集成学习的重要性。
机器学习(ML)管道的一个关键步骤是选择适合数据的最佳算法。根据一些统计数据和数据的可视化,ML工程师将选择最佳算法。让我们在一个回归的例子上应用,其数据如图1所示。
Figure 1
集成学习算法梯度提升(gradient boosting)的直观看法_第1张图片
对图1的数据进行可视化得到图2,似乎线性回归模型是合适的。
Figure 2
集成学习算法梯度提升(gradient boosting)的直观看法_第2张图片
将根据图 3 中的等式来制定只有一个输入和一个输出的回归模型。
Figure 3
在这里插入图片描述
其中 a 和 b 是方程的参数。
因为我们不知道适合数据的最佳参数,我们可以从初始值开始。我们可以将a设为1.0,b设为0.0,并将模型可视化如图4所示。
Figure 4
集成学习算法梯度提升(gradient boosting)的直观看法_第3张图片
看来,根据参数的初始值,该模型并不适合数据。
第一次的模型尝试不成功很正常。问题是如何在这种情况下提高结果?换句话说,如何最大化分类准确率或最小化回归误差?有不同的方法可以做到这一点。
一个简单的方法是尝试改变以前选择的参数。经过若干次试验,模型将知道最佳参数是a=2和b=1。在这种情况下,模型将适合数据,如图5所示。非常好。
Figure 5
集成学习算法梯度提升(gradient boosting)的直观看法_第4张图片
但在有些情况下,改变模型参数并不能使模型符合数据。会有一些错误的预测。假设数据有一个新点(x=2,y=2)。根据图6,不可能找到使模型完全适合每个数据点的参数。
Figure 6
集成学习算法梯度提升(gradient boosting)的直观看法_第5张图片
人们可能会说,拟合4个点而漏掉一个是可以接受的。但是,如果有更多的点,如图7所示,直线无法拟合呢?因此,该模型会做出比正确预测更多的错误预测。没有一条线能适合整个数据。该模型对直线上的点的预测很强,但对其他点的预测很弱。
Figure 7
集成学习算法梯度提升(gradient boosting)的直观看法_第6张图片

Ensemble Learning

因为单一的回归模型不会适合整个数据,所以另一个解决方案是使用多个回归模型。每个回归模型将能够有力地拟合一部分数据。所有模型的组合将减少整个数据的总误差,产生一个普遍强大的模型。在一个问题中使用多个模型被称为集合学习。使用多个模型的重要性在图8中得到了描述。图8(a)显示,在预测样本的结果时,误差很高。根据图8(b),当有多个模型(如三个模型)时,它们的结果的平均值将能够做出比以前更准确的预测。
Figure 8
集成学习算法梯度提升(gradient boosting)的直观看法_第7张图片
当被应用于图7中的问题时,拟合数据的4个回归模型的集合如图9所示。
Figure 9
集成学习算法梯度提升(gradient boosting)的直观看法_第8张图片
这就留下了另一个问题。如果有多个模型来拟合数据,如何得到单个预测?有两种方法可以组合多个回归模型以返回单个结果。它们是 bagging 和 boosting(这是本教程的重点)。
在 bagging 中,每个模型将返回其结果,最终结果将通过汇总所有这些结果返回。一种方法是对所有结果进行平均。 Bagging 是并行的,因为所有模型都在同时工作。

相反,boosting 被认为是顺序的,因为一个模型的结果是下一个模型的输入。 boosting 的思想是使用弱学习器来拟合数据。因为它很弱,所以无法正确拟合数据。这样一个学习者的弱点将被另一个弱学习者修复。如果仍然存在一些弱点,那么将使用另一个弱学习器来修复它们。链条不断延伸,直到最终从多个弱学习者中产生出一个强大的学习者。

接下来是解释梯度提升(gradient boosting)的工作原理。

Gradient Boosting (GB)

以下是基于一个简单示例的梯度提升的工作原理:
假设要建立一个回归模型,数据有一个输出,其中第一个样本的输出为15。它的描述如图10所示。我们的目标是建立一个回归模型,正确预测这样一个样本的输出。
Figure 10
集成学习算法梯度提升(gradient boosting)的直观看法_第9张图片
如图11所示,第一个弱模型预测第一个样本的输出为9而不是15。
Figure 11
集成学习算法梯度提升(gradient boosting)的直观看法_第10张图片
为了衡量预测中的损失量,要计算其残差。残差是期望输出和预测输出之间的差异。它是根据以下公式计算的:
desired – predicted1 = residual1
其中 predicted1 和 residual1 分别是第一个弱模型的预测输出和残差。
15 – 9 = 6
对于 residual1=6,我们可以创建第二个弱模型,其目标是预测输出等于第一个模型的残差(residual1)。
因此,第二个模型将修复第一个模型的弱点。根据下一个等式,两个模型的输出总和将等于所需输出:
desired = predicted1 + predicted2(residual1)
如果第二个弱模型能够正确预测residual1,则所需输出将等于所有弱模型的预测,如下所示:
desired = predicted1 + predicted2(residual1) = 9 + 6 = 15
但是,如果第二个弱模型未能正确预测 residual1 的值,例如只返回 3,那么第二个弱学习器也会有一个非零残差计算如下:
residual2 = predicted1 - predicted2 = 6 - 3 = 3
如图 12 所示。
Figure 12
集成学习算法梯度提升(gradient boosting)的直观看法_第11张图片
为了修复第二个弱模型的弱点,将创建第三个弱模型。它的目标是预测第二个弱模型的残差。因此它的目标是 3。因此我们样本的期望输出将等于所有弱模型的预测,如下所示:
desired = predicted1 + predicted2(residual1) + predicted3(residual2)
如果第三个弱模型预测为2,即无法预测第二个弱模型的残差,则该第三个模型的残差等于:
residual3 = predicted2 – predicted3 = 3 - 2 = 1
这在图 13 中进行了描述。
Figure 13
集成学习算法梯度提升(gradient boosting)的直观看法_第12张图片
同理得到第四个模型:
集成学习算法梯度提升(gradient boosting)的直观看法_第13张图片
这就是梯度提升算法的核心思想。使用上一个模型的残差作为下一个模型的目标。

梯度提升的总结

总而言之,梯度提升从一个用于预测的弱模型开始。这种模型的目标是问题的期望输出。在训练这样的模型之后,计算它的残差。如果残差不为零,则创建另一个弱模型来修复前一个模型的弱点。但是这种新模型的目标不是期望的输出,而是先前模型的残差。也就是说,如果给定样本的期望输出是 T,那么第一个模型的目标就是 T。第一个模型训练之后,会产生残差集R。要创建的新模型的目标将设置为R,而不是T。这是因为新模型填补了以前模型的空白。
梯度提升类似于由多个虚弱的人抬起一个沉重的金属,走过若干个楼梯。没有一个弱者能够举起所有楼梯的金属。每个人只能抬起它一步。第一个虚弱的人会抬起金属一步,然后就累了。另一个虚弱的人将金属再举一步,依此类推,直到将金属举起所有楼梯。

你可能感兴趣的:(机器学习,#,集成学习,算法,集成学习,boosting)