随机森林与GDBT

【Ensemble集成思想】

1.Boosting:将弱学习器提升为强学习器,从而提高预测精度
典型如:AdaBoost / GBDT

2.Bagging:自助采样,生成众多并行分类器,通过投票决定最终结果
典型如:Random Forest随机森林

本节主要介绍决策树的两种Ensemble方法:随机森林和GBDT

【随机森林】

1.使用了Bagging思想
多棵决策树解决了单棵泛化能力差的缺点

2.随机体现在:
随机选择样本
随机选择特征

每一棵树选取固定数量的样本集,固定数量的特征集
即 总样本集和总特征集的子集构建的决策树
注意 有放回抽取

3.集成学习
投票决定

【GBDT梯度上升决策树】

1.GBDT属于回归树而非分类树,思想就是不断迭代拟合前一轮的残差

2.核心在于累加所有树的结果作为最后的结果

3.利用损失函数的负梯度代替/模拟残差,对于一般的损失函数,一阶即可
Xgboost使用二阶

举个例子:
GBDT例子
首先从左图开始,
第一步选择一个特征——购物金额,作为分类标准
第二步,分类之后可以得到两个分支,对每个分支求一个平均值
第三步,每个样本根据这个值得到一个残差{ A: -1; B: 1; C:-1; D:1 }
之后来到右图,
右边就是用第一棵树残差{-1,-1,1,1}构建的一棵树
平均值为0其实就不需要计算了…
这里A/C的平均值为-1,B/D平均值为1

几种Boosting的对比

1.Adaboost:提高分类错误样本的权重,降低正确分类样本的权重
Boosting Tree:Adaboost的一般方法

2.GBDT:利用损失函数的负梯度去模拟/代替残差
对于一般的损失函数,只要一阶导数即可

残差为(真实-预测), 但真实并不一定是最优的解,可能会有一些扰动。
只是经验风险最小化的话非常容易过拟合,所以加正则项,减少过拟合。
所以我们需要计算损失函数的梯度,而不能直接使用分模型来拟合残差。

使用负梯度代替残差,可以拟合任何的损失函数。
拟合残差只是考虑到损失函数为平方损失的特殊情况,
负梯度是更加广义上的拟合项,更具普适性。

3.XGBoost:对代价函数用到了二阶泰勒展开
同时用到了一阶函数和二阶函数
因此➡️XGBoost函数可以自定义,但是要求一阶和二阶可导

全部评论

相关推荐

风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
点赞 评论 收藏
分享
06-19 12:33
安徽大学 Java
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务