集成学习是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种极其学习方法。
简单地说,就是通过抽样等方式从原始数据集构造m个训练集,再选择一个弱分类器(比如决策树)对这些训练集进行训练得到m个分类器,在待分类数据进行分类时,同时使用这m个分类器去判断,使用多数表决或者权重联合的方式综合这m个分类器给出的分类结果,得到最终结果。
就好比是:原始数据是一堆书,本来这堆书是给一个人看的(一个弱分类器),他看完后学的知识,再根据他学的知识执行任务(分类/回归)。但是现在,我们把书分开给m个人看,得到m个有知识的人(每本书可以被重复看),他们对同一件事发表自己的看法,最后的决策者通过多数表决(占比例多的结果)来决策,或者通过考虑权重的方式(比如在学习过程中发现某个人是大牛,他的意见我们就会多重视)来决策。
Bootstrap Bagging AdaBoost这三种算法提供了两个功能:
样本选择:怎么把大样本分成m个小样本交给m个弱分类器去训练
分类器组合:怎样综合分类器的建议
Bootstraping
名字来自成语pull up by your own bootstraps
,意思是依靠你自己的资源,称为自助法,它是一种有放回的抽样方法,它是参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法。其核心思想和基本步骤如下:
- 采用重采样技术从原始样本中抽取一定数量(自己给定)的样本,此过程允许重复抽样。
- 根据抽出的样本计算给定的统计量T。
- 重复上述N次(一般大于1000),得到N个统计量T。
- 计算上述N个统计量T的样本方差,得到统计量的方差。
应该说Bootstrap是现代统计学较为流行的一种统计方法,在样本时效果很好。通过方差的估计可以构造置信区间等,其应用范围得到进一步延伸。
Jackknife
和上面介绍的Bootstrap功能类似,只是有一点细节不一样,即每次从样本中抽样时候只是去除几个样本(而不是抽样),就像小刀一样割去一部分。
Bagging
Bagging方法是一个统计重采样的技术,它的基础是Bootstrap。
基本思想是:利用Bootstrap方法重采样来生成多个版本的预测分类器(样本选择
) ,然后把这些分类器进行组合。
最终的决策采用投票方式,对回归问题采用简单平均方法对新示例进行判别(分类器组合
)
AdaBoost
是英文Adaptive Boosting
(自适应增强)的缩写,是一种机器学习方法,由Yoav Freund和Robert Schapire提出。Adaboost方法的自适应在于:前一个分类器分错的样本会被用来训练下一个分类器。
AdaBoost方法对于噪声数据和异常数据很敏感。但在一些问题中,Adaboost方法对于大多数其他学习算法而言,不会很容易出现过拟合现象。AdaBoost方法中使用的分类器可能很弱(比如出现很大错误率),但只要他的分类效果比随机好一点(比如两类问题分类错误率略小于0.5),就能够改善最终得到的模型。而错误率高于随机分类器的弱分类器也是有用的,因为在最终得到的多个分类器的线性组合中,可以给它们赋予负系数,同样也能提升分类效果。
AdaBoost 方法是一种迭代算法,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率。每一个训练样本都被赋予一个权重,表明它被某个分类器选入训练集的概率。如果某个样本点已经被准确的分类,那么在构造下一个训练集中,它被选中的概率就被降低;相反,如果某个样本点没有被准确的分类,那么他的权重就得到提高。通过这样的方式,AdaBoost方法能聚焦于
那些较难分(更富信息)的样本上。在具体实现上,最初令每个样本的权重都相等,对于不第K次迭代操作,我们就根据这些权重来选取样本点,进而训练分类器Ck。然后就根据这个分类器,来提高被它分错的样本的权重,并降低被正确分类的样本权重。然后,权重更新过的样本集被用于训练下一个分类器Ck。整个训练过程如此迭代的进行下去。