集成学习算法(Random Forest、adBoost、GBDT、XgBoost、lightboost)

集成学习算法(Random Forest、adBoost、GBDT、XgBoost、lightboost)

最近快速过了一遍集成学习的相关算法,在这里做一个小总结。

集成学习:

  • Bagging:并行式集成学习,注重降低方差;如Random Forest
  • Boost:串行式集成学习,注重降低偏差;adboost、GBDT、XgBoost、lightboost

Random Forest算法:

  • 属于Bagging集成学习,在上一篇文章中有介绍;下面介绍的都是Boost集成学习。

adboost算法:

  • adboost算法的原理在于理解两个权重:1.数据权重 2.各学习器权重
  • 数据权重:在前一个学习器学习时,会根据分类情况给予分类错误的样本更大的权重,在下一次学习时依据新的学习权重样本进行重新学习;
  • 学习器权重:基于每一个学习器分类效果给各个分类器给予各个学习器权重,当整个分类器的错误率达到阈值时,算法停止

GDBT算法:

  • GBDT = CART回归树 + boost提升树 + 梯度下降法 + shrinkage思想
  • CART(classification and regression tree) 回归树: CART是一个二叉树,当处理分类任务时,采用的是基尼指数作为选择特征的指标;当处理回归任务时,采用的是损失函数(一般选择平方损失函数)作为目标函数。GBDT算法里采用的全都是CART 回归树。
  • boost提升树: 提升树的思想是不断增加树去学习拟合前面所有树学习的的预测值与真实值的误差。如:要一个人的年龄为20岁,第一棵树估计预测值为10岁,误差是10岁,接着增加一棵树去估计这个误差10岁,假如增加的这棵树预测值为6岁,累加所有树的预测值与真实值作比较误差为4岁,再继续增加一棵树去拟合剩下的误差直至误差达到预先设置的阈值,则算法停止
  • 梯度下降法: 在CART回归树里,损失函数取得一般是平方损失,此时根据boost提升树的思想,第N棵树要拟合的就是残差(真实值 - 预测值);而当损失函数不取平方损失时,此时的残差难以计算,而GBDT算法的核心就在于利用目标损失函数的负梯度方向去拟合残差值。
  • shrinkage思想: 小步多次的学习效果要比大步少次的学习效果好,能够防止过拟合。也即在算法的体现上是选择采用多个学习器,每个学习器都乘上较小的学习率,以防止过拟合。
  • SGBT(stochastic gradient boost tree)算法: 在GBDT算法的基础上增加了随机子采样,每次学习时不放入所有的数据,只是随机选取一部分数据进行训练

XgBoost算法:

  • XgBoost算法是GBDT算法的改进版,改进在以下几个方面:
  • 1.目标函数的定义不同:XgBoost算法相较于GBDT算法在目标函数上增加了正则项以防止过拟合
  • 2.求解方式不同:XgBoost求解目标函数最优化过程采用泰勒展开式计算其损失函数,相较于GBDT算法梯度下降求解只使用了一阶导数,XgBoost算法保留使用了一阶导数和二阶导数,求解效果更精确
  • 3.基学习器可选择其他,如逻辑回归等
  • 4.在选择特征值时可以并行
  • 5.可以进行列采样
  • XgBoost算法停止条件:
  • 1.每个基学习器进行学习时,当引入的增益小于设定阈值时,忽略这个分裂
  • 2.设定树的最大深度,防止过拟合
  • 3.设定样本的权重:也即不能使得叶子结点的样本数不平衡

lightboost算法

- 为了解决XgBoost算法在处理海量数据时速度慢,消耗内存大的情况,引入lightboost算法,让GBDT可以更好更快地用于工业实践。

  • 为了避免上述XGBoost的缺陷,并且能够在不损害准确率的条件下加快GBDT模型的训练速度,lightGBM在传统的GBDT算法上进行了如下优化:

  • 1.基于Histogram的决策树算法。

  • 2.单边梯度采样 Gradient-based One-Side Sampling(GOSS):使用GOSS可以减少大量只具有小梯度的数据实例,这样在计算信息增益的时候只利用剩下的具有高梯度的数据就可以了,相比XGBoost遍历所有特征值节省了不少时间和空间上的开销。

  • 3.互斥特征捆绑 Exclusive Feature Bundling(EFB):使用EFB可以将许多互斥的特征绑定为一个特征,这样达到了降维的目的。

  • 4.带深度限制的Leaf-wise的叶子生长策略:大多数GBDT工具使用低效的按层生长 (level-wise) 的决策树生长策略,因为它不加区分的对待同一层的叶子,带来了很多没必要的开销。实际上很多叶子的分裂增益较低,没必要进行搜索和分裂。LightGBM使用了带有深度限制的按叶子生长(leaf-wise)
    算法。

  • 5.直接支持类别特征(Categorical Feature)

  • 6.支持高效并行

  • 7.Cache命中率优化

  • lightboost算法参考:https://blog.csdn.net/update7/article/details/110563338?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161822348716780357221633%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161822348716780357221633&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~hot_rank-5-110563338.pc_search_result_hbase_insert&utm_term=lightboost

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值