机器学习算法篇—GBDT初探

为什么要深入理解GBDT,因为它的特征自动组合能力很强,运算效率很高,下面我们来看一下GBDT的基本原理。

准备知识:

回归树:决策树的一种,用于预测实数值,可以进行加减运算 详细可参考:https://xiaozhuanlan.com/topic/5287096413

举例说明:

看一张非常经典的图,目的是预测一个人是否喜欢玩电脑游戏:

tree1:

年龄大于15岁 减1分

年龄小于15岁,男性加2分,女性加0.1分

tree2:

每天用电脑加0.9分,不用的减0.9分

规定阈值是2

输入一个小男孩,tree1得分2,tree2得分0.9,总分是2.9分,喜欢

输入一个老人,tree1得分-1,tree2得分-0.9,总分是-1.9分,不喜欢

通过这个例子大家可以看出GBDT是用加权求和的方法,但是细心的同学可能会有疑问“如果单颗树的权值过大,怎么解决过拟合问题?”这个问题非常好,在传统决策树算法是会出现这个问题,但是GBDT通过各种方法,抑制决策树的复杂性,降低单颗决策树的拟合能力,再通过梯度提升的方法集成多个决策树,最终能够很好的解决过拟合的问题。

抑制单颗决策树的复杂度的方法:

限制树的最大深度

限制叶子节点的最少样本数量

限制节点分裂时的最少样本数量

吸收 bagging 的思想对训练样本采样,在学习单颗决策树时只使用一部分训练样本

借鉴随机森林的思路在学习单颗决策树时只采样一部分特征,在目标函数中添加正则项惩罚复杂的树结。

特别注意的一点是:

GBDT 算法的每一步在生成决策树时只需要拟合前面的模型的残差,基本做法就是:先学习一个回归树,然后“目标值-预测值”求此时的残差,把这个残差作为目标值,学习下一个回归树,继续求残差……直到建立的回归树的数目达到一定要求或者残差能够容忍,停止学习。

残差是预测值和目标值的差值,比如标准答案是20分,我们第一次得15分,则差距是5分;第二次把5分为目标再用3分去拟合,则差距是2分;第三次用2分去拟合,差距就变成0分了,最后得到就是15+3+2=20,总结就是每次学习都把残差作为下一轮学习的目标 。

应用:

LR + GBDT的组合,最早是facebook提出的,优点是:

GBDT发掘有效的特征组合

把有效的特征组合引入到LR(逻辑回归)模型中

LR的缺点就是对特征组合的捕获不是很好,而GBDT正好弥补了这个缺点,目前非常广泛的应用在各大互联网公司,虽然说目前深度学习很火爆,但是实际互联网公司中绝大多数还都在用LR,GBDT,LR+GBDT,FM,FM+GBDT这些传统的机器学习模型,包括BAT大厂公司中也是。

找工作:

给目前正在找或者想转行到机器学习的同学一个建议:深入理解 LR(逻辑回归),GBDT,LR+GBDT,FM,FM+GBDT这些模型,注意啊!是深入理解,并不是能看明白,看懂,这绝对不是深入理解,是有很大差别的。

深入理解是指能够自己手写推导出这些模型,知道每一步推导的理论依据和每一步背后的数学定理,并且针对每一步都能详细的解释。

目前的状况就是一大半找机器学习工作的人,都是从其他方向转过来了,基本都没有工作经验,而面试官也知道这个情况,之前听新浪微博张老师分享的课程就提到过,60%来面试的都是别的方向转过来的,但是没关系,面试看重的是你对算法的理解程度,这个才是核心竞争力。因为小公司的机器学习的工作经验,说实话优势真不明显,数据不是一个量级的,调优模型选择都不一样,建议把时间都花在深入理解算法模型上,在kaggle上找个比赛认真的参加一下,把排名拉上去,能排到TOP20左右,收获一定特别大,简历上就有东西可写了。

当面试的时候呢,带几张白纸带个笔,当着面试官把GBDT的推导过程写一遍,然后再讲一下kaggle比赛能排到TOP20的优化细节和参数模型的调整以及遇到的困难问题,这样基本问题不大了。但是这仅限于初级的机器学习岗位,中级高级不适用。