APP下载

SVM—SMO算法分析及在运维中的应用

2018-05-23李岩吴国文

智能计算机与应用 2018年2期

李岩 吴国文

摘 要: 支持向量机(SVM)是一种基于统计学习理论的新型机器学习方法,由于其出色的性能,已成为当前机器学习界的研究热点之一。本文实现了基于SVM的SMO算法的分析,并使用径向基高斯核函数对数据进行维度映射处理,最后结合系统运维中产生的仿真数据进行试验,实现了对该领域的应用研究。

关键词: SVM;SMO;高斯核函数;系统运维应用

Abstract:Support Vector Machine is a new machine learning method based on statistical learning theory due to its excellent performance which has become one of the research hotspots in the discipline of machine learning nowadays. This paper analyzes the SMO algorithm based on SVM and uses the Gaussian RBF kernel function to deal with the data transformed in different dimension. Based on the above combining with the simulation data produced in the system operation the paper designs and conducts the experiment therefore completes the research of its application in this field.

Key words: SVM;SMO;Gaussian kernel function;application in system operation

引言

隨着科技信息化的高速发展,特别是互联网的普及,信息服务已经深入到社会的各个领域,如今人们的衣、食、住、行都已离不开信息系统的服务;而各种各样的信息服务都离不开其底层系统的支持,因此,保障信息系统的稳定性已成为系统运维的重要事件。对于系统的稳定性而言,除了自身硬件和软件的协同配合外,日常运行的数据指标分析,也是保障系统持续稳定长期运行的关键因素。

传统的系统运维,主要依靠人工的定期巡检及突发事件的应急响应机制,在绝大部分情况下可以满足设计指定的运维功能需求,但成本开销较大,而且对于系统历史运行产生的历史数据,也并未形成良好的回溯机制。一种观念认为,人工智能在运维领域的应用发展已成为必然趋势[1]。而一些已有的机器学习方法在该领域的研究进展,也多为采用K-近邻算法(KNN)对运维数据处理后的时间结果进行分类,不仅计算和空间复杂度高,其普适性也欠佳、又不好。本文采用了另一种机器学习的方法,探讨和分析了支持向量机和已经获得广泛使用的序列最小优化算法的原理,并结合使用径向基核函数实现了对于非线性分类的优化[2-3];同时,通过仿真样本数据进行了模拟实验[4],结果证实了这一算法在系统运维领域中应用的可行性。

1 基于SVM的SMO算法分析及实现

1.1 SVM模型分析

支持向量机(Support Vector Machine SVM)是一种二分类模型,其基本模型是定义在特征空间上的间隔最大的线性分类器。对于具有N个维度的线性可分(linearly separable)的数据,存在N-1维的对象来将这些数据进行分隔,这种N-1维的对象就是分隔超平面(separating hyperplane);单个的数据点到分隔超平面的距离,可称为间隔(margin);而与分隔超平面距离最近的那些点就是支持向量(support vector)。支持向量机学习的基本指导思想就是求解能够正确划分训练集并且集合间隔最大的分离超平面。对训练数据集找到几何间隔最大的超平面,意味着以充分大的确信度对训练集进行分类。也就是说,不仅将二类情况以正负实例点分开,而且对最难以区分的点(距离分隔超平面间隔最小的点)也有足够大的确信度将其辨认分开。这样的分隔超平面将会对位置的新实例具有较好的分类预测能力。

其中,常数C用于控制“最大化间隔”和“保障大部分点的函数间隔小于1.0”这2个目标的权重,可称之为松弛变量。通过调节该参数的值,可以得到不同的结果。

1.2 SMO算法分析

序列最小优化(Sequential Minimal Optimization, SMO)是一种公认流行的用于训练SVM的算法,其本质是将一个优化问题分解为多个小优化问题来求解。这些被分解的小问题往往更容易计算,而且对其按既定顺序求解后的结果与将其作为一个整体求解的结果是完全等价的,因此一般情况下SMO有着更低的时间和空间复杂度。SMO算法的原理是每次循环中选择2个alpha(α1,α2)进行优化处理,如果α1确定,α2也随即可得;这2个alpha必须在间隔边界之外,或者还未经过区间化处理或者不在边界上[5-6]。SMO算法的步骤执行过程可表述如下:

