机器学习开放课程:十、梯度提升
作者头像
  • 覃倩莹
  • 2018-11-06 15:20:16 4

概览

本文将介绍一种广受欢迎且实用的机器学习算法——梯度提升。我们将从梯度提升的历史、算法原理、损失函数以及其在实际应用中的表现等方面进行探讨。

导言和梯度提升的历史

梯度提升是一种在机器学习领域广为人知的技术。许多数据科学家的工具箱中都包含这一技术,因为它在各种问题上都能取得良好的效果。XGBoost是梯度提升算法中较为常见的实现,因其卓越的性能而受到广泛欢迎。此外,梯度提升还被广泛应用于推荐系统中。

梯度提升的概念源于一个问题:能否通过多个较弱的模型组合成一个强大的模型?这里的“弱模型”指的是那些准确性较低的模型,但至少要比随机猜测好一些。研究表明,这一问题在数学上是可以实现的,但实际开发出有效的算法(如AdaBoost)却需要多年的时间。AdaBoost通过重新加权输入数据来创建简单模型的线性组合,再通过后续的模型来修正之前的错误预测,通常是通过决策树来实现。

AdaBoost虽然效果不错,但其成功的原因却难以解释清楚。有人认为AdaBoost是一个全能的算法,但也有人担心它可能会导致过拟合,尤其是在数据中存在强离群值的情况下。因此,AdaBoost的表现并不稳定。为了改善这一状况,一些斯坦福大学的统计学家开始研究这一算法,提出了梯度提升(GBM)。

GBM的发展历程始于1999年,当时Jerome Friedman推广了梯度提升算法。GBM的许多实现版本出现在不同的平台和算法中,如随机GBM、GBDT(梯度提升决策树)、GBRT(梯度提升回归树)等。随着时间的推移,梯度提升逐渐被广泛应用,尤其是在搜索排序等领域。AltaVista、Yahoo、Yandex和Bing等公司都采用了这一技术。

GBM算法

梯度提升是一种迭代的监督学习方法,通过不断优化损失函数来逐步逼近目标函数。我们将在一个通用的监督学习框架下求解函数逼近问题。假设我们有一组特征X和目标变量y,我们需要找到一个函数f(x)来近似y的依赖关系。我们通过最小化损失函数L(y, f)来确定哪个函数逼近更好:

[ text{损失函数} = L(y, f) ]

为了简化问题,我们通常会选择一个可微的损失函数,并在每次迭代中更新模型参数。梯度下降是实现这一目标的一种简单有效的方法。我们定义损失函数在当前逼近上的梯度,然后在每次迭代中减去梯度。

具体来说,GBM算法的过程如下: 1. 初始化模型,通常使用一个常数作为初始逼近。 2. 在每次迭代中,计算伪残差。 3. 使用基础算法(如决策树)拟合这些伪残差。 4. 根据拟合结果更新当前逼近。 5. 重复上述步骤,直到达到预定的迭代次数。

Friedman的经典GBM算法

Friedman提出的经典GBM算法是一个监督学习算法,包含以下几个关键要素: - 数据集{(xi, yi)} - 迭代次数M - 损失函数L(y, f) - 基础算法对应的函数家族h(x, θ)及其训练过程 - h(x, θ)的其他超参数

具体步骤如下: 1. 初始化模型为一个常数γ。 2. 在每次迭代中,计算伪残差。 3. 使用基础算法拟合伪残差。 4. 更新当前逼近。 5. 重复上述步骤,直到达到预定的迭代次数。

梯度提升的应用

GBM算法在许多实际应用中表现出色。例如,在Kaggle竞赛中,GBM算法经常被用来解决各种机器学习问题。Kaggle为研究人员提供了一个展示新算法的平台,使得GBM算法得到了广泛的应用和认可。

损失函数

选择合适的损失函数对于梯度提升算法的成功至关重要。不同的损失函数适用于不同的问题类型。常见的损失函数包括L2损失、L1损失和Huber损失。这些损失函数的选择直接影响到模型的性能和鲁棒性。

结语

本文介绍了梯度提升算法的基本原理和应用。GBM是一种强大且灵活的算法,适用于多种问题。尽管在实际应用中需要注意正则化和超参数的选择,但梯度提升仍然是许多机器学习任务中的首选算法之一。希望本文能够帮助读者更好地理解和应用梯度提升算法。

    本文来源:图灵汇
责任编辑: : 覃倩莹
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
梯度机器提升课程开放学习
    下一篇