集成学习

  • 概述

    • 对于训练集数据,通过训练若干个体学习器,通过一定的结合策略,最终形成一个强学习器。
  • 个体学习器

    • 同质:个体学习器同一种类
      • 个体学习器间强依赖关系(串行生成)
        • 代表:Boosting,应用最多的是AdaBoost、提升树,后者中主要为梯度提升树

      • 个体学习器间弱依赖关系(并行生成)
        • 代表:Bagging、随机森林

        • 特点:随机采样,一般采用自主采样法(有放回),可得多个不同的弱学习器
        • 随机森林:主要增加特征的随机性
    • 异质
  • 结合策略

    • 平均法
      • 加权平均
    • 投票法
      • 少数服从多数
      • 加权投票
    • 学习法
      • 代表:stacking
      • 多一层学习器;将初级学习器(弱分类器)的输出作次级分类器的输入
  • Bagging

    • 随机森林
      • 思想:
        • 如果nsub=nnsub=n,则此时RF的CART决策树和普通的CART决策树没有区别。nsubnsub越小,则模型约健壮,当然此时对于训练集的拟合程度会变差。也就是说nsubnsub越小,模型的方差会减小,但是偏倚会增大。在实际案例中,一般会通过交叉验证调参获取一个合适的nsubnsub的值。

          除了上面两点,RF和普通的bagging算法没有什么不同, 下面简单总结下RF的算法。

          输入为样本集D={(x,y1),(x2,y2),...(xm,ym)}D={(x,y1),(x2,y2),...(xm,ym)},弱分类器迭代次数T。

          输出为最终的强分类器f(x)f(x)

              1)对于t=1,2...,T:

                a)对训练集进行第t次随机采样,共采集m次,得到包含m个样本的采样集DtDt

                b)用采样集DtDt训练第t个决策树模型Gt(x)Gt(x),在训练决策树模型的节点的时候, 在节点上所有的样本特征中选择一部分样本特征, 在这些随机选择的部分样本特征中选择一个最优的特征来做决策树的左右子树划分

              2) 如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出

        • 首先,RF使用了CART决策树作为弱学习器,这让我们想到了梯度提示树GBDT。第二,在使用决策树的基础上,RF对决策树的建立做了改进,对于普通的决策树,我们会在节点上所有的n个样本特征中选择一个最优的特征来做决策树的左右子树划分,但是RF通过随机选择节点上的一部分样本特征,这个数字小于n,假设为nsubnsub,然后在这些随机选择的nsubnsub个样本特征中,选择一个最优的特征来做决策树的左右子树划分。这样进一步增强了模型的泛化能力。    
        • 优缺点

          • RF的主要优点有:

                1) 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。个人觉得这是的最主要的优点。

                2) 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。

                3) 在训练后,可以给出各个特征对于输出的重要性

                4) 由于采用了随机采样,训练出的模型的方差小,泛化能力强。

                5) 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。

                6) 对部分特征缺失不敏感。

          • RF的主要缺点有:

                1)在某些噪音比较大的样本集上,RF模型容易陷入过拟合。

                2) 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。

  • Boosting

    • Adaboost

    • GBDT
  • stacking

  • sklearn参数

    • sklearn中决策树的参数:

       

      1,criterion: ”gini” or “entropy”(default=”gini”)是计算属性的gini(基尼不纯度)还是entropy(信息增益),来选择最合适的节点。

      2,splitter: ”best” or “random”(default=”best”)随机选择属性还是选择不纯度最大的属性,建议用默认。

      3,max_features: 选择最适属性时划分的特征不能超过此值。

            当为整数时,即最大特征数;当为小数时,训练集特征数*小数;

            if “auto”, then max_features=sqrt(n_features).

            If “sqrt”, thenmax_features=sqrt(n_features).

            If “log2”, thenmax_features=log2(n_features).

            If None, then max_features=n_features.

      4,max_depth: (default=None)设置树的最大深度,默认为None,这样建树时,会使每一个叶节点只有一个类别,或是达到min_samples_split。

      5,min_samples_split:根据属性划分节点时,每个划分最少的样本数。

      6,min_samples_leaf:叶子节点最少的样本数。

      7,max_leaf_nodes: (default=None)叶子树的最大样本数。

      8,min_weight_fraction_leaf: (default=0) 叶子节点所需要的最小权值

      9,verbose:(default=0) 是否显示任务进程

      二:随机森林特有的参数:

      1,n_estimators=10:决策树的个数,越多越好,但是性能就会越差,至少100左右(具体数字忘记从哪里来的了)可以达到可接受的性能和误差率。  

      2,bootstrap=True:是否有放回的采样。  

      3,oob_score=False:oob(out of band,带外)数据,即:在某次决策树训练中没有被bootstrap选中的数据。多单个模型的参数训练,我们知道可以用cross validation(cv)来进行,但是特别消耗时间,而且对于随机森林这种情况也没有大的必要,所以就用这个数据对决策树模型进行验证,算是一个简单的交叉验证。性能消耗小,但是效果不错。  

      4,n_jobs=1:并行job个数。这个在ensemble算法中非常重要,尤其是bagging(而非boosting,因为boosting的每次迭代之间有影响,所以很难进行并行化),因为可以并行从而提高性能。1=不并行;n:n个并行;-1:CPU有多少core,就启动多少job。

      5,warm_start=False:热启动,决定是否使用上次调用该类的结果然后增加新的。  

      6,class_weight=None:各个label的权重。  

      三:进行预测可以有几种形式:

      1,predict_proba(x):给出带有概率值的结果。每个点在所有label的概率和为1.  

      2,predict(x):直接给出预测结果。内部还是调用的predict_proba(),根据概率的结果看哪个类型的预测值最高就是哪个类型。  

      3,predict_log_proba(x):和predict_proba基本上一样,只是把结果给做了log()处理。  

       

问题:

1、stacking中的次级学习器使用的是哪种弱学习器?

2、stacking中使用测试集是数据为什么要现在初级学习器中跑一遍?

 

参考:https://www.cnblogs.com/harvey888/p/6512312.html

           https://www.cnblogs.com/pinard/p/6156009.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值