随机森林、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的主要内容,如果未能解决你的问题,请参考以下文章