《百面机器学习》 --集成学习笔记

发现要提高自己总结能力,尽量抽出时间写高质量的博客记录自己的学习。提高自己效率!!!

1、集成学习分为几种?异同?

1.1 Boosting
  Boosting方法训练基分类器采用串行的方式,各个基分类器有依赖。
  基本思想(迭代时学习):将基分类器层层叠加,每一层在训练时候,对前一层基分类器分错的样本给更高的权重。测试时,根据各层分类器结果加权得到最终结果。
  跟人类学习很像,对犯了的错误印象深刻,第二次学习会特别关注
1.2 Bagging
  Bagging与Boosting串行训练不同,Bagging在训练过程各基分类器之间无强依赖,可以进行并行训练。为了让基分类器互相独立,将训练集划分为若干子集来训练,最后投票决定。分类就多数服从少数,回归一般是取平均。
1.3 差异
  从消除基分类器的偏差和方差角度来理解。Boosting是通过聚焦基分类器的分错样本减少集成分类器的偏差。Bagging则是采用分而治之的策略,通过对训练样本进行多次采样,训练多个不同的模型,然后做综合减小集成分类器的方差。
Bias:描述的是预测值与真实值之间的差距。
Variance:描述的是预测值的变化范围,离散程度,也就是离其真实值的距离。

在这里插入图片描述

2、为什么说Bagging降低方差,Boosting降低偏差

  从随机变量的角度看,随机变量完全独立,相关性为0,n个随机变量均值的方差为原来1/n。从模型的角度Bagging通过训练集的重采样能够带来弱分类器之间一定的独立性,从而降低Bagging后模型的方差。
  Boosting训练好一个弱分类器后,我们需要计算弱分类器的错误或残差,作为下一个分类器的输入。在这个过程不断减小损失函数,来使模型不断逼近”靶心“,使模型偏差不断降低。但是并不会降低方差,因为各个弱分类器是强相关的,缺乏独立性,不会有降低方差的作用。

3、GBDT原理

基本思想:

  • 1.根据当前模型损失函数的负梯度信息来训练新加入的弱分类器;
  • 2、将训练好的弱分类器以累加的形式结合到现在模型中。

算法大概流程

  • 1.在每一轮迭代中,先计算出当前模型所在样本的负梯度
  • 2.以该值为目标训练一个新的弱分类器进行拟合并计算出该弱分类器的权重,最终实现对模型的更新。
  • 3.直到残差收敛到某个阈值以下,或者树的总数达到某个上限为止。

优点

  • 1.预测计算快,树与树之间可并行计算
  • 2.在分布稠密的数据集上,泛化和表达能力都很好
  • 3.采用决策树作为弱分类器具有较好的解释性和鲁棒性,能够自动发现特征间的高阶关系,并且也不需要对数据进行特殊的预处理和归一化。

缺点

  • 1.在高维稀疏的数据集上,表现不如支持向量机或者神经网络
  • 2.在处理文本分类特征问题上优势不如处理数值特征明显
  • 3.训练需要串行,只能在决策树内部采用一些局部并行手段提高训练速度

4、XGBoost和GBDT区别和联系

  • 1.在使用CART作为基分类器,XGBoost显示地加入了正则项来控制模型的复杂度,有利于防止过拟合,从而提高模型的泛化能力
  • 2.GBDT在模型训练时只使用了代价函数的一阶导信息,XGBoost对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数。
  • 3.传统的GBDT采用CART作为基分类器,XGBoost则支持多种类型基分类器,比如线性分类器
  • 4.传统的GBDT在每一轮迭代使用全部的数据,XGBoost则采用了与随机森林的相似策略,支持对数据的采样
  • 5.传统的GBDT没有设计对缺失值处理,XGBoost能够自动学习出缺失值的处理策略

为什么能处理缺失值:
  论文中关于缺失值的处理将其看与稀疏矩阵的处理看作一样。在寻找split point的时候,不会对该特征为missing的样本进行遍历统计,只对该列特征值为non-missing的样本上对应的特征值进行遍历,通过这个技巧来减少了为稀疏离散特征寻找split point的时间开销。在逻辑实现上,为了保证完备性,会分别处理将missing该特征值的样本分配到左叶子结点和右叶子结点的两种情形,计算增益后选择增益大的方向进行分裂即可。可以为缺失值或者指定的值指定分支的默认方向,这能大大提升算法的效率。如果在训练中没有缺失值而在预测中出现缺失,那么会自动将缺失值的划分方向放到右子树。

补充

梯度提升决策树:每棵树学的是之前所有树的残差。
  以预测用户年龄为例:用户真实年龄是25,第一棵决策树预测是22,残差为3.那么在第二棵树把A年龄设成3去学习,如果第二棵树能把用户分到3的叶子节点,那两棵树的结果相加就能得到真实的年龄。如果第二棵树预测是5,则残差是-2,第三棵树用户的年龄就变为-2.
基分类器的选择
  ”不稳定学习器“更适合,线性分类器或者KNN都是较为稳定,本身方差不大,使用Bagging并不能在原有基分类器的基础上获得更好的表现。

有空再写一篇文章补充xgboost和lightgbm的区别和联系了

  • 想找个长期靠谱的队友,毕竟一个人做比赛没人沟通很容易放弃,欢迎关注我的公众号后台私聊
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值