一种基于Spark框架的支持向量机训练方法技术

技术编号:18138996 阅读:27 留言:0更新日期:2018-06-06 12:11
本发明专利技术提供一种基于Spark框架的支持向量机训练方法,包括:获取训练样本集,将训练样本集中的所有样本向量分布式储存在Spark框架的数据节点中;从训练样本集中抽取违反KKT条件最大的样本向量V2,同时选取与样本向量V2的球心距相差最大的样本向量V1;对样本向量V1和V2进行迭代优化计算,获得更新后的样本向量V1

【技术实现步骤摘要】
一种基于Spark框架的支持向量机训练方法
本专利技术涉及计算机
,更具体地,涉及一种基于Spark框架的支持向量机训练方法。
技术介绍
支持向量机(SupportVectorMachine,SVM)自出现以来,被大量地运用于信息安全、图像处理、模式识别,故障诊断、异常检测等领域。1999年,Tax,Scholkopf和Duin等人,提出2种OneClassSVM算法,分别是基于超平面和基于超球体的OneClassSVM。其中支持向量数据描述(supportvectordatadescription,SVDD)是用超球体进单类分类方法,其目标在于用训练数据来描述一个超球体作为分类的判别模型。目前的常用的SVM模式识别与回归的软件包是python的scikit-learn和台湾林智仁教授的LIBSVM。其中,Scikit-Learn是基于python的机器学习模块,基于BSD开源许可证,这个项目最早由DavidCournapeau在2007年发起的,目前也是由社区自愿者进行维护;LIBSVM是台湾大学林智仁教授等人开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,它不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验的功能。该软件可以解决C-SVM、ν-SVM、ε-SVR和ν-SVR等问题,包括基于一对一算法的多类模式识别问题。但随着数据量的指数级的增长,单机版内存和CPU的要求已经无法满足需求,对算法并行化的求解方法的需求越来越迫切。SMO算法求解支持向量数据描述(supportvectordatadescription,SVDD)需要计算多个二次规划问题而具有较高的运算复杂度,SVDD运行时间会随训练样本数量增加而急剧增大。存储核矩阵Kii所需要的内存是随着训练集中训练点数N的快速增长的,核矩阵的规模是样本数平方关系,直接将SVDD应用于数据异常检测会导致计算量过大和内存溢出问题。
技术实现思路
为解决现有技术中,SMO算法求解SVDD需要计算多个二次规划问题而具有较高的运算复杂度,SVDD运行时间会随训练样本数量增加而急剧增大。直接将SVDD应用于数据异常检测会导致计算量过大和内存溢出问题,提出一种基于Spark框架的支持向量机训练方法。本专利技术提供的方法包括:S1,获取训练样本集,将所述训练样本集中的所有样本向量分布式储存在Spark框架的数据节点中;S2,从所述训练样本集中抽取违反KKT条件最大的样本向量V2,同时选取与样本向量V2的球心距相差最大的样本向量V1;S3,对所述样本向量V1和V2进行迭代优化计算,获得更新后的样本向量V1new和V2new;S4,将所述更新后的样本向量V1new和V2new广播到所述Spark的数据节点中,在每个数据节点中计算所述样本向量V1和V2产生的差分,根据所述每个数据节点中计算的差分,计算获得更新后的球心anew;S5,根据所述更新后的球心anew,更新所述Spark的数据节点中各个样本向量的球心距,同时更新球体半径R。其中,所述步骤S1还包括:向每个所述数据节点读入对应的该数据节点中所述训练样本中的样本向量,对每一个所述样本向量生成一个唯一数据标识。优选的,所述唯一数据标识由所述数据节点的分片区号和数据节点本地的时间戳组合而成。其中,所述步骤S1中还包括初始化所述迭代优化计算所需的计算参数;其中,所述计算参数包括所有样本向量的拉格朗日乘子α、球心a和每个样本向量的球心距d2。其中,所述初始化所述迭代优化计算的计算参数具体包括:初始化所有样本向量的拉格朗日乘子α值为1/N;其中,N为所述训练样本集中所述样本向量的个数;初始化球体半径的平方R2,使得R2=0;根据以下公式初始化球心:式中a为球心,αi和αj为所述训练样本集中任意两个样本向量,Kij为核函数;根据公式计算出所述样本向量的球心距d2。优选的,所述步骤S2中,从所述训练样本集中抽取违反KKT条件最大的样本向量V2的抽取类型为无放回抽取。其中,所述步骤S2中选取与样本向量V2的球心距相差最大的样本向量V1具体包括:对于任意一个所述数据节点,获取该数据节点中与所述样本向量V2的球心距相差最大的样本向量;在Spark框架的DriverProgram中根据每个所述数据节点中与所述样本向量V2的球心距相差最大的样本向量,获得与样本向量V2的球心距相差最大的样本向量V1。其中,所述步骤S4中,计算获得更新后的球心anew的步骤,具体包括:在Spark框架的DriverProgram中对所有数据节点中的计算得到的差分进行加总,计算获得新的球心anew。其中,所述步骤S5之后还包括:根据更新后的所述各个向量的球心距和求半径R,去除界上样本向量,保留所有无界样例的样本向返回执行S1。其中,所述步骤S5之后还包括,根据判断当所述训练样本集中所有样本向量的拉格朗日乘子都满足KKT条件或所述样本向量V1和V2的目标损失函数loss小于预设阈值时,停止训练。本专利技术提供的方法,通过应用Spark分布式计算框架将单机计算密集工作分散到各个工作节点;将单机大量存储核矩阵Kii分散到各个数据节点,数据增加时,可以进行横向扩展,而计算时间由于工作点独立,不会明显增加;存储空间不受单机限制。另一方面,应用增量计算的方式将避免了每次迭代都要进行的全量计算方式节省大量计算指令周期,加快求解计算过程。附图说明图1为本专利技术一实施例提供的一种基于Spark框架的支持向量机训练方法的流程图;图2为本专利技术一实施例提供的一种基于Spark框架的支持向量机训练方法中Spark框架的结构图;图3为本专利技术又一实施例提供的一种基于Spark框架的支持向量机训练方法的流程图。具体实施方式下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。以下实施例用于说明本专利技术,但不用来限制本专利技术的范围。参考图1,图1为本专利技术一实施例提供的一种基于Spark框架的支持向量机训练方法的流程图,所述方法包括:S1,获取训练样本集,将所述训练样本集中的所有样本向量分布式储存在Spark框架的数据节点中。具体的,在接收到训练样本集后,通过分布式存储,将样本集中的样本向量分布式存储在Spark框架下的数据节点中。如图2所示,ApacheSpark是专为大规模分布式数据分布式内存计算而设计的快速通用的引擎。是由加州大学伯克利分校的AMP实验室提供的开源的类HadoopMapReduce的通用并行框架。Spark由于MapReduceJob中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。很多并行化算法都在Spark上有了实现。通过此方法,将训练集中的样本向量分布式存储在多个数据节点中,数据增加时,可以进行横向扩展。S2,从所述训练样本集中抽取违反KKT条件最大的样本向量V2,同时选取与样本向量V2的球心距相差最大的样本向量V1。具体的,优化迭代过程采用SMO算法,即一次选择两个样本向量进行本文档来自技高网
...
一种基于Spark框架的支持向量机训练方法

