集成学习的方法在各个数据科学竞赛中备受青睐,翻看top1、2大佬的代码中,很多会用到随机森林、GBDT、Xgboost等等,并且确实取得了非凡的效果。个人觉得集成学习并不难理解。
个体与集成
个体:单个分类器
集成:多个分类器结合起来。所以集成学习的关键就是如何我们选择怎么样的分类器,并且这些分类器如何结合起来完成任务。
上面这张图应该是很清晰的给我们展示了集成学习的思想。其中的个体学习器通常是由一个现成的学习算法从训练集数据集中中产生,如我们之前讲过的逻辑回归、决策树、支持向量机,神经网络等等。
如果上面的T个个体学习器都是同一种算法,比如都是决策树算法,那么这种集成我们称为“决策树集成”,并且这样的集成是“同质”的,其中个体学习器称为基学习器。
如果上面的T个个体学习器并不是同一种算法,比如有些是决策树,有些是支持向量机,那么这种集成是“异质”的,其中个体学习器称为“组件学习器”。
那么我们是希望什么样的个体学习器集成起来才能更好的提升性能呢??
从上图可以看出,我们希望最后的集成学习的效果可以和(a)一样,要想获得好的集成,个体学习器应该好而不同,好是指个体学习器要有一定的“准确性”,至少准确性要高于50%,因为在二分类任务中,对于某个样本来说,就算不用分类器靠人为的猜测也是有50%的准确性的,那个体学习器的准确性肯定是要比人为猜测的准确性要高,否则就会像上图的(c)中一样;不同说的就是学习器之间要有差异性,就是“多样性”,否则就会像上图的(b)中一样。
那么集成学习中的个体分类器如何结合起来预测,看看上面这个图,也猜到了,最为简单的就是投票法,训练很多个个体学习器,新样本来了之后,输入到每个个体学习器中,这样就可以得到每个个体学习器的结果,以二分类为例,如果结果中输出的+1更多,那最终的结果就是+1类,如果输出的-1更多,那最终的结果就是-1类,这是最简单的一种方法。
那么我们可以再想想,上面说的训练出来的个体学习器要好而不同,这个时候我们就要考虑如何训练好,如何做到不同,最后更为复杂的集成方式又是什么?
出于对上面问题的种种考虑,目前的集成学习方法大致分为两大类,一种的串行训练个体学习器,这种方法的代表是Boosting,一种是并行训练分类器,这种方式的代表是Bagging和随机森林。