机器学习之集成学习Ensemble

 集成算法:


将多个分类器集成起来而形成的新的分类算法。这类算法又称元算法(meta-algorithm)。最常见的集成思想有两种bagging和boosting。

集成思想 :

  1. boosting:重赋权(re-weighting)

    --基于错误提升分类器性能,通过集中关注被已有分类器分类错误的样本,构建新分类器并集成。

    boosting的思想是 : 训练集(其中各个元素)的权重是根据学习器的表现来改变的.

    bagging采用自助采样的方式”产生”出多个训练集.但是boosting只有一个训练集,但是训练集中各个元素(输入向量)的权重是不同的.boosting是先从具有初始权重的训练集训练出一个弱学习器1,然后根据弱学习器1的表现,来更新样本的权重. 然后再具有新的权重的训练集上面训练弱学习器2,然后根据弱学习器2的表现来更新样本的权重……..反复多次 ,得到m个学习器,最后整合这些弱学习器得到强学习器. 比较出名的就是Adaboost算法。            

  •                                                              
  1. bagging:bootstrap sampling(有放回地取样)

    --基于数据随机重抽样的分类器构建方法。 

    bagging的思想 :  通过自助采样的方法得到K个训练集,然后分别在这K个训练集上面训练学习器.然后就得到了K个学习器.

    bootstrap : 不依靠外界的帮助,或者叫做自助法. 在这里表示一种有放回的抽样方法. bootstrap sampling : 自助采样,对于N个样本的训练集,我从里面随机取出m个样本,得到一个子训练集.然后把这些样本放回. 然后再取m个样本,得到第二个子训练集,再放回去………..重复这样的步骤k次,得到k个子训练集. Bagging可以看做是bootstrap aggregation的简写. 


    bagging对于弱学习器没有限制,也就是说,你可以用决策树,SVM等等都是可以的.一般常用的是决策树和神经网络. 因为bagging的随机采样思路,模型的泛化能力很强,降低了模型的方差.但是对于训练集的拟合程度就不是那么好,也就是说偏差会大一些. 符合bagging思想的比较出名的学习算法就是随机森林.

主要方法:


1、强可学习和弱可学习

    在集成学习方法中,是将多个弱模型,通过一定的组合方式,组合成一个强模型。在《统计学习方法》中介绍了“强可学习(strongly learnable)”和“弱可学习(weakly learnable)”的概念。
    在概率近似正确(probably approximately correct, PAC)学习的框架中,一个概念(一个类),如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么就称这个概念是强可学习的。一个概念,如果存在一个多项式的学习算法能够学习它,学习正确率仅比随机猜测略好,那么就称这个概念是弱可学习的。Schapire指出在PAC学习框架下,一个概念是强可学习的充分必要条件是这个概念是弱可学习的。那么对于一个学习问题,若是找到“弱学习算法”,那么可以将弱学习方法变成“强学习算法”。

2、在验证集上找表现最好的模型

    这样的方法的思想与决策树的思想类似,在不同的条件下选择满足条件的算法。

3、多个模型投票或者取平均值

    对于数据集训练多个模型,对于分类问题,可以采用投票的方法,选择票数最多的类别作为最终的类别,而对于回归问题,可以采用取均值的方法,取得的均值作为最终的结果。在这样的思路里最著名的是Bagging方法.BaggingBoostrap Aggregating,其中,Boostrap是一种有放回的抽样方法,其抽样策略是简单的随机抽样。
    在Bagging方法中,让学习算法训练多次,每次的训练集由初始的训练集中随机取出的个训练样本组成,初始的训练样本在某次的训练集中可能出现多次或者根本不出现。最终训练出个预测函数,最终的预测函数为对于分类和回归问题可采用如下的两种方法:
  1. 分类问题:采用投票的方法,得票最多的类别为最终的类别
  2. 回归问题:采用简单的平均方法
随机森林算法就是基于Bagging思想的学习算法。

