一种支持向量机的并行训练方法及装置与流程

文档序号:11952080阅读:413来源:国知局
一种支持向量机的并行训练方法及装置与流程

本发明涉及数据处理领域,特别涉及一种支持向量机的并行训练方法及装置。



背景技术:

支持向量机(Support Vector Machines,SVM)于1995年由Cortes和Vapnik提出,用于对数据进行分类。它是一种二分类模型训练方法,其基本模型是定义在特征空间上的间隔最大的线性分类器。支持向量机还包括核技巧(kernel trick),这使它成为实质上的非线性分类器,其分类策略是找到最大间隔超平面,进而进行数据分类。它可以形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数最小化问题。支持向量机具有许多特有的优势,比如分类正确率较高,可解决非线性数据分类问题等。而如何对支持向量机模型进行训练,使得到的最大间隔分离超平面最优化是模型训练方法的核心问题。

现有技术中,对支持向量机模型的并行训练方法目前主要有以下两种:

层叠支持向量机(CascadeSVM)又称级联支持向量机,层叠支持向量机是设计在分布式系统上的多层次模型训练方法,采用分而治之的思想训练SVM模型。常用序列最小最优化算法(Sequential Minimal Optimization,SMO)对Cascade SVM的目标函数进行求解。拥有P个结点的CascadeSVM系统有log(P)+1层,并且,将整个训练样本集(TD)划分成P个子集(TD1,TD2,…,TDp),每一个子集TDi都被当做一个独立的子模型进行训练。在训练过程中,逐步从所有训练样本里挑选出拉格朗日乘子非0的特定样本,即支持向量。支持向量集SV是其训练样本集的子集每一个子模型都会产生它自己的支持向量,且仅有支持向量能从当前层传递到下一层,作为下一层子模型的输入训练样本集。通过将最后一层产生的结果反馈到第一层,测试最后一层产生的支持向量是否已在全局收敛,以此决定是否结束模型训练。

P-packSVM是针对带任意核函数的支持向量机的并行模型训练方法。该方法使用了近年来非常流行的随机梯度下降算法来求解原始目标函数。通过使用分布式哈希表,将样本均匀分发到所有处理器,提高了训练并行化程度,加速整个训练过程。同时引入打包策略,将随机梯度下降中一次迭代只更新一个样本的方式变为一次迭代处理多个样本,降低了机器间的通信频率,减少了模型训练的运行时间。其中,随机梯度下降(Stochastic Gradient Descent,SGD)是近年非常流行的一种SVM目标函数的求解算法。它基于单个样本来更新权值,并获得梯度下降搜索的近似值。随机梯度下降以迭代的方式每次接收一个被标签化的样本,通过在相关瞬时目标函数上执行梯度下降,对模型的权值进行更新。并且,随着参与迭代的样本数量的增长,随机梯度下降逐渐收敛于SVM的最优解。

可见,CascadeSVM采用级联的方式,将数据进行分块,增加了模型训练的并行度,但是,当处理具有较宽软间隔的较难分类的数据集时,总体支持向量的个数会变得非常庞大。由于CascadeSVM最后一个阶段仅能被运行在单一机器上,限制了模型训练整体效率的提升,运行时间较长。

P-packSVM在训练过程中无法限制模型规模的增长,这将导致模型训练时间复杂度是训练样本个数的平方。同时,P-packSVM模型训练过程中使用了随机梯度下降,对于非线性带核函数的支持向量机而言,它需花费较长时间才能获得最优解,甚至有时无法收敛到全局最优,这将导致P-packSVM方法训练出的模型在测试集上无法获得较高的准确率。



技术实现要素:

本发明实施例公开了一种支持向量机的并行训练方法及装置,用于解决现有的支持向量机训练方法存在的运行时间长及分类准确率低的问题。技术方案如下:

第一方面,本发明实施例提供了一种支持向量机的并行训练方法,包括:

步骤1:获取训练样本集,并将所述训练样本集划分为n个子训练样本集,其中,n为偶数;

步骤2:对所述n个子训练样本集进行并行训练,得到n组支持向量,其中,所述子训练样本集与所述支持向量具有唯一对应性;

步骤3:将所述n组支持向量每两组归并为一组,得到n/2组支持向量;

步骤4:将所述n/2组支持向量中的每组支持向量作为一个子训练样本集,返回步骤2,直到训练次数达到预设值后,得到初始支持向量,执行步骤5,其中,每个所述初始支持向量携带其真实标签yi及拉格朗日乘子m为所述初始支持向量的数量;

步骤5:从所述初始支持向量中选取r个作为目标样本集;

