从bgt 到gbdt 再到xgboost

1、boosting decision tree(提升树模型)

提升树模型其实是采用了加法模型的前向分布式算法,以决策树为基函数的提升方法称为提升树(boosting tree)

提升树模型

f_m = \sum_{i=1}^m T(x_i,\Theta_m)

其中$T(x_i,\Theta_m)$表示第$i$个决策树,$\Theta_m$为决策树的参数。


回归问题采用以下前向分布式算法

f_0 = 0
f_m = f_{m-1}+T(x_i,\Theta_m)

在前向分布式算法中,如果已经知道了$f_{m-1}$,那么就可以根据损失函数最小化求解出第$m$个树的参数$\Theta_{m}$

\Theta_m = arg min_{\Theta_{m}} (L(y,f_{m-1}(x_i)+T(x_i,\Theta_{m})))

通过求解所有的$i$个树模型即可求得提升树。


如果提升树的损失函数为平方误差时,即损失函数的表达式为:$L(y,f(x)) = (y-f(x))^2$

那么提升树的损失函数跟第$i$个树的关系是:

L(y,f_{m-1}(x)+T(x,\Theta_{m})) = [y-f_{m-1}(x)-T(x,\Theta_{m})]^2
=(r_{i}-T(x,\Theta_{m}))^2

其中$r_{i}=y-f_{m-1}(x)$为当前数据的残差,所以对于回归问题的提升树算法来说,只需要简单的你和当前模型的残差。

2、gradient boosting decision tree(梯度提升树模型)

提升树利用加法模型与前向分布式算法实现学习器的游湖过程,当损失函数是平方损失函数和指数损失函数时,每一步优化都是很简单的,但是对于一般损失函数而言,往往每一步优化都不是那么容易,针对这一问题,大牛(Freidman)提出了梯度提升算法,这是利用最速下降法的近似方法,其关键就是利用损失函数的负梯度在当前模型的值作为回归问题提升树算法中的残差近似值,这样拟合一个回归树。

梯度提升树相对于回归问题提升树最大的区别便是:

对于回归问题梯度提升树:

r_{mi} = y-f_{m-1}(x)

而对于梯度提升树:残差用下述方程替代

r_{mi} = \frac{\partial L(y_i,f(x_i))}{\partial f(x_i)}

gbdt算法可以总结如下:

输入:训练数据集$T={(x_1,y_1),(x_2,y_2),...,(x_N,y_N)}$;损失函数$L(y,f(x_i))$

输出:回归树$\hat f(x)$

1.初始化

f_{0} = arg min(\sum_{1}^N L(y_i,c))

2.对于$m=1,2,...,M$

(a)对于$i=1,2,...,N$,计算

r_{mi} = \frac{\partial L(y_i,f(x_i))}{\partial f(x_i)}

(b)对于$r_{mi}$拟合一个回归树,得到第m颗树的叶节点区域$R_{mj}$$j=1,2,...,J$

(c)对于$j=1,2,..J$,计算

c_{mj} = arg min_{c} \sum_{x_i \in R_{mj}} L(y_i,f_{m-1}(x_i)+c)

(d)更新$f_m(x) = f_{m-1}+\sum_{j=1}^J c_{mj}I(x \in R_{mj})$

(3)得到回归树:

\hat f(x) = \sum_{m=1}^M \sum_{j=1}^J c_{mj}I(x \in R_{mj})

3、xgboost

xgboost和xgboost有很大的相似点。我将在下面介绍xgboost如何构建树的模型

xgboost和gbdt最大的不同点在于目标函数的定义,xgboost的目标如下所示:

L(y,f_m(x)) = \sum_{i=1}^N l(y_i,f_{m-1}(x_i)+f_m(x_i))+\Omega(f_m(x_i))+constant

首先xgboost的目标函数是三项组成,分别是自定义损失函数,正则项,以及一个常数项。
xgboost实现的过程中是用泰勒展开公示求解原来的目标函数
泰勒二阶展开如下所示:

f(x+\Delta x) \approx f(x)+f^{'}(x)\Delta x + \frac{1}{2}f^{''}(x)\Delta x^2

因此损失函数的二阶展开式可以表示成如下形式:

L(y,f_m(x)) = \sum_{i=1}^N \left(l(y_i,f_{m-1}(x_i))+g_i f_m(x_i)+h_i f_m^2(x)\right) + \Omega(f_m(x))+constant

其中

g_i = \partial_{f_{m-1}(x)} l(y_i,f_{m-1}(x_i)) 
h_i = \partial_{f_{m-1}(x)}^2 l(y_i,f_{m-1}(x))

分别表示$l(y_i,f_{m-1}(x_i)) $的一阶导和二阶导

$\Omega(f_m(x))$表示正则项,以及树的复杂度,用下述公示来表示:

\Omega(f_m(x)) = \gamma T+\frac{1}{2}\lambda  f_m^2(x)

因此上述的loss可以表示为如下形式:

L(y,f_m(x)) =  \sum_{i=1}^N \left(l(y_i,f_{m-1}(x_i))+g_i f_m(x_i)+h_i f_m^2(x)\right) + \gamma T+\frac{1}{2}\lambda  f_m^2(x)+constant

最终可以化简为:

L(y,f_m(x)) = \sum_{i=1}^N \left(l(y_i,f_{m-1}(x_i))+g_i f_m(x_i)+h_i f_m^2(x)\right) + \gamma T+\frac{1}{2}\lambda f_m^2(x)+constant
\frac {\partial L(y,f_m(x))}{w_{mj}} = \sum_{i \in I_j}g_i+ sum_{i \in I_j}hi f_m(x) + \lambda f_m{x}

当倒数为0时可以求得:

f_m(x) = \frac{\sum_{i \in I_j}g_i}{\sum_{i \in I_j}hi+\lambda}

上述的$f_m(x)$即为每轮新建的函数表达式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • 机器学习是做NLP和计算机视觉这类应用算法的基础,虽然现在深度学习模型大行其道,但是懂一些传统算法的原理和它们之间...
    在河之简阅读 20,500评论 4 65
  • ML & DM 集成学习 模型融合 ensemble http://wakemeup.space/?p=109 E...
    章鱼哥呀阅读 1,803评论 0 6
  • 这次作业,选择简书作为分析对象。 一、产品简述 简书最早是一款工具型产品,定位是一款写作工具,为想要写作的人提供良...
    百合学姐的成长小窝阅读 467评论 0 3
  • 躺在软塌看了一天的书,乏困了,就直接睡了过去。半个多小时做了一个漫长的梦,惊醒后又继续翻阅,再不小心又睡过去,反反...
    轻舟与孤岛阅读 166评论 0 0
  • 刚刚过完二十六岁的生日,我试着过得尽量低调,能不惊扰的尽量不惊扰,试着去过一个让自己舒服的生日,虽然这样写...
    小六六的秘密阅读 297评论 10 1