本发明涉及人工智能技术领域,尤其涉及支持向量机学习和集成学习方法,更具体的是涉及一种boosting支持向量机学习方法。
背景技术:
由corinnacortes和vapnik等提出的支持向量机(supportvectormachine,svm)是一种基于统计学习理论的机器学习方法,作为一种新的通用机器学习方法,它具有简洁的数学形式、标准快捷的训练方法和良好的泛化性能,目前已经成功应用于模式识别、回归估计及概率密度估计等众多领域。然而,目前关于svm的多学习器学习方法研究甚少,而多学习器学习可以有效提高学习的泛化能力。因此,研究svm的多学习器学习方法具有重要的理论意义和直接的应用价值。
集成学习技术作为多学习器学习方法的一种可以有效地提高机器学习的泛化能力,其研究始于二十世纪九十年代,目前对集成学习理论和算法的研究已成为机器学习的一个热点,国际权威dietterich将集成学习列为机器学习四大研究之首。集成学习技术现已成功应用于机器学习的多个领域,如:人脸识别、光学字符识别、精确图像分析、医学分析和地震信号分类等。
在集成学习的发展过程中,有两项重要工作对其起到了关键的推动作用:第一、hansen和
salamon使用一组神经网络来解决问题,他们尝试通过投票法将所有神经网络结合起来,实验产生了有趣的现象,即这一组神经网络的集成结果并非比最好的个体差些,比最差的个体好些,而是比最好的个体神经网络的性能还好。这一超乎直觉的结果使集成学习引起很多学者的重视,在二十世纪九十年代前期集成学习技术被广泛应用到多个领域并受到良好的效果。第二,schapire用boosting算法对kearns和valiant提出的弱学习算法与强学习算法的等价性问题进行了构造性证明,因为boosting算法要求事先知道学习算法的泛化能力下界,而这个下界是难以获得的,所以并不能解决真实问题。freund和schapire进一步提出adaboost算法,该算法不再要求事先知道泛化下界,可以非常容易的应用到实际的问题中去。breiman提出了与boosting相似的技术一一bagging,进一步促进了集成学习的发展。
集成学习是一个迅速发展中的研究领域,从其出现到目前为止,短短十几年的时间,它己经广泛应用于语言识别、文本过滤、遥感信息处理、疾病诊断等众多领域,尤其是2001年zhou等人提出了“选择性集成”概念后,在国内外引起了很大的反响,把集成学习带入了一个崭新的发展阶段,使得人们从更深的层次、更广大的领域对集成学习展开了进一步的研究。
有效的集成模型关键是构造的各基分类器应当是准确而有差异的。差异性要求基分类器是相互独立的,事实上,如果基分类器之间是负相关的,则集成可获得更好的泛化性能。一些研究表明,集成学习一定程度上克服了以下三个问题,使得泛化性能得到提高:
1)、统计问题。当可获得的训练样本数目充分时,一些算法确实可以找到最优的学习机。但实际上训练样本是有限的,学习算法只能找到许多预测精度相等的学习机,虽然可以从中选择最简单或者说复杂度最低的,但存在的风险是该学习机对于未知样本的预测精度却很低。采用若干个学习机进行组合可以降低这种风险。
2)、计算问题。寻找对训练数据拟合最好的学习机计算量太大,因而需要采用启发式搜索方法,但是其学习的结果通常与目标存在一定距离。集成学习是对这些并不完美的搜索方法的一种补偿。
3)、描述问题。当学习算法描述能力有限,搜索范围太小,以至于不包含目标函数或者关于目标函数的较好的逼近函数,其学习结果也就无法令人满意。虽然许多学习算法具有一致逼近性,当数据有限时渐进特性不再成立,学习算法的搜索空间是可获得训练数据的函数,可能远小于渐进情形下所考虑的假设空间。集成学习可以拓展函数空间,从而获得对目标函数更准确的逼近。
boosting算法是在训练中先后产生一系列学习机,各个学习机所使用的训练集都是从总训练集提出来的一个子集,各个样本是否出现在该子集中取决于此前产生过的学习机的表现,已有学习机判断出错的样本将以较大的概率出现在新的训练子集中。这使得其后产生的学习机更加专注于处理对己有学习机来说较为困难的样本区分问题。
集成学习是一种新的机器学习范式,它使用多个学习器来解决同一个问题,能够显著地提高学习系统的泛化能力,因此从20世纪90年代开始,集成学习逐渐成为了机器学习领域的一个新的热点。在实际分类问题中,为了减少损失和失误的概率,往往会对分类方法提出更高的要求,使其达到尽可能高的分类精确率,例如,行星探测、地震波分析、web信息过滤、生物特征识别、计算机辅助医疗诊断等一些需要精确分类的实际项目。但是集成学习方法目前还不能满足这样的高精度要求。基于此类现实问题的考虑,发明一种高精度的集成学习方法是十分有必要的。
技术实现要素:
本发明的目的在于:为了解决现有的集成学习方法精度不够高,不能满足高精确率项目的要求的问题,本发明提供一种boosting支持向量机学习方法,结合支持向量机与boosting算法的思想,提出提升支持向量机算法,提高模式识别中分类器设计的重采样技术的学习精度并且保证稳定的学习能力,优化分类效果,使得分类精确率大大提升。
本发明为了实现上述目的具体采用以下技术方案:
一种boosting支持向量机学习方法,其特征在于,包括以下步骤:
步骤1:数据处理,对初始支持向量机分类器进行参数γ的选择;
步骤2:初始化权值,选取n个训练样本组成总数据集[(x1,y1),…,(xn,yn)],其中
xi∈x,yi∈y={-1,+1}(x为x1,...,xn的集合),初始化每个训练样本的权值d1(i)=1/n;
步骤3:从步骤2中的n个训练样本中任意选取k个样本,组成首轮数据集并结合步骤1中的参数γ进行训练,得到训练数据集,进入循环迭代,循环迭代总次数为t,当前循环迭代次数为t;
步骤4:根据训练数据集和svm学习算法得出分类器ht:x→{-1,+1};
步骤5:将分类器ht应用于总数据集,对总数据集进行预测,分别对分类器ht分类正确和错误的训练样本进行标记,并根据分类错误的训练样本确定误差εt,计算分类器ht的分类误差αt,计算公式为:
步骤6:根据步骤5得出的分类误差αt更新训练数据集中所有训练样本的权值dt+1(i),计算公式为:
dt+1(i)=dt(i)exp(-αtyiht(xi))/zt
式中,zt为dt+1分布的归一化函数;
步骤7:更新t值,使t=t+1,当t≤t时,返回步骤4,继续下一轮循环迭代;当t>t时,结束循环;
步骤8:通过t次循环,便得到最终分类器h(x),计算公式为:
上述技术方案中,所述步骤1中的数据处理具体包括以下几个步骤:
步骤1.1:将实际问题数据化,转化成svm可以处理的数据格式;
步骤1.2:对步骤1.1中经过转化处理的数据实行归一化处理。
上述技术方案中,所述步骤1采用网格法对参数γ进行选择,参数γ是svm训练时采用的核函数,另外还涉及到另一个参数c(惩罚因子),参数γ和参数c组成参数对(γ,c),首先对参数进行网格搜索,即采用穷举法尝试各种可能的参数对值,然后进行交叉验证,找出使交叉验证精确度最高的参数对,参数选择的目标是找到好的参数对,使得分类器能够精确地预测未知的数据。
在boosting算法中,在每一次迭代时按照当前的样本分布权值ωi,j进行学习,根据最小化的原则从弱分类器集中选取最有效的弱分类器εi,j=∑iωi,j|hj(xi)-yi|。弱训练样本在本次迭代中被分错,则加重分布权值。反之,则减小权值。这样便可利用加重错误分类样本的权值来迫使算法在接下来的迭代中重点学习这些错分样本。一般来说,当每次迭代选取出的弱分类器的训练误差小于50%时,强分类器的训练误差会随着迭代次数以指数形式下降并趋向于零。整个过程如下所示:
(1)先通过对n个训练数据的学习得到第一个弱分类器h1;
(2)将h1分错的数据和其他的新数据一起构成一个新的有n个训练数据的样本,通过对这个样本的学习得到第二个弱分类器h2;
(3)将h1和h2都分错了的数据加上其他的新数据构成另一个新的有n个训练数据的样本,通过对这个样本的学习得到第三个弱分类器h3;
(4)最终得到提升的强分类器hfinal=majorityvote(h1,h2,h3),即某个数据被分为哪一类要通过h1,h2,h3的多数表决。
boosting算法可以增强给定算法的泛化能力,但是还存在两个缺点:该方法需要知道弱学习机学习正确率的下限,而这在实际问题中是很难做到的;其次,这一方法可能导致后来的学习机过分集中于少数特别困难的样本,导致表现不稳定,并且对于boosting算法的实现来说,也有两个困难:
(1)如何调整训练集,使得在训练集上训练弱分类器得以进行。
(2)如何将训练得到的各个弱分类器联合起来形成强分类器。
针对以上两个问题,adaboost算法进行了调整:
(1)使用加权后选取的训练数据代替随机选取的训练数据,这样将训练的焦点集中在比较难分的训练数据上。
(2)将弱分类器联合起来时,使用加权的投票机制代替平均投票机制。让分类效果好的弱分类器具有较大的权重,而分类效果较差的分类器具有较小的权重。
与boosting算法不同的是,adaboost算法不需要预先知道弱学习算法学习正确率的下限即弱分类器的误差,并且最后得到的强分类器的分类精度依赖于所有弱分类器的分类精度,这样可以深入挖掘弱分类器算法的潜力。
adaboost算法中不同的训练集是通过调整每个样本对应的权重来实现的。开始时,每个样本对应的权值是相同的,即ui(i)=1/n(i=1,...,n),其中n为样本个数,在此样本分布下训练出一弱分类器h1。对于h1分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被突出出来,从而得到一个新的样本分布ui。在新的样本分布下,再次对弱分类器进行训练,得到弱分类器h2。以此类推,经过t次循环,得到t个弱分类器,把这t个弱分类器按一定的权重叠加起来,得到最终想要的强分类器。
支持向量机建立在统计学习理论的vc维概念和结构风险最小化原理基础上,我们利用有限样本信息在模型复杂性(即对特定训练样本的学习精度)和学习能力(即无错误地识别任意样本的能力)之间寻求折衷,以获得好的泛化能力。
支持向量机专门针对有限样本,寻求现有信息下的最优解,而不是样本趋于无穷大时的最优解。通过将最优分类超平面的构建问题转化为二次型寻优问题,从而获得全局最优点,解决了在神经网络方法中无法避免的局部极值问题。优化问题的解是一组支持向量,确定了支持向量机的结构,决定了类别之间的界限,而其它样本在分类中不起任何作用,不像神经网络等算法通常会用到全部或者大多数样本的统计信息。由于样本在模型中仅以点积的形式出现,因此很容易从线性模型推广到非线性模型。通过非线性函数将数据映射到高维特征空间,然后在此空间中构造线性判别函数,实现原始空间中的非线性判别函数。巧妙地避免了映射函数的显式构造,无需知道其具体形式。支持向量机具有清晰的几何意义,可以根据其几何性质来选择模型结构,构造学习方法。
本发明的有益效果如下:
1、本发明结合了支持向量机与adaboost方法的思想,提出了提升支持向量机这个新的分类方法,支持向量机避开了从归纳到演绎的传统过程,大大简化了通常的分类和回归等问题,而adaboost方法,容易实现,能够降低泛化错误率,本发明将支持向量机的方法融入adaboost方法,大大降低了泛化错误率,提高了学习精度,并且本发明的方法不仅可应用于两类分类,还可用于多类分类任务,具有优异的学习性能,能够达到更高的分类效果。
2、本发明提出了提升支持向量机算法,结合了svm和adaboost的思想,其中,svm有着比较完善的理论基础,较好的学习分类性能,特别是在较小数据集上,也能达到不错的分类效果,而作为集成学习的adaboost方法具有实现简单、灵活、易于理解的优点,考虑到影响分类准确率的往往是少数样本,而提升支持向量机算法是重点分析错误分类的样本,使分类错误的样本能够得到多次的学习,从而使模型更加适应这些容易被错误分类的样本,达到更高效的分类效果,提高学习机的泛化能力。
3、本发明将svm作为adaboost的基本分类器,svm在弱分类器中有着很出色的分类效果,而adaboost能够将弱分类器组合成一个强分类器,组合的方法是加权多数表决的一方,即加大分类误差率小的弱分类器的权值,使其在表决中起较大作用,减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用,通过svm和adaboost的结合,便能够达到更优异的分类效果,提高分类精确度。
附图说明
图1是本发明应用于二分类问题的流程图。
图2是本发明应用于多分类问题的流程图。
具体实施方式
为了本技术领域的人员更好的理解本发明,下面结合附图和以下实施例对本发明作进一步详细描述。
实施例1
如图1所示,本实施例提出了一种boosting支持向量机学习方法,包括以下步骤:
步骤1:数据处理,采用网格法对初始支持向量机分类器进行参数γ的选择;
具体的,步骤1中的数据处理具体包括以下两个步骤:
步骤1.1:将实际问题数据化,转化成svm可以处理的数据格式;
步骤1.2:对步骤1.1中经过转化处理的数据实行归一化处理;
步骤2:初始化权值,选取n个训练样本组成总数据集[(x1,y1),…,(xn,yn)],其中xi∈x,yi∈y={-1,+1}(x为x1,...,xn的集合),初始化每个训练样本的权值d1(i)=1/n;
步骤3:从步骤2中的n个训练样本中任意选取k个样本,组成首轮数据集并结合步骤1中的参数γ进行训练,得到训练数据集,进入循环迭代,循环迭代总次数为t,当前循环迭代次数为t;
步骤4:根据训练数据集和svm学习算法得出分类器ht:x→{-1,+1};
步骤5:将分类器ht应用于总数据集,对总数据集进行预测,分别对分类器ht分类正确和错误的训练样本进行标记,并根据分类错误的训练样本确定误差εt,计算分类器ht的分类误差αt,计算公式为:
步骤6:根据步骤5得出的分类误差αt更新训练数据集中所有训练样本的权值dt+1(i),计算公式为:
dt+1(i)=dt(i)exp(-αtyiht(xi))/zt
式中,zt为dt+1分布的归一化函数;
步骤7:更新t值,使t=t+1,当t≤t时,返回步骤4,继续下一轮循环迭代;当t>t时,结束循环;
步骤8:通过t次循环,便得到最终分类器h(x),计算公式为:
本实施例中,采用网格法对参数γ进行选择,参数γ是svm训练时采用的核函数,另外还涉及到另一个参数c(惩罚因子),参数γ和参数c组成参数对(γ,c),首先对参数进行网格搜索,即采用穷举法尝试各种可能的参数对值,由于参数选择的目标是找到好的参数对,使得分类器能够精确地预测未知的数据,因此对参数对值进行交叉验证,得到使交叉验证精确度最高的参数对。
本实施例将svm作为adaboost的基本分类器,svm在弱分类器中有着很出色的分类效果,而adaboost能够将弱分类器组合成一个强分类器,组合的方法是加权多数表决的一方,即加大分类误差率小的弱分类器的权值,使其在表决中起较大作用,减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用,通过svm和adaboost的结合,便能够达到更优异的分类效果,大大降低了泛化错误率,提高了学习精度。
实施例2
如图2所示,本实施例在实施例1的基础之上提出了使用提升支持向量机方法解决多分类问题的方法,最初svm是用以解决两类分类问题,不能直接用于多类分类,但可以有效地将其推广到多类分类问题,这些算法统称为“多类支持向量机”,可以大致分为两大类:
(1)通过某种方式构造一系列的两类分类器并将它们组合在一起来实现多类分类;
(2)将多个分类面的参数求解合并到一个最优化问题中,通过求解该最优化问题“一次性”地实现多类分类。
第二类方法尽管看起来简洁,但是在最优化问题求解过程中的变量远远多于第一类方法,训练速度不及第一类方法,而且在分类精度上也不占优,当训练样本数非常大时,这一问题更加突出,正因如此,第一类方法更为常用,也是本发明所采用的方法,采用循环迭代操作,选择k个数据样本后,根据一对一分类方法,通过多次训练数据得出k(k-1)个svm学习机,然后用这k(k-1)个分类器对所有样本进行预测。
以上所述,仅为本发明的较佳实施例,并不用以限制本发明,本发明的专利保护范围以权利要求书为准,凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。