随机森林算法梳理
集成学习概念
集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统(multi-classifier system)、基于委员会的学习(committee-bases learning)等
个体学习器概念
集成学习的一般结构:先产生一组“个体学习器“(individual learner),再用某种策略将他们结合起来。而根据结合的方式可分为
1)同质(homogenneous)集成:个体学习器均为同种类型的个体学习器,例如决策树集成中全是决策树。同质集成中的个体学习器又称为“基学习器“(base learner),相应的学习算法称为基学习算法(base learning algorithm)
2)异质(heterogenous)集成:个体学习器由不同的学习算法生成,此时其称为“组件学习器“(component learner)或直接称为个体学习器
集成学习把多个学习器结合起来,如何能获得比单一学习器更好的性能呢?
上面的例子显示出:要获得好的集成,个体学习器应该“好而不同“,即个体学习器要有一定的准确性,即学习器不能太坏,并且要有多样性(diversity),即学习器之间具有差异。
注意,上面的分析存在一个关键性的假设:基学习器是互相独立的。但在现实任务中,个体学习器是为解决同一个问题训练出来的,他们显然不可能互相独立。也就是说,个体学习器的准确性和多样性本身就存在冲突。一般的,准确性很高之后,要增加多样性就需牺牲准确性。事实上如何产生并结合“好而不同“的个体学习器,就是集成学习研究的核心。
boosting bagging
目前集成学习方法大致可分为两大类:
a)个体学习器之间存在强依赖关系、必须串行生成的序列化方法,代表为boosting
b)个体学习器间不存在强依赖关系、可同时生成的并行化方法,代表为bagging和随机森林(random forest)
boosting
Boosting是一族可将弱学习器提升为强学习器的算法。这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合