元算法就是对其余算法进行组合的一种方式。也称为集成算法(ensemble method),例如bagging方法和boosting方法。它能够是不一样算法的集成;也能够是同一算法在不一样设置下的集成;还能够是数据集不一样部分分配给不一样分类器以后的集成。算法
自举汇聚法(bootstrap aggregating),也成为bagging方法。bootstrap
其是从原始数据选择S次后获得S个新数据集的一种技术,新数据集和原始数据集大小相等。(每一个数据集都是从原始集合中随机选择一个样本,而后随机选择另外一个样原本替换它。有的书中,也认为是放回取样获得的——好比要获得一个大小为n的数据集,该数据集的每个样本都是在原始数据集中随机抽样获得的。所以,新的数据集可能有重复的样本,原始数据集中的某些样本也可能不在新的数据集中。)性能
在S个数据集建好后,将某个学习算法分别做用于每一个数据集获得S个分类器。对新数据分类时,选择分类器投票结果中最多的类别做为最后的分类结果。学习
Boosting和bagging相似,可是boosting经过串行训练得到不一样的分类器,每一个分类器根据已训练出的分类器的性能进行训练,集中关注被已有分类器错分的数据。测试
并且,boosting分类结果是基于全部分类器的加权求和获得的,每一个分类器的权重不相等(bagging中分类器权重相等),每一个权重表明对应分类器在上一轮迭代的成功度。spa
其中,AdaBoost是其中较为流行的版本。blog
AdaBoost是adaptive boosting(自适应boosting)的缩写。class
其过程以下:重构
①对训练数据中的每一个样本赋予一个权重,这些权重构成向量D。一开始,这些权重都相等。循环
②首先在训练数据上训练出一个弱分类器,并计算该分类器的错误率ε:
并为该分类器分配权重α:
③对该分类器进行二次训练,从新调整每一个样本的权重,第一次分对的样本权重会下降:
第一次分错的样本的权重会提升:
④进入下一轮迭代,训练新的弱分类器。
⑤直至 为0或者弱分类器数目达到指定值。
单层决策树仅基于单个特征进行决策。经过使用多棵单层决策树,就能够构造对数据集正确分类的多个弱分类器。
设最小错误率为ε=INF,数据集的样本个数为m,每一个样本的特征个数为n,当前各个样本的权重列向量为D。
①第一层循环:遍历各个特征,设当前特征为i
②第二层循环:获得该特征取值的最小值min和最大值max,设最大步长stepsize,获得步长数steps,遍历步长从-1到steps,设当前步长为j:
③第三层循环:获得当前阈值min+j*stepsize,第一种状况设大于等于阈值的样本为1类;第二种状况设小于阈值的样本为1类,其他为-1类。
④循环节:获得当前分类下分错的样本,此处基于权重向量D,获得分错样本的权重和Ecur,来评价分类器。若Ecur<ε,则更新最佳分类器和错误率。
⑤遍历结束后,获得最低错误率下分类的特征、阈值、分类不等号方向。
①初始化,设D为全1/m列向量。同时设置m维的全0列向量classEst,记录每一个样本的累计类别估计值。设置最大迭代次数。
②对每次迭代,找到当前状况下的最佳单层决策树及其最低错误率和类别向量cls。
③经过为该分类器分配权重α
④经过α调整样本权重向量D:classEst+=α*cls
⑤根据classEst的正负获得当前分类错误率,若为0,则退出迭代。
①获得测试数据在各个分类器的预测结果(1类或-1类),乘以相应分类器的权重并求和,便获得每一个测试样本的分类结果,根据其正负判断最后为1类仍是-1类。