前面介绍了一系列的算法,每个算法有不同的适用范围,例如有处理线性可分问题的,有处理线性不可分问题。在现实世界的生活中,常常会因为“集体智慧”使得问题被很容易解决,那么问题来了,在机器学习问题中,对于一个复杂的任务来说,能否将很多的机器学习算法组合在一起,这样计算出来的结果会不会比使用单一的算法性能更好?这样的思路就是集成学习方法。
集成学习方法是指组合多个模型,以获得更好的效果,使集成的模型具有更强的泛化能力。对于多个模型,如何组合这些模型,主要有以下几种不同的方法:
以上的几种思路就对应了集成学习中的几种主要的学习框架。
在集成学习方法中,是将多个弱模型,通过一定的组合方式,组合成一个强模型。在《统计学习方法》中介绍了“强可学习(strongly learnable)”和“弱可学习(weakly learnable)”的概念。
在概率近似正确(probably approximately correct, PAC)学习的框架中,一个概念(一个类),如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么就称这个概念是强可学习的。一个概念,如果存在一个多项式的学习算法能够学习它,学习正确率仅比随机猜测略好,那么就称这个概念是弱可学习的。Schapire指出在PAC学习框架下,一个概念是强可学习的充分必要条件是这个概念是弱可学习的。那么对于一个学习问题,若是找到“弱学习算法”,那么可以将弱学习方法变成“强学习算法”。
这样的方法的思想与决策树的思想类似,在不同的条件下选择满足条件的算法。
对于数据集训练多个模型,对于分类问题,可以采用投票的方法,选择票数最多的类别作为最终的类别,而对于回归问题,可以采用取均值的方法,取得的均值作为最终的结果。在这样的思路里最著名的是Bagging方法.Bagging即Boostrap Aggregating,其中,Boostrap是一种有放回的抽样方法,其抽样策略是简单的随机抽样。
(图片来自参考文章2)
随机森林算法就是基于Bagging思想的学习算法。
(图片来自参考文章2)
AdaBoost和GBDT(Gradient Boosting Decision Tree)是基于Boosting思想的两个最著名的算法。