学习视频来源:哔哩哔哩清华大学【数据挖掘:集成学习 教师:袁博】清华大学【数据挖掘:集成学习】_哔哩哔哩_bilibili
1.1 集成学习基础概念
集成学习(ensemble learning)是一种机器学习范式,通过使用多个学习器来解决同一问题,能够显著提高系统的准确率和泛化能力。它是一个框架,不是特定的某种算法。思想:按照某种策略汇集群体的智慧,效果大于个体的智慧(可以形成更优的决策)。
集成学习在机器学习领域中的地位(视频截图),如图1所示:
图1
机器学习-有监督学习 -分类问题-集成学习框架-boosting和bagging两个框架
集成学习还采用了Devide and Conquer(分而治之)思想:不同于使用神经网络拟合复杂的非线性分界面,Devide and Conquer思想是生成许多简单的分界面,用简单的分界面组合出复杂的分界面。
以分类问题为例,集成学习的意义在于多个分类器是“不同的”,这样才能集思广益。如果这些分类器是相同的,那么久白白浪费集成学习所占用的资源。“不同”可以体现在算法不同、分类器的初始参数、训练集、提取的特征不同(特征不同但是互相之间有关联)。
图2
1.2 并行的Bagging与Stacking
Bagging即Bootstrap Aggregating,是集成学习的一种方式,代表有随机森林(多个不同的决策树组成随机森林)。它对已知的有限的数据集采用均匀、又放回的选取,可产生不同的训练样本用于训练不同的分类器,在测试时每个分类器都要有各自的输出,将这些输出按照少数服从多数的原则得到最终结果(取所有分类器结果的众数作为最终输出结果)。Bagging对于训练集和测试集的切分不同于传统分类器需要人为干预,因为可按照极限计算的方式,得出无穷多次选取后,数据集中每一个元素被抽取的概率近似2/3,那么没有被选中的近1/3样本自动作为测试集,注意同一个样本不能既作为训练样本又作为测试样本。以随机森林为例,如果数据集有100个特征可以用于分类,那么训练的时候,自动选取部分特征进行训练(如随机选择100的平方根个特征,即10个特征),使得每一棵决策树的属性不一样而产生“不同”。随机森林可以弱化、稀释每一棵决策树过学习对决策结果的负面影响。
上述Bagging采用少数服从多数的方法选择最终结果,没有对每一个分类器的权重做出区分。如果区分分类器的权重,让这个权重也作为可训练的参数,有望提高模型的精度。Stacking算法就是按照这样的思路设计的,它包含2层训练,第1层训练和Bagging一模一样,标签为yi,得到k个分类器;第2层训练是为了得到这k个分类器的权重,标签仍然为yi。
图3
1.3 串行的Boosting
Boosting也是集成学习下的一大类算法,与并行的Bagging类算法不同的是,Boosting算法下的分类器是顺序生成并训练的,前后训练器之间有紧密的关联。
图4 Boosting训练流程1
基本流程如图4所示,以训练3个分类器解决二分类问题为例,先从数据集D中随机选取若干个元素生成分类器C1的训练集D1,再在数据集D中测试(【存疑】不确定是否挨个测试),分别选取部分测试结果正确的和错误的样本组成新的训练集D2用于分类器C2的训练。生成D2的目的是为了让C2更专注于学习C1分错了的样本。 样本被选中的概率被加权,如果上一级分类器将它分错了,那么下一级分类器选取它作为训练集的概率的权重相应增大(更倾向于选择学习上一级分错的样本),反之亦然。样本被选择时的权重不同,导致接下来的分类器更有针对性的进行训练。权重作为一个参数,也是被训练出来的,而不是人为设定。
图5 Boosting训练流程2
上述步骤后得到了分类器C1和C2,两者都在数据集D中测试,找出两者判断不同的那些样本组成新的训练集D3用于分类器C3的训练,C3作为C1和C2的判断出现分歧时的仲裁。【存疑】:O1和O2都分错了的样本,就能逃过D3的生成并再次用于训练,对模型的性能有什么影响?
上述3个分类器组成的模型的实际应用:三者都测试新的输入x,各自的输出为O1、O2、O3,当O1和O2相等的时候,模型的输出选取O1(此时O1=O2);当O1和O2不相等的时候,采取仲裁分类器C3的结果O3作为模型的输出。
图6 Boosting VS Bagging
相比于降低方差的Bagging(模型的方差指训练集的不同导致的模型生成的分类边界面的波动),Boosting更注重准确率的提升,因为它对于样本进行加权,每一级分类器更有针对性地训练。Boosting的每一级分类器可以比Bagging的每一个分类器简单许多,要求每一级分类器比随机分类的结果好就行,通过多级分类器的串行就能达到很好的分类效果。
以Boosting的代表算法AdaBoosting来生成包含3级子分类器的模型解决一个二分类问题。设每个分类器的分界面要么水平要么垂直。
(a)C1分界面及其分错的样本 (b)C2分界面及其分错的样本 (c)C3分界面
图7 C1、C2、C3分类器的实例
训练得到分界面垂直的C1,红色虚线内是其分错的样本,将以很高的权重形成D2。以D2训练得到的C2的分界面为水平,红色虚线内是其分错的样本,将以很高的权重形成D3。以D3训练得到的C3的分界面为垂直。将三者结合起来,可得到如图8所示的模型,该模型准确率很高:
图8 C1、C2、C3形成的最终分类器
这就是用AdaBoosting算法串行训练3个简单分类器形成复杂分界面的例子。