机器学习之集成学习
2017-04-19 10:26
176 查看
集成学习
看了DeepForest论文后,对于DeepForest的结构还是不是很理解,找来了一本paper作者的书《机器学习》,本文内容均选自书中,如有不雷同,纯属失误~个体与集成
集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务:先产生一组“个体学习器”(individual learner),再用某种策略将它们结合起来。其中每个IL由一个现有的学习算法从训练数据中产生,如:C4.5决策树算法、BP神经网络等。
同质(homogeneous)所有的个体学习器都是相同的,且其中的个体学习器也称“基学习器”,相应的学习算法称为“基学习算法”。
异质(heterogenous)集成包含不同类型的个体学习器,此时不再有基学习算法,此时的个体学习器称为“组件学习器”。
性能:集成学习器的能力和个体学习器有很大关系,个体学习器本身在具有一定“准确性”的同时,还要有“多样性”,学习器间要具有差异。
分析对于一个二分类问题y∈{−1,+1}和真是函数f,假定基分类器的错误率为ϵ,即对每个基分类器hi有P(hi(x)≠f(x))=ϵ.假设集成通过简单投票法结合T个基分类器,若有超过半数的基分类器正确,则集成分类就正确:H(x)=sing(∑i=1Thi(x)).假设基分类器的错误率相互独立,则由Hoeffding不等式可知,集成的错误率为P(H(x)≠f(x))=∑k=0⌊T/2⌋(Tk)(1−ϵ)kϵT−k≤exp(−12T(1−2ϵ)2).从上式可知,随着集成中个体分类器数目T的增大,集成的错误率将指数级下降,最终趋向于0。
注意:上述分析的前提是基学习器的误差相互独立,但事实上,个体学习器的“准确性”和“多样性”本身就存在冲突,所以,如何产生并结合“好而不同”的个体学习器恰恰是集成学习的核心
分类:目前集成学习方法大致分类两大类:
1、个体学习器间存在强依赖关系、必须串行生成的序列化方法,如Boosting
2、个体学习器间不存在强依赖关系、可同时生成的并行化方法,如Bagging、“随机森林(Random Forest)”
Boosting
这是一族可将弱学习器提升为强学习器的算法工作机制:先从初始训练集中训练出来一个基学习器,然后根据表现,对训练样本进行调整,是基学习器之前做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器,如此反复,直到基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。
AdaBoost:
1、初始化样本权值分布
2、基于分布Dt从数据集D中训练处分类器ht
3、估计ht的误差
4、确定分类器ht的权重
5、更新样本分布,其中Zt是规范化因子,以确保Dt+1是一个分布
Bagging与随机森林
Bagging
Bagging是并行式集成学习方法最著名的代表,它基于自助采样法(bootstrap sampling),先采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合,这就是Bagging的流程。通常Bagging对分类任务使用简单投票法,对回归任务使用简单平均法。
计算复杂度T(O(m)+O(s))
基学习器的计算复杂度O(m)
采样与投票/平均过程的复杂度O(s)
一般O(s)很小,所以训练一个Bagging集成与直接使用基学习算法训练一个学习器的复杂度同阶,这说明Bagging很高效
随机森林
随机森林(Random Forest,简称BF),是Bagging的一个扩展变体,RF以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择工作过程:在RF中,对基决策树的每个节点,先从该节点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分(此处与决策树不同:传统决策树在选择划分属性时是在当前节点的属性集合(假设有d个属性)中选择一个最优属性),这里的参数k控制了随机性的引入程度:若令k=d,则基决策树的构建与传统决策树相同,若令k=1,则是随机选择一个属性用于划分,一般推荐令k=log2d.
特点:结构简单、容易实现、计算开销小,且在很多现实任务中展现出强大的性能
两者的比较
随机森林的收敛性与Bagging相似,随机森林的起始性能往往相对较差,然而,随着个体学习器数目的增加,随机森林通常会收敛到更低的泛化误差,且随机森林的训练效率常优于Bagging,因为在个体决策树的构建过程中,Bagging使用的是“确定性”决策树,在选择划分属性时要对节点的所有属性进行考察,而随机森林使用的“随机型”决策树则只需考察一个属性子集即可相关文章推荐
- python机器学习案例系列教程——集成学习(Bagging、Boosting、随机森林RF、AdaBoost、GBDT、xgboost)
- 机器学习笔记(八)集成学习
- 机器学习分类算法——集成学习
- 周志华 《机器学习》之 第八章(集成学习)概念总结
- 机器学习--集成学习(Ensemble Learning)
- 机器学习-->集成学习-->Bagging,Boosting,Stacking
- 机器学习-->集成学习-->GBDT,RandomForest
- 机器学习:集成学习(ensemble learning)(一)——原理概述
- Hulu机器学习问题与解答系列 | 十三:集成学习
- 机器学习--集成学习记载1
- 机器学习(5)——集成学习(Ensemble Learning)
- 机器学习(一)集成学习
- 机器学习-->集成学习-->Xgboost详解
- 机器学习笔记(7)——集成学习(Ensemble Learning)
- 机器学习笔记(5)-集成学习
- 机器学习之集成学习(二)AdaBoost算法
- [机器学习]集成学习
- 机器学习-->集成学习-->决策树详解
- PYTHON机器学习实战——集成学习 AdaBoost元算法
- 机器学习之集成学习(四)GBDT