5.6组合方法组合方法是什么想法:聚集多个分类器的预测来提高分类准确率实现方式:即从原数据抽取n个数据集训练n个分类器OriginalTrainingdata....D1D2Dt-1DtDStep1:CreateMultipleDataSetsC1C2Ct-1CtStep2:BuildMultipleClassifiersC*Step3:CombineClassifiers2为什么引入组合方法假定有25基分类器每个基分类器的误差均为=0.35成功率0.65,弱分类器,仅比瞎猜强一点假定基分类器是独立的组合分类器错误预测的概率为:成功率0.94因此多个弱分类器组合后可以成为强分类器25132506.0)1(25iiii2020年1月23日星期四数据挖掘导论3两种主要的组合方式装袋法bagging含义样本集来源于重复抽样,选取总数据集的一部分装入各个袋中随机森林randomforest增强对分类器随机性的限制(每棵树都不一样)提升法boosting含义提升每次训练中样本集被错分样本的权重adaboost(adaptiveboosting)对分类器赋予可调整的权重2020年1月23日星期四数据挖掘导论4Baggingbaggingmethod的思想:假设一个数据集,通过Boostrap(自助抽样)有放回的抽样n次,那么产生了n个样本数据集,记为n个train集。第一步:我们将这n个train集进行训练,因此产生了n个基分类器,也可以说是n个决策树第二步:利用这n个基分类器对测试集进行预测,因此会得到n个结果。第三步:采取多数投票(majortyvote):将n个预测的结果出现频率最高的类作为总体预测。2020年1月23日星期四数据挖掘导论5Bagging存在的问题如果一个数据集有一个很强的预测变量和一些中等强度的预测变量,那么大多数的树都会将最强的预测变量用于顶部分裂点,这会造成所有的装袋法树看起来都很相似。对许多高度相关的量求平均带来的方差减小程度是无法与与不相关的量求平均(随机森林)相提并论的。在这种情况下,装袋法与单棵树相比不会明显降低方差。那么下面我们来看看改进版的装袋法randomforests2020年1月23日星期四数据挖掘导论6RandomForest是什么随机森林顾名思义,是用随机的方式建立一个森林,森林由决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类,然后看看哪一类被选择最多,就预测这个样本为那一类。2020年1月23日星期四数据挖掘导论7randomforest的步骤1.假如有N个样本,则有放回的随机选择N个样本(每次随机选择一个样本,然后返回继续选择)。这选择好了的N个样本用来训练一个决策树,作为决策树根节点处的样本。(即前面所讲的bagging方法)2.当每个样本有M个属性时,在决策树的每个节点需要分裂时,随机从这M个属性中选取出m个属性,满足条件mM。然后从这m个属性中采用某种策略(比如说信息增益)来选择1个属性作为该节点的分裂属性。3.决策树形成过程中每个节点都要按照步骤2来分裂(很容易理解,如果下一次该节点选出来的那一个属性是刚刚其父节点分裂时用过的属性,则该节点已经达到了叶子节点,无须继续分裂了)。一直到不能够再分裂为止。注意整个决策树形成过程中没有进行剪枝。4.按照步骤1~3建立大量的决策树,这样就构成随机森林。2020年1月23日星期四数据挖掘导论8图解随机森林91.有放回抽取子数据集的元素(可以重复)2.利用子数据集来训练子决策树,每个子决策树输出一个结果。3.最后,如果有了新的数据需要通过随机森林得到分类结果,就可以通过对子决策树的判断结果的投票,得到随机森林的输出结果了。随机森林的分裂特征选取10随机森林中的子树的每一个分裂过程并未用到所有的待选特征,而是从所有的待选特征中随机选取一部分特征,之后再在随机选取的特征中选取最优的特征。这样能够使得随机森林中的决策树都能够彼此不同,提升系统的多样性,从而提升分类性能。下图中,蓝色的方块代表所有可以被选择的特征,黄色的方块是分裂特征。左边是一棵决策树的特征选取过程,通过在待选特征中选取最优的分裂特征(ID3算法,C4.5算法,CART算法等),完成分裂。右边是一个随机森林中的子树的特征选取过程。RandomForest的R语言实现2020年1月23日星期四数据挖掘导论11RandomForest的R语言实现2020年1月23日星期四数据挖掘导论12RandomForest的R语言实现2020年1月23日星期四数据挖掘导论13Boostingboosting是将弱学习算法提升为强学习算法的一类算法。先从初始训练集训练一个基学习器。再根据基学习器的表现对训练样本分布进行重调,使得先前基学习器做错的样本在后续受到更多的关注然后,基于调整后的样本分布来训练下一个基学习器一直重复上述步骤,直到基学习器的个数达到train前的指定数T,然后将这T个基学习器进行加权2020年1月23日星期四数据挖掘导论14Adaboost4步简介一种流行的boosting方法基本思想令{(xj,yj)|j=1,2,...,N}表示包含N个训练样本的集合训练1.每个训练样本一个抽样权重wj.初始,wj=1/N,i=12.采用有放回、等容量、加权抽样,产生训练集,3.训练计算基分类器权重4.计算Ci的分类误差i,并调整每个记录的抽样权重wj最后结果:组合分类器预测1*()argmax(())kjjjyCICyxx2020年1月23日星期四数据挖掘导论15j图解adaboost2020年1月23日星期四数据挖掘导论16图解adaboost2020年1月23日星期四数据挖掘导论17图解adaboost2020年1月23日星期四数据挖掘导论18图解adaboost2020年1月23日星期四数据挖掘导论19图解adaboost2020年1月23日星期四数据挖掘导论20图解adaboost2020年1月23日星期四数据挖掘导论21图解adaboost2020年1月23日星期四数据挖掘导论22Adaboost2020年1月23日星期四数据挖掘导论23Adaboost算法2020年1月23日星期四24Adaboost参数1.分类错误率=错误分类个数/所有样本个数2.基分类器的权重3.样本权值更新1.2.规范化诸wi,使得11ln2iii()()jjijiiijiweCywweCyiixx如果如果1iiw2020年1月23日星期四数据挖掘导论25iiiadaboostR代码实现2020年1月23日星期四数据挖掘导论26