1、第七章 集成学习报告人:曙光瑞翼教育品牌部时 间:2018年8月21日目 录集成模型决策树随机森林Adaboost01020304集成模型集成学习n定义:本身并不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务,以达到获得比单个学习器更好的学习效果的一种机器学习方法。高端点的说叫“博彩众长”,庸俗的说叫“三个臭皮匠,顶个诸葛亮”。集成模型集成学习n思路:在对新的实例进行分类的时候,把若干个单个分类器集成起来,通过对多个分类器的分类结果进行某种组合来决定最终的分类,以取得比单个分类器更好的性能。如果把单个分类器比作一个决策者的话,集成学习的方法就相当于多个决策者共同进行一
2、项决策。集成模型集成学习n原理:生成一组个体学习器,然后采用某种策略将他们结合起来。个体学习器可以由不同的学习算法生成,之间也可以按照不同的规律生成。集成模型集成学习的方法n目前接触较多的集成学习主要有2种:基于Boosting的和基于Bagging,前者的代表算法有Adaboost(提升树)、GBDT(梯度下降树),后者的代表算法主要是随机森林。nBoosting是个体学习器之间存在着强依赖关系,必须串行生成的序列化方法;Bagging是个体学习器之间没有强依赖关系,可同时并行生成。集成模型Boosting之原理集成模型Boosting之原理n从图中可以看出,首先从训练集用初始权重训练出一个
3、弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。集成模型Bagging之原理集成模型Bagging之原理n 个体弱学习器的训练集是通过随机采样得到的。通过T次的随机采样,我们就可以得到T个采样集,对于这T个采样集,我们可以分别独立的训练出T个弱学习器,再对这T个弱学习器通过集合策略来得到最终的强学习器。集成模型Boos
4、ting和Bagging的区别n1、样本选择:前者每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。后者训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。n2、样例权重:前者根据错误率不断调整样例的权值,错误率越大则权重越大;后者使用均匀取样,每个样例的权重相等。集成模型Boosting和Bagging的区别n3、预测函数:前者每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。后者所有预测函数的权重相等。n4、并行计算:前者各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果;后者各个预测函
5、数可以并行生成。决策树决策树n树形结构都比较熟悉,由节点和边两种元素组成的结构。决策树(Decision Tree)利用树结构进行决策,每一个非叶节点是一个判断条件,每一个叶子节点是结论,从跟节点开始,经过多次判断得出结论。决策树决策树案例 女儿:多大年纪了?母亲:26。女儿:长的帅不帅?母亲:挺帅的。女儿:收入高不?母亲:不算很高,中等情况。女儿:是公务员不?母亲:是,在税务局上班呢。女儿:那好,我去见见。决策树决策树案例n这个女孩的决策过程就是典型的分类树决策。n相当于通过年龄、长相、收入和是否公务员对将男人分为两个类别:见和不见。n假设这个女孩对男人的要求是:30岁以下、长相中等以上并且
6、是高收入者或中等以上收入的公务员决策树 决策树案例决策树决策树案例n上图完整表达了这个女孩决定是否见一个约会对象的策略,其中绿色节点表示判断条件,橙色节点表示决策结果,箭头表示在一个判断条件在不同情况下的决策路径n图中红色箭头表示了上面例子中女孩的决策过程决策树决策树模型构造n所谓决策树的构造就是进行属性选择度量确定各个特征属性之间的拓扑结构。关键步骤是分裂属性。所谓分裂属性就是在某个节点处按照某一特征属性的不同划分构造不同的分支,其目标是让各个分裂子集尽可能地“纯”。尽可能“纯”就是尽量让一个分裂子集中待分类项属于同一类别。决策树决策树的分裂属性n1、属性是离散值且不要求生成二叉决策树。此时
7、用属性的每一个划分作为一个分支。n2、属性是离散值且要求生成二叉决策树。此时使用属性划分的一个子集进行测试,按照“属于此子集”和“不属于此子集”分成两个分支。n3、属性是连续值。此时确定一个值作为分裂点split_point,按照split_point和from sklearn.datasets import load_iris from sklearn import tree#加载数据 iris=load_iris()#训练数据 clf=tree.DecisionTreeClassifier()clf=clf.fit(iris.data,iris.target)随机森林 随机森林n机器学习中
8、,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定,这意味着通过在分类器构造中引入随机性来创建一组不同的分类器。n对集合的预测给出了个体分类器的平均预测。随机森林 随机森林举例n通过例子来理解随机森林:有一个决策公司(集成学习器),公司里有许多的预测大师(个体学习器),我们现在要找这个决策公司对某堆(测试集)西瓜的好坏做预测(分类)或者定量预测西瓜的甜度(回归)。当然我们首先需要拿一堆西瓜N个(测试集)给这些预测大师。每个西瓜有M个属性(比如颜色、纹路、尾巴等)。随机森林 随机森林举例n 每次从N个西瓜中随机选择几个西瓜(子集),对某个预测大师进行训练,预测
9、大师学习西瓜的各种M个属性与结果的关系,比如先判断颜色如何?再判断纹路如何?再判断尾巴如何?预测大师开始预测然后自我调节学习,最后成为研究西瓜的人才。所有的预测大师都采用这种训练方式,都学成归来。测试的时候,每拿出一个西瓜,所有专家一致投票,我们把最高投票的结果作为最终结果。随机森林 随机森林的生成算法n1.从样本集中通过重采样的方式产生n个样本n2.假设样本特征数目为a,对n个样本选择a中的k个特征,用建立决策树的方式获得最佳分割点n3.重复m次,产生m棵决策树n4.多数投票机制来进行预测(需要注意的一点是,这里m是指循环的次数,n是指样本的数目,n个样本构成训练的样本集,而m次循环中又会产
10、生m个这样的样本集)随机森林 随机森林的算法图示随机森林 随机森林算法的代码 from sklearn.ensemble import RandomForestClassifier X=0,0,1,1 Y=0,1 clf=RandomForestClassifier(n_estimators=10)clf=clf.fit(X,Y)随机森林 随机森林的随机性n集合中的每一棵树都是从训练集替换出来的样本中构建的。在树构建期间分割节点时,所选择的分割不再是所有特征之间最好的分割。相反,被选中的分割是特征的随机子集之间最好的分割。由于随机性,森林的偏向通常略有增加。但是,由于平均值,它的方差也减小,从
11、而产生一个整体更好的模型随机森林 随机森林优势n随机森林算法几乎不需要输入的准备。它们不需要测算就能够处理二分特征、分类特征、数值特征的数据。随机森林算法能完成隐含特征的选择,并且提供一个很好的特征重要度的选择指标。n随机森林算法训练速度快。性能优化过程刚好又提高了模型的准确性随机森林 随机森林优势n通用性。随机森林可以应用于很多类别的模型任务。它们可以很好的处理回归问题,也能对分类问题应付自如(甚至可以产生合适的标准概率值),它们还可以用于聚类分析问题。n简洁性。对于随机森林来说,如果不是结论模型很简洁,就是学习算法本身很简洁。基本的随机森林学习算法仅用几行代码就可以写出来了。AdaBoos
12、tAdaboost算法nAdaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。AdaBoostAdaboost算法n其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。AdaBoostAdaboost算法的迭代n每个连续的迭代,样本权重分别修改和学习算法重新的加权数据。在给定的步骤中,在前一步引起的增强模型错
13、误地预测了那些训练实例,它们的权重增加,而正确预测的权重则降低。随着迭代的进行,难以预测的例子受到越来越多的影响。因此,每一个后继的弱学习者都必须集中精力于前面的序列中遗漏的例子。AdaBoostAdaboost算法步骤主要步骤:ni)重复地从一个样本集合D中采样n个样本nii)针对每次采样的子样本集,进行统计学习,获得假设Hiniii)将若干个假设进行组合,形成最终的假设Hfinalniv)将最终的假设用于具体的分类任务AdaBoostAdaBoostAdaboost算法构建过程n相关符号的定义:Dt(i):训练样本集的权值分布;Wi:每个训练样本的权值大小;h:弱分类器;H:基本分类器;H
14、final:最终的强分类器;e:误差率。AdaBoostAdaBoostAdaBoostAdaBoostAdaBoostAdaboost算法实例n给定如图所示的训练样本,弱分类器采用平行于坐标轴的直线,用Adaboost算法的实现强分类过程AdaBoostAdaboost算法实例n数据分布:将这10个样本作为训练数据,根据 X 和Y 的对应关系,可把这10个数据分为两类,图中用“+”表示类别1,用“O”表示类别-1。AdaBoostAdaBoostAdaBoostAdaboost算法实例AdaBoostAdaBoostAdaBoostAdaBoostAdaboost算法实例n第一次迭代后:n新
15、的权值分布:AdaBoostAdaboost算法实例n第一次迭代后分类函数:nf1(x)=1H1(x)=0.4236H1(x)n组合一个基本分类器sign(f1(x)作为强分类器在训练数据集上有3个误分类点(即5 7 8),此时强分类器的训练错误为:0.3AdaBoostAdaboost算法实例n第二次迭代t=2:在权值分布D2的情况下,再取三个弱分类器h1、h2和h3中误差率最小的分类器作为第2个基本分类器H2(x):AdaBoostAdaboost算法实例n当取弱分类器h1=X1=2.5时,此时被错分的样本点为“5 7 8”:误差率e=1/2;n当取弱分类器h2=X1=8.5时,此时被错分
16、的样本点为“3 4 6”:误差率e=3/14;n当取弱分类器h3=X2=6.5时,此时被错分的样本点为“1 2 9”:误差率e=3/14;AdaBoostAdaBoostAdaboost算法实例n第二次迭代后:f2(x)=0.4236H1(x)+0.6496H2(x)AdaBoostAdaboost优点nAdaboost提供一种框架,在框架内可以使用各种方法构建子分类器。可以使用简单的弱分类器,不用对特征进行筛选,也不存在过拟合的现象。n Adaboost算法不需要弱分类器的先验知识,最后得到的强分类器的分类精度依赖于所有弱分类器。无论是应用于人造数据还是真实数据,Adaboost都能显著的提
17、高学习精度。AdaBoostAdaboost优点nAdaboost算法不需要预先知道弱分类器的错误率上限,且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度,可以深挖分类器的能力。Adaboost可以根据弱分类器的反馈,自适应地调整假定的错误率,执行的效率高。n Adaboost对同一个训练样本集训练不同的弱分类器,按照一定的方法把这些弱分类器集合起来,构造一个分类能力很强的强分类器,即“三个臭皮匠赛过一个诸葛亮”。AdaBoostAdaboost缺点n在Adaboost训练过程中,Adaboost会使得难于分类样本的权值呈指数增长,训练将会过于偏向这类困难的样本,导致Adaboost
18、算法易受噪声干扰。此外,Adaboost依赖于弱分类器,而弱分类器的训练时间往往很长。AdaBoostAdaboost实现from sklearn.model_selection import cross_val_score from sklearn.datasets import load_iris from sklearn.ensemble import AdaBoostClassifier iris=load_iris()clf=AdaBoostClassifier(n_estimators=100)scores=cross_val_score(clf,iris.data,iris.target,cv=5)scores.mean()感谢您的观赏T H A N K Y O U F O R W A T C H I N G联系人:黄楠地 址:北京市海淀区东北旺西路8号中关村软件园36号楼3楼