步骤6:令ω=sv,根据所述初始支持向量的真实标签yi及拉格朗日乘子确定当前权值ω表达式,根据所述初始支持向量的拉格朗日乘子确定每个目标样本集中样本的拉格朗日乘子αi,并根据ω确定每个目标样本集中样本的预测标签y′i,其中,s初始化为1;

步骤7:遍历所述目标样本集,每遍历一个所述目标样本集中样本,将s更新为其倍,并根据该目标样本集中样本的预测标签y′i判断该目标样本集中样本分类是否正确,如果正确,执行步骤8,否则,执行步骤9,其中,t为预设的目标样本集确定次数;

步骤8:根据当前s值对当前未遍历的目标样本集中样本的预测标签进行更新,继续遍历所述目标样本集,直至遍历结束;

步骤9:确定更新后的该目标样本集中样本的拉格朗日乘子αi,并将该更新后的目标样本集中样本的拉格朗日乘子αi记录在预先建立的哈希表中,并根据当前s值及更新后的αi对当前未遍历的目标样本集中样本的预测标签进行更新,继续遍历所述目标样本集,直至遍历结束,其中,更新后的该目标样本集中样本的拉格朗日乘子αi为其倍,λ为正则化参数;

步骤10:在所述目标样本集遍历结束后,根据所述哈希表,将分类不正确的目标样本集中样本的拉格朗日乘子进行更新;

步骤11:返回步骤5,直到达到预设的目标样本集确定次数后,遍历当前的初始支持向量,选取当前对应拉格朗日乘子不为0的初始支持向量作为最终支持向量进行线性加权得到v,根据ω=sv及f(x)=ωx确定最大间隔分离超平面方程f(x),完成分类模型训练。

优选的,所述对所述n个子训练样本集进行并行训练,得到n组支持向量具体为:

通过序列最小最优化算法SMO对所述n个子训练样本集进行并行训练,得到n组支持向量。

优选的,根据所述真实标签yi及拉格朗日乘子所确定的当前权值ω表达式为:

<mrow> <mi>&omega;</mi> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <msubsup> <mi>&alpha;</mi> <mi>i</mi> <mo>*</mo> </msubsup> <msub> <mi>y</mi> <mi>i</mi> </msub> <mi>&phi;</mi> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow>

其中,m为所述初始支持向量的数量,为所述初始支持向量xi的拉格朗日乘子,yi为所述初始支持向量xi的真实标签,φ(xi)为所述初始支持向量xi的映射函数。

优选的,所述预测标签y′i通过以下公式确定:

y′i=<ω,φ(xi)>

其中,ω为所述当前权值,φ(xi)为所述目标样本集中样本xi的映射函数。

优选的,所述根据该目标样本集中样本的预测标签y′i判断该目标样本集中样本分类是否正确具体为:

判断所述该目标样本集中样本的预测标签y′i与该目标样本集中样本的真实标签yi的乘积是否小于1;

如果小于1,则分类不正确,否则分类正确。

优选的,所述预设的目标样本集确定次数t为用户设定的迭代次数与每次从所述初始支持向量中选取的初始支持向量数量r的比值。

优选的,所述根据当前s值对当前未遍历的目标样本集中样本的预测标签进行更新具体为:

将当前权值ω更新为其s倍;

根据公式y′i=<ω,φ(xi)>对当前未遍历的目标样本集中样本的预测标签进行更新,其中,ω为当前更新后的权值。

优选的,所述根据当前s值及更新后的αi对当前未遍历的目标样本集中样本的预测标签进行更新具体为:

将当前权值ω表达式中与该分类不正确的目标样本集中样本对应的项更新为αiyiφ(xi)后,将当前权值ω更新为其s倍,其中,αi为更新后的该目标样本集中样本的拉格朗日乘子;

根据公式y′i=<ω,φ(xi)>对当前未遍历的目标样本集中样本的预测标签进行更新,其中,ω为当前更新后的权值。

优选的,所述哈希表的建立方式具体为:

为每个所述初始支持向量设定不同的长整形标识;

将所述长整形标识作为键,将与所述长整形标识对应的初始支持向量、该初始支持向量的真实标签yi及拉格朗日乘子作为值,以键值对形式存储在数据表中,得到所述哈希表;

相应的,所述将该更新后的该目标样本集中样本的拉格朗日乘子αi记录在预先建立的哈希表中具体为:

将所述长整形标识作为键,将与所述长整形标识对应的初始支持向量、该初始支持向量的真实标签yi及该更新后的该目标样本集中样本的拉格朗日乘子αi作为值,以键值对形式存储在所述哈希表中。

第二方面,本发明实施例还提供了一种支持向量机的并行训练装置,包括:

获取模块,用于获取训练样本集,并将所述训练样本集划分为n个子训练样本集,其中,n为偶数;

