首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

人工智能–GBDT算法

人工智能之GBDT算法

前言:人工智能机器学习有关算法内容,请参见公众号“科技优化生活”之前相关文章。人工智能之机器学习主要有三大类:1)分类;2)回归;3)聚类。今天我们重点探讨一下GBDT算法。^_^

GBDT梯度提升决策树也是集成学习Boosting家族的成员,但是却和传统的Adaboost[请参见人工智能(40)]有很大的不同。Adaboost是一种传统而重要的Boost算法,它利用前一轮迭代弱学习器的误差率来更新训练集的权重。GBDT也是迭代,使用了前向分布算法,且限定使用CART作为弱学习器,另外两者迭代思路也不同。

GBDT梯度提升决策树是GBM的一种具体实例,只不过这里的弱分类器是决策树。Friedman于1999年在其论文中最早提出GBDT。

GBDT算法概念:

GBDT(Gradient Boosting Decision Tree)算法,翻译成梯度提升决策树算法。GBDT重点首先是Gradient Boosting,其次才是Decision Tree决策树。

GBDT是GBM框架下使用较多的一种模型,在GBDT中,其基学习器是CART分类回归树,使用的是CART树中的回归树。GBDT中的树都是回归树,不是分类树。尽管GBDT调整后也可用于分类,但不代表GBDT的树是分类树。

理论上,GBM可以选择各种不同的学习算法作为基学习器。现实中,用得最多的基学习器是决策树。为什么梯度提升方法倾向于选择决策树(通常是CART树)作为基学习器呢?这与决策树算法自身的优点有很大的关系。我们知道,单独使用决策树算法时,容易出现过拟合问题。假如通过方法来抑制决策树的复杂性,降低单颗决策树的拟合能力,再通过梯度提升方法集成多个决策树,最终能很好地解决过拟合问题。由此可见,梯度提升方法和决策树算法可以取长补短,是一对完美搭档。

GBDT算法核心:

GBDT在迭代的每一步构建一个能够沿着梯度最陡的方向降低损失的学习器来弥补已有模型的不足。GBDT在函数空间中利用梯度下降法进行优化

在GBDT的迭代中,假设前一轮迭代得到的强学习器是ft-1(x)损失函数是L(y,ft-1(x))。本轮迭代的目标是找到一个CART回归树模型的弱学习器ht(x),让本轮的损失L(t,ft-1(x)+ht(x))最小。也就是说,本轮迭代找到决策树,要让样本的损失尽量变得更小

GBDT损失函数:

对于回归算法,常用损失函数有如下4种:

1)均方差,最常见的损失函数。

2)绝对损失,这个损失函数也很常见。

3)Huber损失,是均方差和绝对损失的折衷产物,对于远离中心的异常点,采用绝对损失,而中心附近的点采用均方差。这个界限一般用分位数点度量。

4)分位数损失,对应的是分位数回归的损失函数。

对于Huber损失和分位数损失,主要用于健壮回归,即减少异常点对损失函数的影响。

GBDT算法模型:

1)F定义为加法模型:

其中,x为输入样本,h为分类回归树,w是分类回归树的参数,是每棵树的权重。

2)通过最小化损失函数求解最优模型:

通过贪心法,迭代求局部最优解。

GBDT算法流程:

GBDT算法流程如下:

GBDT算法参数:

GBDT算法的超参数还是比较多的,应用过程中需要精心调参,并用交叉验证的方法选择最佳参数。

GBDT算法优点:

1)灵活处理各种类型的数据,包括连续值和离散值;

2)在相对少的调参时间情况下,预测的准确率也可以比较高;

3)抵御训练数据中的噪音,具有更好的健壮性;

4)使用一些健壮的损失函数,对异常值的鲁棒性非常强;

5)性能最好的机器学习算法之一;

6)适用面非常广。

GBDT算法缺点:

1)由于弱学习器之间存在依赖关系,难以并行训练数据;

2)缺乏平滑性;

3)在高维稀疏特征上表现一般。

GBDT算法应用:

GBDT算法可以用于回归模型,同样它也可以用于分类模型。GBDT算法现已被广泛应用于众多领域。

GBDT算法近年来被提及比较多的一个算法,有种观点认为GBDT是性能最好的机器学习算法,得益于该算法在各类数据挖掘以及机器学习比赛中卓越表现

结语:

GBDT梯度提升决策树算法是近年来被提及比较多的一个算法,这主要得益于其算法性能。该算法能够有效地抵御训练数据中的噪音,具有更好的健壮性。通常各类机器学习算法比赛的赢家们都非常青睐GBDT算法,由此可见该算法的实力不可小觑。GBDT算法现已被广泛应用于众多领域。GBDT算法在众多数据挖掘和机器学习竞赛中有着卓越表现。

------以往文章推荐------

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180506G01ZCV00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券