机器学习-树模型(Bagging)相关问题:随机森林

随机森林

叙述随机森林之前先看一下什么是集成学习

集成学习

集成算法会考虑多个评估器的建模结果,汇总之后得到一个综合的结果,以此来获取比单个模型更好的回归或分类表现。
多个模型集成成为的模型叫做集成评估器,组成集成评估器的每个模型都叫做基评估器。通常有三类集成算法:装袋法(Bagging),提升法(Boosting)和stacking。
在这里插入图片描述

  • 装袋法(bagging)的核心是构建多个相互独立的评估器,然后对其进行平均或多数表决原则来决定集成评估器的结果。装袋法的代表模型就是随机森林。(一次性建立多个平行独立的若评估器,求解平均)
  • 提升法(boosting)中,基评估器是相关的是按顺序一一构建的。其核心思想是结合弱评估器的力量一次次对难以评估的样本进行预测。从而构成强评估器。提升法的代表模型有Adaboost和梯度提升树。
  • Stacking:Stacking是一种分层模型集成框架。以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为特征加入训练集进行再训练,从而得到完整的stacking模型。

随机森林

bagging:

  • 每个基评估器都是独立存在的
  • 取平均或少数服从多数
  • 基分类器的判断准确率至少要超过随机分类器

1、基评估器

随机森林的基评估器都是决策树,在sklearn中由参数n_estimators控制,他对随机森林模型的精确性影响是单调的,基评估器越多,模型效果往往越好。但是相应的,任何模型都有决策边界,当达到了一定的程度之后,随机森林的精确性往往不在上升或开始波动,并且基评估器越多,需要的计算量和内存也越大。我们希望在训练难度和模型效果之间取得平衡。

2、如何保证继承效果好于单个分类器

随机森林是一种装袋集成算法,装袋法的本质是对基评估器的预测结果进行平均或者多数表决,只有一半以上的基评估器判错随机森林才会判错!

  • 那么问题就来了:基评估器都是决策树,同样的参数,一样的训练集,为什么每个基评估器结果不一样?
    在使用sklearn中,分类树是自带随机性的,所以随机森林中的树天生就是不一样的。因为决策树是从最重要的特征中随机选择一个特征进行分支,因此每次生成的树也会不一样。随机森林中有类似的功能(random_state)控制森林生成的模式,即使是随机森林中的random_state固定的时候,生成的是一组固定的树,但是每棵树又是不一样的(这个不一样是决策树随机挑选特征得到的)。

一定要记得,装袋法的基分类器是独立的,是不相同的!

虽然这种做法导致每个树是不一样的,但是也有他的局限性,因为当我们需要生成上万棵树时,数据不可能给我们提供上万个特征给我们,因此控制随机性的还有另外一种方法:自助法:bootstrap

  • 自助法:bootstrap
    要让基分类器每个都不一样,我们很直观的就会想到使用不同的训练集对基评估器进行训练。装袋法就是通过有放回抽样来形成不同的数据集
  • bagging与boosting的放回抽样的比较

虽然都是有放回的抽样,但二者的区别在于:Bagging采用有放回的均匀取样,而Boosting根据错误率来取样(Boosting初始化时对每一个训练例赋相等的权重1/n,然后用该学算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重),因此Boosting的分类精度要优于Bagging。

Bagging的训练集的选择是随机的,各轮训练集之间相互独立,
而Boostlng的各轮训练集的选择与前面各轮的学习结果有关。

对于原始训练集,我们将会采用有放回抽样采集样本,“”“取之不尽”,形成多个不同的数据训练集,那么这些自助集会来帮助我们训练基评估器。
1 1 1 / n n = 0.632 1-(1-1/n)^n=0.632
因此,自助集大概平均包含原数据集的63%。会有37%被浪费,这也是一个缺点吧。没有参与建模的那些数据被称之为袋外数据obb,(out of bag data),我们可以使用这些数据进行测试

  • 也就是说,在使用随机森林时,不用划分训练集与测试集,只需要用袋外数据就好。
    当然不是绝对的,当n和树都不多时,可能就没有袋外数据了。

偏差与方差

在这里插入图片描述

Bagging(关注的是方差):他的复杂度较低,因此基模型我们会用强模型,比如较深的决策树,因此sklearn中的参数默认会在最低点的右边

Boosting(关注的是偏差):如果他的基模型不是弱模型,复杂度会比较高,他的方差会比较大,因此boosting框架的基模型必须是弱模型

Adaboost与随机森林:https://www.cnblogs.com/jiangxinyang/p/9236385.html

发布了49 篇原创文章 · 获赞 2 · 访问量 1821

猜你喜欢

转载自blog.csdn.net/liuluTL/article/details/105067670