训练模块,用于对所述n个子训练样本集进行并行训练,得到n组支持向量,其中,所述子训练样本集与所述支持向量具有唯一对应性;

归并模块,用于将所述n组支持向量每两组归并为一组,得到n/2组支持向量;

返回模块,用于将所述n/2组支持向量中的每组支持向量作为一个子训练样本集,执行训练模块,直到训练次数达到预设值后,得到初始支持向量,执行选取模块,其中,每个所述初始支持向量携带其真实标签yi及拉格朗日乘子m为所述初始支持向量的数量;

选取模块,用于从所述初始支持向量中选取r个作为目标样本集;

第一确定模块,用于令ω=sv,根据所述初始支持向量的真实标签yi及拉格朗日乘子确定当前权值ω表达式,根据所述初始支持向量的拉格朗日乘子确定每个目标样本集中样本的拉格朗日乘子αi,并根据ω确定每个目标样本集中样本的预测标签y′i,其中,s初始化为1;

判断模块,用于遍历所述目标样本集,每遍历一个所述目标样本集中样本,将s更新为其倍,并根据该目标样本集中样本的预测标签y′i判断该目标样本集中样本分类是否正确,如果正确,执行第一更新模块,否则,执行第二更新模块,其中,t为预设的目标样本集确定次数;

第一更新模块,用于根据当前s值对当前未遍历的目标样本集中样本的预测标签进行更新,继续遍历所述目标样本集,直至遍历结束;

第二更新模块,用于确定更新后的该目标样本集中样本的拉格朗日乘子αi,并将该更新后的该目标样本集中样本的拉格朗日乘子αi记录在预先建立的哈希表中,并根据当前s值及更新后的αi对当前未遍历的目标样本集中样本的预测标签进行更新,继续遍历所述目标样本集,直至遍历结束,其中,更新后的该目标样本集中样本的拉格朗日乘子αi为其倍,λ为正则化参数;

第三更新模块,用于在所述目标样本集遍历结束后,根据所述哈希表,将分类不正确的目标样本集中样本的拉格朗日乘子进行更新;

第二确定模块,用于执行选取模块,直到达到预设的目标样本集确定次数后,遍历当前的初始支持向量,选取当前对应拉格朗日乘子不为0的初始支持向量作为最终支持向量进行线性加权得到v,根据ω=sv及f(x)=ωx确定最大间隔分离超平面方程f(x),完成分类模型训练。

本方案中,将训练样本集划分为n个子训练样本集后,对n个子训练样本集进行并行训练,得到n组支持向量,然后将其归并,得到n/2组支持向量,再将n/2组支持向量中的每组支持向量作为一个子训练样本集进行并行训练,直到训练次数达到预设值后,得到初始支持向量,然后从初始支持向量中选取r个作为目标样本集,确定当前权值ω表达式及每个目标样本集中样本的预测标签y′i,令ω=sv,遍历所述目标样本集,每遍历一个目标样本集中样本,将s更新为其倍,并判断该目标样本集中样本分类是否正确,根据判断结果,对当前未遍历的目标样本集中样本的预测标签进行更新,同时在哈希表中记录下分类不正确的目标样本集中样本更新后的拉格朗日乘子,继续遍历所述目标样本集,直至遍历结束后,将分类不正确的目标样本集中样本的拉格朗日乘子进行更新,然后继续从初始支持向量中选取r个作为目标样本集,直到达到预设的目标样本集确定次数后,遍历当前的初始支持向量,选取当前对应拉格朗日乘子不为0的初始支持向量作为最终支持向量进行线性加权得到v,根据ω=sv及f(x)=ωx确定最大间隔分离超平面方程f(x),完成分类模型训练。可见,本方案中对子训练样本集进行并行训练,采用哈希表对数据进行高效地分布式存储,提高更新和查找速度,减少了运行时间,同时,训练过程中将当前权值ω分解为标量s和向量v乘积的形式,每次遍历目标样本集中样本只需要改变s,避免了每次更新当前权值都要遍历所有初始支持向量的时间消耗,有效改善并行度,提高了分类准确率,进一步减少了运行时间。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例所提供的一种支持向量机的并行训练方法的流程图;

图2为本发明实施例所提供的一种支持向量机的并行训练装置的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了减少分类模型训练方法的运行时间,提高分类准确率,本发明实施例提供了一种支持向量机的并行训练方法及装置。

下面首先对本发明实施例所提供的一种支持向量机的并行训练方法进行介绍。

如图1所示,一种支持向量机的并行训练方法,可以包括以下步骤:

S101,获取训练样本集,并将所述训练样本集划分为n个子训练样本集;