4、对多个模型的预测结果做加权平均

    在Bagging方法中,其特点在于随机化抽样,通过反复的抽样训练新的模型,最终在这些模型的基础上取平均。而在对多个模型的预测结果做加权平均则是将多个弱学习模型提升为强学习模型,这就是Boosting的核心思想。
    在Boosting算法中,初始化时对每个训练样本赋予相等的权重,如,然后用该学习算法对训练集训练轮,每次训练后,对训练失败的训练样本赋予更大的权重,也就是让学习算法在后续的学习中几种对比较难学的训练样本进行学习,从而得到一个预测函数序列,其中每个都有一个权重,预测效果好的预测函数的权重较大。最终的预测函数为对于分类和回归问题可采用如下的两种方法:
  1. 分类问题:有权重的投票方式
  2. 回归问题:加权平均
AdaBoostGBDT(Gradient Boosting Decision Tree)是基于Boosting思想的两个最著名的算法。

算法示例:

  1. 随机森林(Random Forest: bagging + 决策树)

    将训练集按照横(随机抽样本)、列(随机抽特征)进行有放回的随机抽取,获得n个新的训练集,训练出n个决策树,通过这n个树投票决定分类结果。主要的parameters 有n_estimators 和 max_features。

  2. Adaboost (adaptive boosting: boosting + 单层决策树):

    训练数据中的每个样本,并赋予其一个权重,这些权重构成了向量D。一开始,这些权重都初始化成相等值。首先在训练数据上训练出一个弱分类器并计算该分类器的错误率,然后在统一数据集上再训练分类器。在第二次训练中,会调高那些前一个分类器分类错误的样本的权重。如此反复,训练出许多分类器来进行加权投票,每个分类器的权重是基于该分类器的错误率计算出来的。

  3. GBDT (Gradient Boosting Decision Tree: boosting + 决策树):

    GBDT与Adaboost类似,反复训练出多个决策树,每次更新训练集的权重是按照损失函数负梯度的方向。n_estimators是弱分类器个数;max_depth或max_leaf_nodes可以用来控制每棵树的规模;learning_rate是hyper-parameter,取值范围为(0, 1.0],用来控制过拟合与欠拟合

Boosting和Bagging的区别:  
(1)从偏差-方差分解的角度看,Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成;而Bagging主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更加明显; 
(2)Bagging的训练集的选择是随机的,各轮训练集之间相互独立,而Boosting的各轮训练集的选择与前面各轮的学习结果有关,即Bagging采用均匀取样,而Boosting根据错误率来取样,因此Boosting的分类精度要优于Bagging; 
(3)Bagging的各个预测函数没有权重,而Boosting是有权重的; 
(4)Bagging的各个预测函数可以并行生成,而Boosting的各个预测函数只能顺序生成; 
(5)对于像神经网络这样极为耗时的学习方法,Bagging可通过并行训练节省大量时间开销; 
(6)bagging和boosting都可以有效地提高分类的准确性。在大多数数据集中,boosting的准确性比bagging高。但在有些数据集中,boosting会导致Overfit。

补充结合策略 :
假设集成包含T个基学习器这里写图片描述,其中这里写图片描述在示例x上的输出为这里写图片描述。以下介绍几种对这里写图片描述进行结合的常见策略: 
一.平均法 
对于数值型输出这里写图片描述,最常见的结合策略是使用averaging(平均法)。 
(1)Simple averaging(简单平均法) 
          这里写图片描述

(2)Weighted averaging(加权平均法) 
          这里写图片描述 
其中这里写图片描述是个体学习器这里写图片描述的权重,通常要求这里写图片描述这里写图片描述。  
注意: 
加权平均法的权重一般是从训练数据中学习而得,现实任务中的训练样本通常不充分或存在噪声,这将是的学习出的权重不完全可靠。尤其是对规模比较大的集成来说,要学习的权重比较多,容易导致过拟合。因此实验和应用均显示出,加权平均法未必一定优于简单平均法。一般而言,在个体学习器性能相差较大时适合使用加权平均法,而在个体学习器性能相近时适合使用简单平均法。

