05 集成学习 - Boosting - GBDT初探

04 集成学习 - Boosting - AdaBoost算法构建

回顾:
1、Bagging-随机森林是一个并行模型,Boosting是一个串行模型,所以Boosting模型运算效率会低一些。
2、Bagging算法解决的是模型过拟合问题,Boosting模型解决的是欠拟合问题。

十一、梯度提升迭代决策树 - GBDT

GBDT(Gradient Boosting Decison Tree 梯度提升决策树)
别名:GBT\GTB\GBRT\MART

GBDT也是Boosting算法的一种,但和AdaBoost算法不同。
● AdaBoost算法是利用前一轮的弱学习器的误差来更新样本权重值,然后一轮轮得迭代。
● GBDT也是迭代,但是GBDT要求弱学习器必须是CART模型,而且GBDT在模型训练的时候,是要求模型预测的样本损失尽可能的小。

● 作为一个提升模型,ft-1(x) 是t-1步的强分类器。t-1步的强分类器和真实值之间存在一个损失函数,即用一个损失函数衡量该模型的优劣。L(y,ft-1(x)) 代表这样的一个损失函数。
● 提升算法的思想是:下一轮迭代中再训练一个弱学习器ht(x) ;弱学习器+强学习器形成新的强学习器: ft(x) = ft-1(x)+ht(x)
● 第t步生成模型的损失函数:L(y,ft(x)) <=> L(y,ft-1(x)+ht(x) )

注意:只有当上一轮的损失函数达到最小后,上一轮的强模型才算训练完成。在这个基础上才能开始新一轮的迭代。所以对于第t步的模型来说,之前t-1步的模型都已经是定值。

十二、GBDT的直观理解

案例1

GDBT的直观理解

分析:现在预测样本的年龄。
1、一个样本真实值为30岁,放进决策树模型进行预测 x→y,发现预测结果 y^ 是20岁。预测值和真实值相差很大,所以现在的结果是欠拟合。现在想要改变欠拟合的现状。这里计算的残差 = 真实值-预测值 = y-y^ = 30-20 = 10。

2、对计算的残差做预测 x→(y-y^) ,发现预测结果( y-y^ )^是6岁。预测值 令y*=( y-y^ )^=6 和上一步的计算残差 y-y^=10 依然存在相对较大的偏差。计算这一步的计算残差 = 真实值-预测值 = (y-y^) - ( y-y^ )^ = y-y^-y* = 10-6 = 4

3、对计算的残差做预测 x→y-y^-y*,令 y** = (y - y^ - y*)^ =3和上一步的计算残差 y-y^-y* = 4 依然存在一点的偏差,计算这一步的计算残差 = 真实值-预测值 y-y^- y*-y**=1;

4、对计算的残差做预测 x→ y-y^- y*-y** 。这次预测值 = 真实值 ,即 y-y^- y*-y** = y*** = 1;

5、y*** =1y** = 3y*=6y^=20;累加这些值:1+3+6+20 = 30 = 真实值y。即图中红色的结果。

以上1~5的步骤就是GBDT的拟合过程。

思考: 结合上面的五个步骤,思考GBDT在拟合一种什么样的关系?
● 将每次预测后得到的计算残差作为新的预测目标,通过相同的样本X预测这个新目标,得到一个新的基学习器。
● 直到预测结果准确为止,或偏差趋向于0。
● 累加所有基学习器的预测结果,就是一步步消除误差的过程。最后得到的结果肯定等于真实值。

案例2

从决策树的角度来看GBDT是如何解决欠拟合问题的。

当给定步长的时候,给定一个步长step,在构建下一棵树的时候使用step*残差值作为输入值,这种方式可以减少过拟合的发生。

决策树-GBDT

分析: 有A、B、C、D四个人,分别对应3个属性:年龄、收入、上网时长。我们希望根据收入上网时长来预测当前这个人的年龄是多少。

A:年龄 14,收入 500,上网时间 0.5;
B:年龄 16,收入 700,上网时间 1,2;
C:年龄 24,收入 1800,上网时间 0.3;
D:年龄 26,收入 3000,上网时间 1.5;

预测步骤:
1、先看左图,左图构建的是一棵决策回归树,预测的年龄是一个连续值。每个叶子节点里放的都是目标-年龄;(一开始根节点上的20表示当前节点对年龄的预测是20岁左右,这个我们不关心。)

2、此时决策树根据收入做分支,收入小于1k的预测是15岁,收入大于等于1k的预测是25岁。

3、计算实际值和样本值之间的差,得: (A、B、C、D) 的残差 = (14-15,16-15,24-25,26-25)=(-1,1,-1,1);


PS: 为什么挑选收入作为第一个分支?
● 收入做分支时,左节点的残差的平方和(方差) = (14-15)2 +(16-15)2 = 2
如果根据上网>1和上网<1的分类结果要好:当上网>1时,年龄分别为26,16,预测值=(26+16)/2 = 42/2=21;
● 上网时间做分支时,左节点的残差的平方和(方差) = (26-21)2+(16-21)2 = 25+25=50;
所以从方差上看,选择收入作为第一个分支效果更好。


4、 将(A、B、C、D) 的残差 作为下一个模型的预测值。(A、B、C、D) 的残差 = (-1,1,-1,1)
再看右图,右图根据上网时间做分支。
A:年龄 14,收入 500,上网时间 0.5;
B:年龄 16,收入 700,上网时间 1,2;
C:年龄 24,收入 1800,上网时间 0.3;
D:年龄 26,收入 3000,上网时间 1.5;
上网<1h 的是A、C ;
上网>1h 的是B、D;
所以右图根据该属性进行划分,最终预测得到的残差为0。

5、根据模型来预测结果:
回顾GBDT的公式:f2(x) = f1(x) + h2(x) = h1(x) + h2(x) ;
当A(收入=500,上网时长=0.5) 时,f2(A) = h1(A) + h2(A) =15 -1=14;
在第一课决策树中预测的结果是15,存在一定的误差。
然后在第二棵决策树预测的结果是-1,即误差。
最后两棵树的结果相加消除了误差。

两个弱学习器的相加,变成了强学习器

决策树-GBDT

最后理解一下这句话的含义:
当给定步长的时候,给定一个步长step,在构建下一棵树的时候使用step*残差值作为输入值,这种方式可以减少过拟合的发生。

最终强学习器 ft(x) = step × ∑ ht(x);
0<step<1 时,对应每次迭代的基模型都会在原有的基础上更小一点。变得小意味着我们需要更多的模型来达到真实的状态。模型更多意味着过拟合
step>1 时,意味着我们需要比原来更少的模型就能达到预测的效果。意味着可以减少过拟合的情况。

十三、GBDT和AdaBoost的区别

AdaBoost变X: 每次改变样本数据集中的X值,预测错的加大权重,预测对的减少权重。最后再计算每次得到的基模型的权值。

GBDT变Y:本身也会改变原有数据集的数据,但他不改变X,每一个基模型输入的数值都不发生变化。但是的值会发送变化,每一步的Y都是上一个基模型的真实值和预测值之间的残差

06 集成学习 - Boosting - GBDT算法原理、总结

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