论文部分内容阅读
随着AMD和Intel陆续推出多核CPU,算法对并行计算的需求更加迫切。在数据挖掘领域中,支持向量机(SVM)由于其在分类和时间序列挖掘等应用领域中的高准确度而为业界普遍推崇,但同时由于SVM中核矩阵规模平方正比于训练集规模,导致了高度密集计算模型从而使得大规模SVM问题训练时间过长,为加快算法的训练速度,更好适应多核时代并行计算特点,改进算法的一个重要方向是并行化实现求解大型支持向量机。
本文从SVM数学模型的最优化理论出发,介绍了SVM相关算法中频繁使用到的KKT条件和对偶理论,在此基础上以最大间隔原则为基本出发点,分别从惩罚和非线性空间映射的角度引入了几类常用的分类机,然后综合自然地推导出了一般意义上最为常用的支持向量机模型。
在SVM基础模型的理论基础上,本文重点的介绍了SVM问题的基本解法和在基本解法基础上延伸的大规模SVM问题的处理技巧,如选块算法,分解算法等。串行序列最小优化算法(SMO)是在分解算法的基础上,采取固定工作集大小为2的策略得到的优化算法。由于串行SMO存在并行计算结构,在实验证明的基础上我们给出了并行SMO算法的设计方案:串行SMO算法中选择其中2个更新向量的计算可以并行处理,大量消耗在串行SMO算法的中间数组的更新上的CPU时间可以采取并行计算策略;并行SMO采用了LibSVM中的缓存和收缩的策略加快并行和训练速度,它由主控CPU将原始训练集均匀的分配各受控CPU上以近似独立的方式完成各自在较小训练集上的串行SMO算法,最终由主控CPU收集和各受控CPU进行全局更新。
最后在MNIST和Adult两个标准数据集上我们给出了并行SMO算法对比实验和实验结果分析。实验结果表明,并行SMO算法具有较好的并行度,在MNIST数据集上,32处理器下可达到接近25的加速比,同时,并行SMO在加入缓存和收缩策略后也有较大幅度的提升加速比和运行效率,从而有效的提高了求解大规模SVM问题的速度。