二.投票法 
对分类任务来说,学习器这里写图片描述将从类别标记集合这里写图片描述中预测一个标记,最常见的结合策略是使用voting。为了便于讨论,我们将这里写图片描述在样本x上的预测输出表示为一个N维向量这里写图片描述,其中这里写图片描述这里写图片描述在类别标记这里写图片描述上的输出。 
(1)Majority voting(绝对多数投票法)

这里写图片描述

即若某标记得票过半数,则预测为该标记,否则拒绝预测。

(2)Plurality voting(相对多数投票法)

        这里写图片描述

即预测为得票最多的标记,若同时有多个标记获得最高票,则从中随机选取一个。

(3)Weighted voting(加权投票法)

       这里写图片描述

与加权平均法类似,这里写图片描述这里写图片描述的权重,通常这里写图片描述这里写图片描述

三.学习法 
当训练数据很多时,一种更为强大的结合策略是使用“学习法”,即通过另一个学习器来进行结合。Stacking是学习法的典型代表。 
Stacking先从初始数据集训练出初级学习器,然后“生成”一个新的数据集用于训练次级学习器。在这个新的数据集中,初级学习器的输出被当作样例输入特征,而初级样本的标记仍被当作样例标记。我们假定初级学习器使用不同的学习算法产生,即初级集成是异质的,具体过程如下: 
(1)划分训练数据集为两个不相交的集合; 
(2)在第一个集合上训练多个学习器; 
(3)在第二个集合上测试这几个学习器; 
(4)把第三步得到的预测结果作为输入,把正确的回应作为输出,训练一个高层学习器。 
注意: 
在训练阶段,次级训练集是利用初级学习器产生的。若直接用初级学习器的训练集来产生次级训练集,则过拟合的风险会比较大。因此,一般是通过使用交叉验证或者留一法的方式,用训练初级学习器未使用的样本来产生次级学习器的训练样本。


参考资料:

http://blog.csdn.net/savinger/article/details/52842981
http://blog.csdn.net/savinger/article/details/52862004
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在菜菜的机器学习sklearn系列中,第12节主要讲解了集成学习Ensemble Learning)的概念和常见的模型,以及如何使用sklearn库进行集成学习的实践。 集成学习是一种通过构建多个学习器的组合来提高预测准确性和泛化能力的方法。常见的集成学习模型包括Bagging、Boosting和随机森林等。 Bagging是一种通过自助重采样(Bootstrap Sampling)方法产生多个数据集,并训练多个基学习器的集成学习方法。在sklearn库中,使用BaggingClassifier和BaggingRegressor类可以对分类和回归问题进行集成学习。 Boosting是一种通过逐步训练多个弱学习器,并依次对样本进行调整的方法,最终组合多个弱学习器的结果得到最终预测结果。在sklearn库中,使用AdaBoostClassifier和AdaBoostRegressor类可以进行Boosting方法的集成学习。 随机森林(Random Forest)是一种通过同时使用多个决策树建模和预测的方法,通过对多个决策树的结果进行投票或平均得到最终结果。在sklearn库中,使用RandomForestClassifier和RandomForestRegressor类可以进行随机森林的集成学习。 除了这些常见的集成学习模型之外,sklearn库还提供了其他集成学习相关的模型和功能,如ExtraTrees、Gradient Boosting、Voting Classifier等。菜菜老师通过具体的代码示例和实践案例,详细介绍了每个模型的使用方法和注意事项。 总的来说,通过学习集成学习的概念和常见模型,并掌握sklearn库中相关的实现方法,菜菜的机器学习sklearn系列第12节为学习者提供了丰富的知识和实践经验,帮助大家更好地理解和运用集成学习方法来提升机器学习模型的性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

女王の专属领地

您的鼓励是我最大的动力!

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

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

打赏作者

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

抵扣说明:

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

余额充值