1.什么是集成学习
集成学习(ensemble learning)通过构建并结合多个学习期来完成学习任务,有时也被称为多分类器系统(multi-classifier system)、基于委员会的学习等
集成学习期的一般结构是:先产生一组“个体学习器”(individual learning),再用某种策略将他们结合起来。个体学习器通常由一个现有的学习算法从训练数据产生。
个体学习器可以选择:C4.5决策树算法,神经网络算法等。集成学习时可以所有个体学习器都属于同一类算法如全是决策树算法或者全是神经网络算法,也可以集成不同的算法是异质学习算法。
结合的策略可以是:平均法、投票法、学习法。
集成可能从三方面带来好处:
- 从统计的方面来看,由于学习任务的假设空间往往很大,可能有多个假设在训练集达到同等的性能,此时若使用丹学习器可能因误选而导致泛化性能不佳,结合多个学习器则会减少这一风险;
- 从计算的方面来看,学习算法往往会陷入局部极小,有的局部极小点所对应的泛华性能可能很糟糕,而通过多次运行之后进行结合,可降低陷入糟糕局部极小点的风险
- 从表示的方面来看,某些学习任务的真实假设可能不在当前学习算法所考虑的假设空间中,此时若使用单学习器则肯定无效,而通过多个学习器的组合,假设孔家有所扩大,可能学得更好的近似。
2.个体学习器产生的方式
根据个体学习器的生产方式,目前的集成学习方法大致可以分为两大类,即个体学习器间存在强依赖的关系、必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系,可同时生成的并行化方法。前者的代表是Boosting,后者的代表是Bagging和“随机森林”(Random Forest)。
3.Adaboosting算法
3.1 boosting算法思想
Boosting是一族可以将弱学习器提升为强学习器的算法。这族算法的工作机制类似:先从初始训练数据训练一个基学习器,在根据基学习器的表现对训练集样本的分布进行调整,使得先前基学习器做错的训练样本在后续收到更多的关注,然后基于调整后的样本分布来训练下一个基学习器,如此重复进行,直至基学习器的数目达到事先指定的值T,最终将这T个学习器进行加权组合。Boosting的代表是Adaboosting。
3.2 Adaboosting算法。
- 初始化训练数据的权值分布,此时每个数据的权值是杨的所以是1/m;以分类问题为例,最初令每个样本的权重都相等,对于第t次迭代操作,我们根据这些权重来训练基本分类器。
- 进入for循环T次,即基学习器的个数为T。
- 根据当前权重分布Dt的数据集,学习h_t;
- 计算当前分类器h_t在训练数据集上的分类误差率。
- 如果误差率大于0.5则结束循环。即该分类器比随机分类效果还差。
- 计算当前分类器的权重
-
更新训练数据的权值分布。
最后总的判决可以使用各个基分类器加权平均来得到。