其中,在将该训练样本集划分为n个子训练样本集时所采用的划分方式可以为现有划分方式,例如,可以采用随机均匀的划分方式,也可以采用K-means进行聚类的划分方式(CA-SVM)。一般n为偶数,即一般可以将该训练样本集划分为偶数个子训练样本集,这样可以方便后续训练过程的进行。

S102,对所述n个子训练样本集进行并行训练,得到n组支持向量;

需要说明的是,对该n个子训练样本集进行并行训练后,每个子训练样本集会得到与其对应的一组支持向量,子训练样本集与支持向量具有唯一对应性,进而得到n组支持向量。

具体的,可以通过序列最小最优化算法SMO对该n个子训练样本集进行并行训练,得到n组支持向量。应用SMO算法可以在多个处理器上对该n个子训练样本集进行并行训练,而不需要逐一对该n个子训练样本集进行训练,大大减少运行时间。

S103,将所述n组支持向量每两组归并为一组,得到n/2组支持向量;

其中,将该n组支持向量每两组归并为一组所采用的归并方式可以为现有任意归并方式。可以理解的是,每两组支持向量归并为一组后,该归并后的一组支持向量中包括归并前的该两组支持向量中的所有支持向量。

S104,将所述n/2组支持向量中的每组支持向量作为一个子训练样本集,返回步骤S102,直到训练次数达到预设值后,得到初始支持向量,执行步骤S105;

其中,所述每个初始支持向量携带其真实标签yi及拉格朗日乘子m为所述初始支持向量的数量。

具体的,将该n/2组支持向量中的每组支持向量作为一个子训练样本集,对其进行并行训练,可以得到与每个子训练样本集对应的支持向量,按照这样的方法重复进行训练,当训练次数达到预设值后,便可以得到初始支持向量。

需要说明的是,该预设值可以由用户根据训练样本集的大小以及n值的大小等因素设定,在此不进行具体限定,例如,该预设值可以设置为4或5等,这都是合理的。

进一步需要说明的是,每个初始支持向量所携带的真实标签yi为+1或者-1,表示该初始支持向量的真实分类属性。

S105,从所述初始支持向量中选取r个作为目标样本集;

得到该初始支持向量后,可以从该初始支持向量中随机选取r个作为目标样本集,进行接下来的训练过程。一般会从m个初始支持向量中随机选取小于m个初始支持向量作为目标样本集,即r<m,这样可以提高训练所得模型的分类准确率,同时,由于选取过多初始支持向量会造成运算量增加,所以这样的选取方式还可以避免对运行时间造成不良影响。具体选取方式可以采用现有任意选取方式,在此不做具体限定。

需要说明的是,为了提高训练过程的并行化程度,减少运行时间,在得到该初始支持向量后,可以将该m个初始支持向量分别存储在若干个处理器上,在每个处理器上建立哈希表用于存储初始支持向量,然后从每个处理器上选取若干个组成目标样本集。

具体的,该哈希表的建立方式可以为:

为每个初始支持向量设定不同的长整形标识;

将长整形标识作为键,将与该长整形标识对应的初始支持向量、该初始支持向量的真实标签yi及拉格朗日乘子作为值,以键值对形式存储在数据表中,得到所述哈希表。

其中,该长整形标识可以为1,2,3等不重复的整数,且该长整形标识与该初始支持向量具有唯一对应性。通过查找该长整形标识即可以查找到对应的初始支持向量、该初始支持向量的真实标签yi及拉格朗日乘子

进一步需要说明的是,由于选取r个初始支持向量作为目标样本集时具有随机性,不是平均地从所有处理器存储的初始支持向量中选取,所以为了提高训练速度,可以将该目标样本集中的r个样本复制到所有处理器中,方便后续对当前权值ω表达式及每个目标样本集中样本的预测标签y′i的计算。

S106,令ω=sv,根据所述初始支持向量的真实标签yi及拉格朗日乘子确定当前权值ω表达式,根据所述初始支持向量的拉格朗日乘子确定每个目标样本集中样本的拉格朗日乘子αi,并根据ω确定每个目标样本集中样本的预测标签y′i

具体的,当前权值ω表达式为:

<mrow> <mi>&omega;</mi> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <msubsup> <mi>&alpha;</mi> <mi>i</mi> <mo>*</mo> </msubsup> <msub> <mi>y</mi> <mi>i</mi> </msub> <mi>&phi;</mi> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow>

其中,m为所述初始支持向量的数量,为所述初始支持向量xi的拉格朗日乘子,yi为所述初始支持向量xi的真实标签,φ(xi)为所述初始支持向量xi的映射函数。

