GBDT

来源:互联网 发布:80端口申请书 编辑:程序博客网 时间:2024/04/29 19:22

参考http://www.cnblogs.com/LeftNotEasy/archive/2011/03/07/random-forest-and-gbdt.html

关于决策树DT模型,具体参考李航统计学习方法。
决策树是将空间利用超平面进行划分的一种方法,每次分割都将当前空间一分为二。
决策树的一个优势在于解释性强,模型容易展示。
单颗决策树的缺陷在于容易过拟合,虽然剪枝可以缓解这种情况。
关于模型组合,bagging和boosting。与决策树联系很紧密,随机森林和GBDT都是其中的延伸。

随机森林采用随机的方式建立一个森林,森林中由很多决策树组成。森林中的每棵决策树之间没有关联。建立好森林之后,判断一个新的输入样本(分类),让森林中每棵树都判断一下分类情况,根据哪一类被选择的次数最多,就预测为哪一类。

在建立每棵决策树过程中,需要注意采样和完全分裂。随机森林对输入的数据进行行列采样。行采样采用又放回方式,采样得到的样本集合中可能有重复样本。这样在训练时,每棵树输入样本都不是全部样本,防止overfitting。列采样是从M个feature中选择m个。采样之后的数据使用完全分裂的方式建立决策树,因此决策树的叶子节点要么无法分裂,要么所有样本都是同一个类。这种方式得到的森林中每棵树都很弱,但是组合起来效果好。

GBDT也叫做MART,GBRT等,可用作分类,回归,排序的算法。包含两部分Gradient boost 和 decision Tree. 用决策树作为基学习器,构造一组弱学习器,并将其结果累加作为最终输出。具体实现包括xgboost和lightGBM.
传统boost在算法开始时,为每个样本赋予一个相同的权重值。在每一步得到的模型中,对分错的点更加关注,赋予更高权重,通过迭代得到若干个分类器,然后通过加权或者投票的方式组合模型,得到最终模型。
Gradient Boost和传统boost区别在于,每次计算是为了减少上一次的残差,为了消除残差,在残差减少的梯度方向上建立新模型。因此Gradient Boost中每个新模型是为了使之前模型的残差向梯度方向减少。
对于多分类Logistic问题。如果一个分类问题符合几何分布,那么就可以用Logistic变换来进行之后的运算。
对于一个样本x,他可能的K个分类的估值分别是F1(k)……Fk(x),Logistic变换如下,结果属于k类的概率pk(x),
这里写图片描述
损失函数为
这里写图片描述
当x属于k类别时,yk=1,否则yk=0.
计算损失函数梯度有
这里写图片描述
得到梯度之后,减小梯度。
算法流程0-7
这里写图片描述
0-选定初始值
1-M次迭代建立M个决策树
2-对Fx进行Logistic变换。
3-对k个分类进行操作
4-求残差减少的梯度方向
5-根据每个样本点x和残差减少的梯度方向。得到J个叶子节点的决策树。
6-建立好决策树后,利用公式得到每个叶子节点的增益(预测使用)
7-合并决策树,作为新模型。
GBDT和CART对比如下
GBDT仅回归树,且多颗,叶子是权重,离散值必须onehot,梯度迭代,表达能力强,相对复杂,以梯度为基础。
CART即可分类也可回归,单颗树(RF多颗),叶子是类别或者预估值。能处理离散值,ginigain或者最小化均方差,表达能力弱,相对简单,以信息论为基础。

0 0
原创粉丝点击