【技术保护点】
一种基于Spark框架的支持向量机训练方法,其特征在于,包括:S1,获取训练样本集,将所述训练样本集中的所有样本向量分布式储存在Spark框架的数据节点中;S2,从所述训练样本集中抽取违反KKT条件最大的样本向量V2,同时选取与样本向量V2的球心距相差最大的样本向量V1;S3,对所述样本向量V1和V2进行迭代优化计算,获得更新后的样本向量V1

【技术特征摘要】
1.一种基于Spark框架的支持向量机训练方法,其特征在于,包括:S1,获取训练样本集,将所述训练样本集中的所有样本向量分布式储存在Spark框架的数据节点中;S2,从所述训练样本集中抽取违反KKT条件最大的样本向量V2,同时选取与样本向量V2的球心距相差最大的样本向量V1;S3,对所述样本向量V1和V2进行迭代优化计算,获得更新后的样本向量V1new和V2new;S4,将所述更新后的样本向量V1new和V2new广播到所述Spark的数据节点中,在每个数据节点中计算所述样本向量V1和V2产生的差分,根据所述每个数据节点中计算的差分,计算获得更新后的球心anew;S5,根据所述更新后的球心anew,更新所述Spark的数据节点中各个样本向量的球心距,同时更新球体半径R。2.根据权利要求1所述的方法,其特征在于,所述步骤S1还包括:向每个所述数据节点读入对应的该数据节点中所述训练样本中的样本向量,对每一个所述样本向量生成一个唯一数据标识。3.根据权利要求2所述的方法,其特征在于,所述唯一数据标识由所述数据节点的分片区号和数据节点本地的时间戳组合而成。4.根据权利要求2所述的方法,其特征在于,所述步骤S1中还包括初始化所述迭代优化计算所需的计算参数;其中,所述计算参数包括所有样本向量的拉格朗日乘子α、球心a和每个样本向量的球心距d2。5.根据权利要求4所述的方法,其特征在于,所述初始化所述迭代优化计算的计算参数具体包括:初始化所有样本向量的拉格朗日乘子α值为1/N;其中,N为所述训练样本集中所述样本向量的个数;初始化球体半径的平方R2,使得R2=0;根据以下公式初始化球心:

【专利技术属性】
技术研发人员:许千帆王宇陈玫
申请(专利权)人:北京寄云鼎城科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1