从上式可以看出,当前权值ω为所有初始支持向量的真实标签、拉格朗日乘子及其对应的映射函数φ(xi)的乘积的线性加和值,当前权值ω为一个向量。为方便计算,令ω=sv,可以将当前权值ω分解为一个标量s与一个向量v的乘积的形式,即

<mrow> <mi>&omega;</mi> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <msubsup> <mi>&alpha;</mi> <mi>i</mi> <mo>*</mo> </msubsup> <msub> <mi>y</mi> <mi>i</mi> </msub> <mi>&phi;</mi> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mi>s</mi> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <msub> <mi>&alpha;</mi> <mi>i</mi> </msub> <msub> <mi>y</mi> <mi>i</mi> </msub> <mi>&phi;</mi> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mi>s</mi> <mi>v</mi> </mrow>

可见,该目标样本集中样本的拉格朗日乘子αi与该初始支持向量的拉格朗日乘子满足公式由于此时s初始化为1,所以αi与是相等的。

在确定当前权值ω的表达式时,可以由上述若干个处理器同时进行处理,具体的,每个处理器对本地存储的目标样本集中样本对应的当前权值ω的表达式中项αiyiφ(xi)进行计算,所有处理器同时进行,只有需要进行加和处理时才对这些项进行加和得到当前权值ω表达式。这样可以有效减少处理器的运算量,提高运行速度。

预测标签y′i可以通过以下公式确定:

y′i=<ω,φ(xi)>

其中,ω为所述当前权值,φ(xi)为所述目标样本集中样本xi的映射函数。

需要说明的是,该预测标签y′i为目标样本集中样本xi对应的预测标签,举例而言,若在步骤S105中选取了初始支持向量x1及x5,那么预测标签y′1即为目标样本集中样本x1对应的预测标签,预测标签y′5即为目标样本集中样本x5对应的预测标签。

映射函数φ(x)为本领域公知的函数,它是一个将样本(本发明中即为初始支持向量)从特征空间投影到再生核希尔伯特空间(Reproducing Kernel Hilbert Space,RKHS)的映射函数,该映射函数满足等式<φ(xa),φ(xb)>=K(xa,xb),其中,函数K(xa,xb)为核函数。

对于预测标签y′i的值,可以通过高斯径向基核函数:

<mrow> <mi>K</mi> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>a</mi> </msub> <mo>,</mo> <msub> <mi>x</mi> <mi>b</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mi>exp</mi> <mrow> <mo>(</mo> <mo>-</mo> <mi>&gamma;</mi> <mo>&CenterDot;</mo> <msubsup> <mrow> <mo>|</mo> <mo>|</mo> <msub> <mi>x</mi> <mi>a</mi> </msub> <mo>-</mo> <msub> <mi>x</mi> <mi>b</mi> </msub> <mo>|</mo> <mo>|</mo> </mrow> <mn>2</mn> <mn>2</mn> </msubsup> <mo>)</mo> </mrow> </mrow>

求得,其中,参数γ为预设的值,可以根据实际初始支持向量的个数等因素确定。

进一步需要说明的是,此时只需确定目标样本集中样本的预测标签y′i的值,并不需要确定所有初始支持向量对应的预测标签值。

S107,遍历所述目标样本集,每遍历一个所述目标样本集中样本,将s更新为其倍,并根据该目标样本集中样本的预测标签y′i判断该目标样本集中样本分类是否正确,如果正确,执行步骤S108,否则,执行步骤S109;

其中,t为预设的目标样本集确定次数。该预设的目标样本集确定次数t为用户设定的迭代次数与每次从上述初始支持向量中选取的初始支持向量数量r的比值。若用户设定的迭代次数为N,由于每次选取r个初始支持向量作为目标样本集进行迭代处理,所以只需经过N/r轮迭代即可以达到用户所需的训练效果,减少了运行时间。

为了得到最优化的最大间隔分离超平面,每遍历一个该目标样本集中样本,都需要对当前权值ω进行更新。每一次对当前权值ω进行更新都可以只改变s及其相关的值,而不需要对ω中的每一项进行更新,降低了计算的复杂度,进一步减少运行时间。

具体的,根据该目标样本集中样本的预测标签y′i判断该目标样本集中样本分类是否正确可以采用以下方式:

判断该目标样本集中样本的预测标签y′i与该目标样本集中样本的真实标签yi的乘积是否小于1;

如果小于1,则分类不正确,否则分类正确。

其中,该目标样本集中样本的预测标签y′i可以根据y′i=<ω,φ(xi)>计算得到,而该目标样本集中样本的真实标签yi为+1或者-1是已知的。

S108,根据当前s值对当前未遍历的目标样本集中样本的预测标签进行更新,继续遍历所述目标样本集,直至遍历结束;

