XGBoost 与 Boosted Tree

Posted oilover

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XGBoost 与 Boosted Tree相关的知识,希望对你有一定的参考价值。

作者:陈天奇,毕业于上海交通大学ACM班,现就读于华盛顿大学,从事大规模机器学习研究。

注解:truth4sex 

编者按:本文是对开源xgboost库理论层面的介绍,在陈天奇原文《梯度提升法和Boosted Tree》的基础上,做了如下注解:1)章节划分;2)注解和参考链接(以蓝色红色字体标注)。备注:图片可点击查看清晰版。

1. 前言
应 @龙星镖局  兄邀请写这篇文章。作为一个非常有效的机器学习方法,Boosted Tree是数据挖掘和机器学习中最常用的算法之一。因为它效果好,对于输入要求不敏感,往往是从统计学家到数据科学家必备的工具之一,它同时也是kaggle比赛冠军选手最常用的工具。最后,因为它的效果好,计算复杂度不高,也在工业界中有大量的应用。

2. Boosted Tree的若干同义词
说到这里可能有人会问,为什么我没有听过这个名字。这是因为Boosted Tree有各种马甲,比如GBDT, GBRT (gradient boosted regression tree),MART 1 1,LambdaMART也是一种boosted tree的变种。网上有很多介绍Boosted tree的资料,不过大部分都是基于Friedman的最早一篇文章Greedy Function Approximation: A Gradient Boosting Machine的翻译。个人觉得这不是最好最一般地介绍boosted tree的方式。而网上除了这个角度之外的介绍并不多。这篇文章是我个人对于boosted tree和gradient boosting 类算法的总结,其中很多材料来自于我TA UW机器学习时的一份讲义 2 2

3. 有监督学习算法的逻辑组成
要讲boosted tree,要先从有监督学习讲起。在有监督学习里面有几个逻辑上的重要组成部件 3 3,初略地分可以分为:模型,参数 和 目标函数。

i. 模型和参数
模型指给定输入 xi xi如何去预测 输出  yi yi。我们比较常见的模型如线性模型(包括线性回归和logistic regression)采用了线性叠加的方式进行预测 y^i=jwjxij y^i=∑jwjxij 。其实这里的预测 y y可以有不同的解释,比如我们可以用它来作为回归目标的输出,或者进行sigmoid 变换得到概率,或者作为排序的指标等。而一个线性模型根据 y y的解释不同(以及设计对应的目标函数)用到回归,分类或排序等场景。参数指我们需要学习的东西,在线性模型中,参数指我们的线性系数 w w

ii. 目标函数:损失 + 正则
模型和参数本身指定了给定输入我们如何做预测,但是没有告诉我们如何去寻找一个比较好的参数,这个时候就需要目标函数登场了。一般的目标函数包含下面两项

常见的误差函数有 L=nil(yi,y^i) L=∑inl(yi,y^i) 比如平方误差  l(yi,y^i)=(yiy^i)2 l(yi,y^i)=(yi−y^i)2 ,logistic误差函数( l(yi,y^XGBoost 与 Boosted Tree

XGBoost 与 Boosted Tree

机器学习技法(11)--Gradient Boosted Decision Tree

Apache Spark Gradient Boosted Tree 训练运行时性能缓慢

译提升树算法的介绍(Introduction to Boosted Trees)

再谈XGBoost原理