随机森林、GBDT、Xgboost

Posted

tags:

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

参考技术A GBDT是回归树,不是分类树。因为他是要算具体的值的。
GBDT的核心在于累加所有树的结果作为最终的结果。
关键点就是利用损失函数的负梯度去模拟残差,这样对于一般的损失函数,只需要求一阶导。
第m个模型会基于前m-1个,基于之前模型损失函数的负梯度方向,让实际值与预测值之间的差距越来越小。通过更新训练数据的y值让模型效果更好。

有个人年龄是30岁,用20岁去拟合,发现他的损失有10岁。再去用6岁去拟合剩下的损失,这时发现,他们的差距还有4岁。第三轮用三岁去拟合剩下的差距,这时候差距只有1岁了。如果迭代没有完就可以继续迭代。

GBDT会用树的(上一次的)残差(-1,1,-1,1)再去拟合一棵树。而随机森林是用原始的样本,有放回的抽样去构建决策树,构建5颗树之后,投票或者去平均值。

1.使用损失函数的二阶导,速度效果比GBDT好。
2.内部嵌入了正则化项结构,不容易过拟合
3.可以在特征粒度上并行化,GBDT是串行的

http://blog.itpub.net/31542119/viewspace-2199549/
所谓正则化就是对参数施加一定的控制,防止参数走向极端。这里的正则项,本质上是用来控制模型的复杂度。
常用的正则化就是L2正则,也就是所有参数的平方和。我们希望这个和尽可能小的同时,模型对训练数据有尽可能好的预测。
能使这个函数值最小的那组参数就是我们要找的最佳参数。这个obj包含的两项分别称为损失函数和正则项.
对于回归问题,我们常用的损失函数是MSE,对于分类问题,我们常用的损失函数是对数损失函数

xgboost就是一个监督模型,xgboost对应的模型是一堆CART树。
一堆树如何做预测?就是将每棵树的预测值加到一起作为最终的预测值,就是简单将各个树的预测分数相加。
xgboost为什么使用CART树而不是用普通的决策树呢?
对于分类问题,由于CART树的叶子节点对应的值是一个实际的分数,而非一个确定的类别,这将有利于实现高效的优化算法。
xgboost出名的原因一是准,二是快,之所以快,其中就有选用CART树的一份功劳。

以上是关于随机森林、GBDT、Xgboost的主要内容,如果未能解决你的问题,请参考以下文章

xgboost原理,怎么防止过拟合。随机森林,GBDT,Xgoost的区别,bagging和boosting

spark 随机森林 源码解析

spark 随机森林 源码解析

随机森林和GBDT进行比较

决策树随机森林GBDTXGBoost

GBDT和随机森林的区别