集成学习(一):概述
定义:
集成学习(Ensemble Learning)的目的是将多个弱分类器通过某种集合策略形成一个强学习器。弱分类器之间既要保证一定的差异性,其本身也要保证一定的准确性,即“好而不同”。差异性更多的是指弱分类器所关注的或提取的数据特征不同。例如KNN算法更关注的是数据之间的欧式距离,空间距离。而决策树,例如ID3则关注的是数据二分时其熵的变化。通俗的说就是三个臭皮匠赛过诸葛亮,而这三个臭皮匠都在待解决问题上都有特别的看法。
所以集成学习有两个重点内容需要关注:1)学习器 2)结合策略
学习器:
同种类型的弱学习器称为“同质”学习器,不同种类型的弱学习器称为“异质”学习器。学习器之间根据其“依赖程序”分为“强依赖”和“弱依赖”。“强依赖”的代表有强大的Boosting家族,主要目标在于减少bias(偏差),即提高模型在训练集上的精度。之所以说“强依赖”,因为下一个待训练的模型需要依赖上一个模型。模型1,2,3的训练呈现一种串行的模式。而“弱依赖”则可以同时训练多个模型,模型和模型之间没有特别大的关系。代表方法有Bagging,Random Forests(随机森林)等,其主要目标在于减少Variance(方差),降低模型的过拟合程度。
结合策略:
当多个弱学习器各自得出了预测结果,那么就需要一个好的结合策略采百家之长,得到最终的预测结果。如果是回归问题,那么很直接的想法就是将所有模型的结果取均值(平均法) ,根据各个弱学习器的“能力”不同,可以对弱学习器进行适当的加权(加权平均法)。如果是分类问题,那么可以对模型的结果进行统计,分类结果得票最多的为最终结果(投票法,Voting)。同样的,根据模型的“能力”不同,进行加权投票。
最后还有集成学习大佬:Stacking。不知道把它放在结合策略里是否得当。这里放一张网上的图放个坑在这里。来自:Kaggle机器学习之模型融合(stacking)心得
Kaggle作为集成学习的概述暂时介绍到这里。接下来的文章主要对集成学习的各个方法进行直接的介绍,例如:Bagging, Stacking, Voting, Boosting。(不知道这么多坑能不能填的完 (;´д`)ゞ)
未完待续……