具体的,可以将当前权值ω更新为其s倍,然后根据公式y′i=<ω,φ(xi)>对当前未遍历的目标样本集中样本的预测标签进行更新,需要强调的是,计算预测标签y′i=<ω,φ(xi)>时,ω为当前更新后的权值。由于更新后的权值其中s为更新后的值,所以未遍历的目标样本集中样本的预测标签y′i被更新为其倍。

需要说明的是,将当前权值ω更新为其s倍后,由于当前权值ω发生了变化,所以需要对当前未遍历的目标样本集中样本的预测标签进行更新,但是当前权值ω的变化并不影响当前已经遍历过的目标样本集中样本的预测标签,所以不需要对当前已经遍历过的目标样本集中样本的预测标签进行更新。

在对当前权值ω表达式及当前未遍历的目标样本集中样本的预测标签进行更新后,需要继续遍历该目标样本集,直至该目标样本集中所有样本遍历结束。在继续遍历目标样本集的过程中,继续按照步骤S107的方式判断当前正在遍历的目标样本集中样本分类是否正确,如果正确,执行步骤S108,否则,执行步骤S109。

S109,确定更新后的该目标样本集中样本的拉格朗日乘子αi,将该更新后的目标样本集中样本的拉格朗日乘子αi记录在预先建立的哈希表中,并根据当前s值及更新后的αi对当前未遍历的目标样本集中样本的预测标签进行更新,继续遍历所述目标样本集,直至遍历结束;

在判断出该目标样本集中样本分类不正确时,说明需要对该目标样本集中样本的拉格朗日乘子αi进行修改。具体的,可以将该更新后的该目标样本集中样本的拉格朗日乘子αi记录在预先建立的哈希表中,并根据当前s值及更新后的αi对当前未遍历的目标样本集中样本的预测标签进行更新。

其中,更新后的该目标样本集中样本的拉格朗日乘子αi为其倍,λ为正则化参数。确定了αi后,可以根据αi在哈希表中对应的长整形标识,将αi存储在该长整形标识对应的值中,以方便后续查找和修改。

根据当前s值及更新后的αi对当前未遍历的目标样本集中样本的预测标签进行更新具体可以为:

将当前权值ω表达式中与该分类不正确的目标样本集中样本对应的项更新为αiyiφ(xi)后,将当前权值ω更新为其s倍,其中,αi为更新后的该目标样本集中样本的拉格朗日乘子;

根据公式y′i=<ω,φ(xi)>对当前未遍历的目标样本集中样本的预测标签进行更新,其中,ω为当前更新后的权值。

需要说明的是,由于该分类不正确的目标样本集中样本对应当前权值ω表达式中的一项,即αiyiφ(xi),该分类不正确的目标样本集中样本的拉格朗日乘子αi改变后,只是对αiyiφ(xi)造成了影响,所以只需将αiyiφ(xi)更新即可,而不需要对当前权值ω表达式中的所有项进行更新。

进一步的,将当前权值ω更新为其s倍后,由于当前权值ω发生了变化,所以需要对当前未遍历的目标样本集中样本的预测标签进行更新,但是当前权值ω的变化并不影响当前已经遍历过的目标样本集中样本的预测标签,所以不需要对当前已经遍历过的目标样本集中样本的预测标签进行更新。

在对当前权值ω表达式及当前未遍历的目标样本集中样本的预测标签进行更新后,需要继续遍历该目标样本集,直至该目标样本集中所有样本遍历结束。在继续遍历目标样本集的过程中,继续按照步骤S107的方式判断当前正在遍历的目标样本集中样本分类是否正确,如果正确,执行步骤S108,否则,执行步骤S109。

S110,在所述目标样本集遍历结束后,根据所述哈希表,将分类不正确的目标样本集中样本的拉格朗日乘子进行更新;

在步骤S109中,确定该目标样本集中样本的拉格朗日乘子αi所需更新后的值,将更新后的αi记录在预先建立的哈希表中,而没有对该目标样本集中样本的拉格朗日乘子αi马上进行更新,而是在目标样本集遍历结束后,根据该哈希表中记录的需要更新的αi,将分类不正确的目标样本集中样本的拉格朗日乘子统一进行更新,这样可以提高训练的整体效率,避免了每遍历到一个分类不正确的目标样本集中样本就要进行αi的更新带来的不便。

S111,返回步骤S105,直到达到预设的目标样本集确定次数后,遍历当前的初始支持向量,选取当前对应拉格朗日乘子不为0的初始支持向量作为最终支持向量进行线性加权得到v,根据ω=sv及f(x)=ωx确定最大间隔分离超平面方程f(x),完成分类模型训练。