基于前述给出的SMO算法分析,就可以得出SMO算法实现的一般方法。进一步,将推得该通用方法的伪代码设计逻辑流程如图1所示。

1.3 利用核函数进行优化

对于线性分类问题,一般的线性分类支持向量机已经是一种成功有效的学习方法。但是,对于数据集分类为非线性的时候,这种线性分类的支持向量机将不再适用。SVM优化中,所有的运算都可以写成内积的形式,即2个向量相乘之后得到的单个标量或者数值。此时,可以使用核方法,利用核函数表示将输入从输入空间映射到特征空间得到的特征向量之间的内积。通过使用核函数学习的非线性支持向量机,等价于隐式地在高维的特征空间中学习线性支持向量机。

本文中采用了径向基核函数(Radial Basis Function RBF)来设计展开研究优化过程。径向基函数是一个采用向量作为自变量的函数,其高斯核函数的数学公式为:

其中,σ为可调参数。不同的σ值会使得模型具有不同的支持向量个数,并影响模型的分类准确率。其对应的支持向量机是高斯径向基函数分类器,分类决策函数的公式表述如下:[JP6]

通过利用上述的高斯核函数,就会将数据从其特征空间映射到更高维的空间来变换处理,从而大大增强了这一算法的适用性。

2 实验与结果

由于在实际的系统运行环境中,系统性能的指标数值与系统自身是否存在异常并未设定一个明确可分的界限,故本次實验采用了一组非线性可分的仿真数据。训练数据集和测试数据集中均有100个数据,有2个属性A1,A2,分别为系统硬件的健康状态性能指标和软件的性能评估指标,标签“-1”表示存在风险,标签“1”表示系统正常运行。实验先通过训练数据集训练生成了核函数优化的SMO-SVM模型,然后分别在不同的σ值条件下用训练数据实现回溯,并用测试数据集来测试模型分类预测的错误率,记录错误数据个数并统计支持向量的个数。实验运行结果可见表1。

具体地,实验结果的可视化柱状图如图2所示。

实验数据证明,通过调节参数σ的数值,会影响到训练模型中支持向量的个数。当σ取值非常小(σ=0.1)时,有大部分数据实例(88个)成为支持向量,得到的测试数据错误率也较低;逐渐增大σ值发现,当σ=1.3时,研究中测试数据的错误率最低,降为3%,支持向量的个数为26个,这就表明此时的数据分类效果最好;当σ再逐渐增大,支持向量个数和测试数据的错误率都随之上升。特别地,当σ=5时,测试数据的错误率高达38%,分类器的分类效果较差。

3 结束语

本文研究了支持向量机SVM的模型原理,分析了序列最小优化算法SMO的运行机制[8],并使用径向基高斯核函数对SMO-SVM进行改造优化,使其可以处理非线性分类的数据。结合系统运维中产生的性能指标参数,设计采用了仿真实验,且由实验结果证实了其在该领域应用的可行性[9];通过调节参数σ的数值得出了性能最好的参数解,具有一定的创新及实践意义。

参考文献

[1] 屠要峰,吉锋,文韬. 机器学习在大视频运维中的应用[J]. 中兴通讯技术,2017(4):2-8.

[2] 阎晓娜,赵犁丰. 基于支持向量机的改进高斯核函数聚类算法研究[J]. 现代电子技术,2011,34(13):67-70,73.

[3] 黄啸. 支持向量机核函数的研究[D]. 苏州:苏州大学 2008.

[4] 赵振江. 基于SMO_SVM算法的变压器故障诊断[J]. 煤矿机械,2011,32(1):247-249.

[5] 周晓剑,马义中,朱嘉钢. SMO算法的简化及其在非正定核条件下的应用[J]. 计算机研究与发展,2010,47(11):1962-1969.

[6] 赵长春,姜晓爱,金英汉.非线性回归支持向量机的SMO算法改进[J]. 北京航空航天大学学报,2014,40(1):125-130.

[7] 李航. 统计学习方法[M]. 北京:清华大学出版社,2012.

[8] 丁世飞,齐丙娟,谭红艳. 支持向量机理论与算法研究综述[J]. 电子科技大学学报,2011,40(1):125-130.

[9] HARRINGTON P. Machine learning in action[M] . 李锐,李鹏,曲亚东,等译. 北京:人民邮电出版社,2013.