(八)集成学习Bagging之随机森林知识点汇总与python实现

本文介绍了集成学习中的Bagging和Boosting,重点讲解了随机森林的概念、原理和优势,包括行采样、列采样、OOB错误率等。讨论了随机森林与ID3、C4.5、Cart等相关决策树算法的区别,并分享了如何在sklearn中调整参数以优化模型。还给出了随机森林的Python代码实现和参考资源。
摘要由CSDN通过智能技术生成

不定期持续更新ing~~~~~

目录

一、知识点总结不定期持续更新中:

Part1 :集成算法,bagging,boosting

Part2:随机森林

Part3:相关知识点

Part4:一些疑惑

二、sklearn参数:

A.使模型预测更好的特征

B.使得模型训练更容易的特征

三、代码实现

1.采用工具包实现随机森林和单个决策树:

 2.详细代码实现随机森林(来自网友)

四、参考博客


一、知识点汇总:

Part1 :集成算法,bagging,boosting

  • 集成模型(Ensemble)的思想:为了解决单个模型所固有的缺陷,从而整合更多的模型,取长补短,避免局限性。
  • 自助法(Bootstrap):即从样本自身中再生成很多可用的同等规模的新样本,从自己中产生和自己类似的,所以叫做自助,即不借助其他样本数据。(有放回的抽样问题)
  • bagging的名称来源于 ( Bootstrap AGGregatING ),意思是自助抽样集成,这种方法将训练集分成m个新的训练集,然后在每个新训练集上构建一个模型,各自不相干,最后预测时我们将这个m个模型的结果进行整合,得到最终结果
  • bagging每轮随机采样中,训练集大约有36.8%的数据没被采样,被称为“袋外数据”
  • 对于分类:通常使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出
  • 对于回归:通常使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最终的模型输出。(分类投票,回归均值)
  • Bagging有放回的重复抽样方法,各学习器之间没有依赖关系,可以并行生成,减少方差
  • Boosting:各个学习器之间是串联的,每一轮训练集不变,改变的是样本的权重,减少偏差
  • 为什么说bagging减少了variance,而boosting减少了bias
    • 偏差:预测值和真实值之间的差值,欠拟合
    • 方差:预测值之间的离散程度,过拟合,记住太多细节
    • boosting降低bias,即增加基模型的个数逼近目标,通常来说boosting是在优化loss function,在降低loss,那么很显然,这在很大程度上是减少bias,但同样我们也发现boosting的方差是随着基模型的个数逐渐增大的,所以当我们增大基模型个数提高准确率时,整体模型的方差也随之增大了。
    • baggingj降低方差,基模型个数越大,可以降低模型的过拟合,但当m增大到一定程度时,降低模型过拟合的能力达到极限
  • Bagging+决策树=随机森林
  • AdaBoost+决策树=提升树
  • Gradient+Boosting+决策树=GBDT

Part2:随机森林

  • 随机森林是bagging的一个特化进阶版
    • 特化是指:随机森林的弱学习器都是决策树
    • 进阶是指:在bagging样本随机采样的基础上,又加上了特征的随机选择
  • 随机森林的构造过程:行采样和列采样
    • 行采样:假设有N个样本,有放回的随机选择N个样本(自助法)
    • 列采样:每个样本有M个属性,随机选择m个属性,m<<M,然后从这m个属性中采用某种策略(信息增益)来选择1个属性作为该节点的分裂属性
  •  特征选择的个数减少特征选择个数,不仅会提升算法个数,也可能降低测试误差,通常使用的值为sqrt的数量或者log_2M

  • m是决策树的重要参数,m越小,方差越小,拟合程度越差,偏倚越大,一般选择交叉验证法寻找最佳m
  • OOB:袋外错误率。随机森林有一个重要的优点就是,没有必要对它进行交叉验证或者用一个独立的测试集来获得误差的一个无偏估计。它可以在内部进行评估,也就是说在生成的过程中就可以对误差建立一个无偏估计。在构建每棵树时,我们对训练集使用了不同的bootstrap sample(随机且有放回地抽取)。所以对于每棵树而言(假设对于第k棵树),大约有1/3的训练实例没有参与第k棵树的生成,它们称为第k棵树的oob样本。而这样的采样特点就允许我们进行oob估计
  • 整个决策树形成过程中没有进行剪枝,因为特征和样本的随机性选择导致不容易陷入过拟合
  • 随机森林具有很好的抗噪声能力
  • 能处理很高维(feature很多)的数据,并且不用做特征选择
  • 可以度量样本之间的相似性
  • 训练过程中能检测特征重要性,是常见的特征筛选方法。当某一特征在所有树种离树根的平均距离越近,这一特征就越重要
  • 需要调整的参数有:决策树个数,递归次数(决策树深度),特征选择的个数
  • 决策树个数:越多越稳定
  • 决策树深度:深度越小,计算量越小,速度越快,常用的取值为10-100

Part3:相关知识点

  • 相关知识点:ID3
    • 在ID3中,选择信息增益的指标来选择分裂特征,信息增益越大,说明选择的变量分裂后的分支下输出更纯
    • ID3有很多明显不足的地方:比如不能处理连续性变量;不能处理缺失值;选择分裂变量时会倾向于选择类别较多的变量;容易过拟合
  • 相关知识点:C4.5
    • 解决ID3不能处理连续变量:在C4.5中,会先将连续变量离散化。如我们有一个连续变量A,共有m个不同的取值 ,算法首先将连续变量按照一定的顺序排列,排列后一共有m-1个切分点,切分点的值总是取相邻两个值的均值,即第t个切分点的值表示为(at+at+1)/2 ,然后根据切分点将变量一分为二
    • 解决ID3不能处理缺失值:C4.5可以处理缺失值,具体原因【待补充】
    • 解决ID3倾向于选择类别较多的变量:C4.5引入了信息增益率替换信息增益
    • 解决ID3过拟合问题:引入正则化系数进行了初步剪枝
    • 不足:生成的是多叉树,效率不如二叉树高;只能用于分类,不能用于回归;由于使用了熵模型,里面有大量耗时的对数运算,如果是连续值还有大量的排序运算,运算效率较低
  • 绝大多数随机森林算法中用的都是Cart
    • 在sklearn中的随机森林算法中用的就是cart树,在分类问题中,分裂方式不限于gini,也可以选entropy,在回归问题中,用的是mse和mae
  • 相关知识点:Cart
    • cart树里面引入了gini系数,gini计算相比熵要简单的多,所以可以减少一定的运算量
    • cart树既可以做回归&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十二十二呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值