需要说明的是,在每一次遍历完目标样本集中的所有样本即每一轮迭代完成后,都会统一对分类不正确的目标样本集中样本的拉格朗日乘子进行更新。因此,在返回步骤S105时,对于从初始支持向量中选取的作为目标样本集的r个初始支持向量,如果其中包含上一轮迭代过程中分类不正确的目标样本集中样本,则该目标样本集中样本的拉格朗日乘子为更新后的拉格朗日乘子αi

本发明实施例中,将训练样本集划分为n个子训练样本集后,对n个子训练样本集进行并行训练,得到n组支持向量,然后将其归并,得到n/2组支持向量,再将n/2组支持向量中的每组支持向量作为一个子训练样本集进行并行训练,直到训练次数达到预设值后,得到初始支持向量,然后从初始支持向量中选取r个作为目标样本集,确定当前权值ω表达式及每个目标样本集中样本的预测标签y′i,令ω=sv,遍历所述目标样本集,每遍历一个目标样本集中样本,将s更新为其倍,并判断该目标样本集中样本分类是否正确,根据判断结果,对当前未遍历的目标样本集中样本的预测标签进行更新,同时在哈希表中记录下分类不正确的目标样本集中样本更新后的拉格朗日乘子,继续遍历所述目标样本集,直至遍历结束后,将分类不正确的目标样本集中样本的拉格朗日乘子进行更新,然后继续从初始支持向量中选取r个作为目标样本集,直到达到预设的目标样本集确定次数后,遍历当前的初始支持向量,选取当前对应拉格朗日乘子不为0的初始支持向量作为最终支持向量进行线性加权得到v,根据ω=sv及f(x)=ωx确定最大间隔分离超平面方程f(x),完成分类模型训练。可见,本方案中对子训练样本集进行并行训练,采用哈希表对数据进行高效地分布式存储,提高更新和查找速度,减少了运行时间,同时,训练过程中将当前权值ω分解为标量s和向量v乘积的形式,每次遍历目标样本集中样本只需要改变s,避免了每次更新当前权值都要遍历所有初始支持向量的时间消耗,有效改善并行度,提高了分类准确率,进一步减少了运行时间。

相应于上述方法实施例,本发明实施例还提供了一种支持向量机的并行训练装置,如图2所示,所述装置可以包括:

获取模块201,用于获取训练样本集,并将所述训练样本集划分为n个子训练样本集,其中,n为偶数;

训练模块202,用于对所述n个子训练样本集进行并行训练,得到n组支持向量;

其中,所述子训练样本集与所述支持向量具有唯一对应性。

归并模块203,用于将所述n组支持向量每两组归并为一组,得到n/2组支持向量;

返回模块204,用于将所述n/2组支持向量中的每组支持向量作为一个子训练样本集,执行训练模块202,直到训练次数达到预设值后,得到初始支持向量,执行选取模块205;

其中,所述每个初始支持向量携带其真实标签yi及拉格朗日乘子m为所述初始支持向量的数量;

选取模块205,用于从所述初始支持向量中选取r个作为目标样本集;

第一确定模块206,用于令ω=sv,根据所述初始支持向量的真实标签yi及拉格朗日乘子确定当前权值ω表达式,根据所述初始支持向量的拉格朗日乘子确定每个目标样本集中样本的拉格朗日乘子αi,并根据ω确定每个目标样本集中样本的预测标签y′i

其中,s初始化为1。

判断模块207,用于遍历所述目标样本集,每遍历一个所述目标样本集中样本,将s更新为其倍,并根据该目标样本集中样本的预测标签y′i判断该目标样本集中样本分类是否正确,如果正确,执行第一更新模块208,否则,执行第二更新模块209;

其中,t为预设的目标样本集确定次数。

第一更新模块208,用于根据当前s值对当前未遍历的目标样本集中样本的预测标签进行更新,继续遍历所述目标样本集,直至遍历结束;

第二更新模块209,用于确定更新后的该目标样本集中样本的拉格朗日乘子αi,将该更新后的目标样本集中样本的拉格朗日乘子αi记录在预先建立的哈希表中,并根据当前s值及更新后的αi对当前未遍历的目标样本集中样本的预测标签进行更新,继续遍历所述目标样本集,直至遍历结束;

其中,更新后的该目标样本集中样本的拉格朗日乘子αi为其倍,λ为正则化参数。

第三更新模块210,用于在所述目标样本集遍历结束后,根据所述哈希表,将分类不正确的目标样本集中样本的拉格朗日乘子更新为其倍;

第二确定模块211,用于执行选取模块205,直到达到预设的目标样本集确定次数后,遍历当前的初始支持向量,选取当前对应拉格朗日乘子不为0的初始支持向量作为最终支持向量进行线性加权得到v,根据ω=sv及f(x)=ωx确定最大间隔分离超平面方程f(x),完成分类模型训练。

