集成学习的思想是将多个弱分类器通过某种方式组合起来,组成一个强大的分类器。
俗话说,三个臭皮匠赛过诸葛亮,这句话在机器学习领域就是集成学习。
集成学习有三种类别,也就是三种不同的集成方式,分别是Bagging、Stacking、Boosting。
首先来介绍一下Bagging:
Bagging的主要思想是把数据集通过有放回的抽样方式,划分为多个数据集。利用划分好的多个数据集分别训练多个模型。将训练好的模型测试结果,如果是分类问题则进行投票,少数服从多数原则。如果是回归问题,就是求多个测试结果的平均值。
Stacking与Bagging的不同点在于,Stacking不是采用简单粗暴的少数服从多数原则。Stacking认为,每一票有不同的权重,所以将多个模型的测试结果作为全连接层的输入,全连接层的输出即为最终的结果。这样做是为了为每一个模型的测试结果乘以一个权重系数。而权重系数是自动进行学习的。
西方的总统大选,采用的是每人一票制度,每一票的权利是相同的,就像机器学习里的Bagging算法。而在其他领域,比如比赛的评奖,专家打得分占比比较高,民众的投票占比比较低,这类似与Stacking算法。
Boosting算法和前面两种算法区别较大。前面两种算法更像是并行的,每一个模型之间是独立的,独立训练独立测试。而Boosting算法是串行的,先要训练出第一个弱分类器,根据第一个弱分类器的测试结果,找出测试中出错的样本以及一部分原始样本做为第二个弱分类器的训练集,对第二个弱分类器进行训练。
此时我们已经得到两个弱分类器,现在利用两个分类器分别对原始数据的测试集进行测试,选出测试结果不同的样本做为训练集,对第三个分类器进行训练。
至此,Boosting算法的训练过程就结束了。至于Boosting的测试过程是,首先对三个弱分类器分别进行测试,如果第一个和第二个弱分类器测试结果一致,则做为测试结果。如果第一个和第二个弱分类器测试结果不一样,则用第三个测试结果做为最终结果。
集成学习,还是挺好玩的。