本发明实施例中,将训练样本集划分为n个子训练样本集后,对n个子训练样本集进行并行训练,得到n组支持向量,然后将其归并,得到n/2组支持向量,再将n/2组支持向量中的每组支持向量作为一个子训练样本集进行并行训练,直到训练次数达到预设值后,得到初始支持向量,然后从初始支持向量中选取r个作为目标样本集,确定当前权值ω表达式及每个目标样本集中样本的预测标签y′i,令ω=sv,遍历所述目标样本集,每遍历一个目标样本集中样本,将s更新为其倍,并判断该目标样本集中样本分类是否正确,根据判断结果,对当前未遍历的目标样本集中样本的预测标签进行更新,同时在哈希表中记录下分类不正确的目标样本集中样本更新后的拉格朗日乘子,继续遍历所述目标样本集,直至遍历结束后,将分类不正确的目标样本集中样本的拉格朗日乘子进行更新,然后继续从初始支持向量中选取r个作为目标样本集,直到达到预设的目标样本集确定次数后,遍历当前的初始支持向量,选取当前对应拉格朗日乘子不为0的初始支持向量作为最终支持向量进行线性加权得到v,根据ω=sv及f(x)=ωx确定最大间隔分离超平面方程f(x),完成分类模型训练。可见,本方案中对子训练样本集进行并行训练,采用哈希表对数据进行高效地分布式存储,提高更新和查找速度,减少了运行时间,同时,训练过程中将当前权值ω分解为标量s和向量v乘积的形式,每次遍历目标样本集中样本只需要改变s,避免了每次更新当前权值都要遍历所有初始支持向量的时间消耗,有效改善并行度,提高了分类准确率,进一步减少了运行时间。

其中,对所述n个子训练样本集进行并行训练,得到n组支持向量具体可以为:

通过序列最小最优化算法SMO对所述n个子训练样本集进行并行训练,得到n组支持向量。

具体的,根据所述真实标签yi及拉格朗日乘子所确定的当前权值ω表达式为:

<mrow> <mi>&omega;</mi> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <msubsup> <mi>&alpha;</mi> <mi>i</mi> <mo>*</mo> </msubsup> <msub> <mi>y</mi> <mi>i</mi> </msub> <mi>&phi;</mi> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow>

其中,m为初始支持向量的数量,为初始支持向量xi的拉格朗日乘子,yi为初始支持向量xi的真实标签,φ(xi)为初始支持向量xi的映射函数。

具体的,预测标签y′i可以通过以下公式确定:

y′i=<ω,φ(xi)>

其中,ω为当前权值,φ(xi)为目标样本集中样本xi的映射函数。

具体的,根据该目标样本集中样本的预测标签y′i判断该目标样本集中样本分类是否正确可以为:

判断该目标样本集中样本的预测标签y′i与该目标样本集中样本的真实标签yi的乘积是否小于1;

如果小于1,则分类不正确,否则分类正确。

具体的,该预设的目标样本集确定次数t为用户设定的迭代次数与每次从初始支持向量中选取的初始支持向量数量r的比值。

具体的,根据当前s值对当前未遍历的目标样本集中样本的预测标签进行更新具体可以为:

将当前权值ω更新为其s倍;

根据公式y′i=<ω,φ(xi)>对当前未遍历的目标样本集中样本的预测标签进行更新,其中,ω为当前更新后的权值。

具体的,根据当前s值及更新后的αi对当前未遍历的目标样本集中样本的预测标签进行更新具体可以为:

将当前权值ω表达式中与该分类不正确的目标样本集中样本对应的项更新为αiyiφ(xi)后,将当前权值ω更新为其s倍,其中,αi为更新后的该目标样本集中样本的拉格朗日乘子;

根据公式y′i=<ω,φ(xi)>对当前未遍历的目标样本集中样本的预测标签进行更新,其中,ω为当前更新后的权值。

具体的,所述哈希表的建立方式可以为:

为每个初始支持向量设定不同的长整形标识;

将该长整形标识作为键,将与该长整形标识对应的初始支持向量、该初始支持向量的真实标签yi及拉格朗日乘子作为值,以键值对形式存储在数据表中,得到该哈希表;

相应的,所述将该更新后的该目标样本集中样本的拉格朗日乘子αi记录在预先建立的哈希表中具体可以为:

将所述长整形标识作为键,将与所述长整形标识对应的初始支持向量、该初始支持向量的真实标签yi及该更新后的该目标样本集中样本的拉格朗日乘子αi作为值,以键值对形式存储在所述哈希表中。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1