基于Matlab的最小二乘支持向量机的工具箱及其应用李方方,赵英凯,颜昕1最小二乘支持向量机的原理最小二乘支持向量机[2]是支持向量机的一种改进,它是将传统支持向量机中的不等式约束改为等式约束,且将误差平方和(Sum SquaresError)损失函数作为训练集的经验损失,这样就把解二次规划问题转化为求解线性方程组问题,提高求解问题的速度和收敛精度。
设样本为n维向量,某区域的l个样本及其表示为: (x1,y1),…, (xl,yl)∈Rn×R,首先用一非线性映射ψ(·)把样本从原空间Rn映射到特征空间φ(xi),在这个高维特征空间中构造最优决策函数:y(x) =ω·φ(x) +b(1)这样非线性估计函数转化为高维特征空间的线性估计函数。
利用结构风险最小化原则,寻找ω, b就是最小化:其中‖ω‖2控制模型的复杂度, c是正规化参数,控制对超出误差样本的惩罚程度。
Remp为误差控制函数,也即ε不敏感损失函数。
常用的损失函数有线性ε损失函数,二次ε损失函数,Huber损失函数。
选取了不同的损失函数,可构造不同形式的支持向量机。
最小二乘支持向量机在优化目标失函数为误差ξi的二次项。
故优化问题为:式中,ξi为松弛因子。
用拉格朗日法求解这个优化问题:其中:αi(i =1,…, l)是拉格朗日乘子。
根据优化条件可得到:其中:αi= c·ξi,ω·φ(xi) +b +ξi-yi=0。
定义核函数K(xi,yi) =φ(xi)·φ(xj)是满足条件的对称函数。
根据文献[6],优化问题转化为求解线性方程:最后用最小二乘法求出a与b,最小二乘支持向量机也由此得名,并且得到非线性预测模型:K(xi,x) =Φ(xi)·Φ(x)称为核函数,它是满足Mercer条件的任何对称的核函数对应于特征空间的点积。
核函数的种类较多,常用的有:(1)多项式函数:(2)RBF函数:(3)Sigmoid函数:k(xi,x) =tanh(v(x·xi) +c)(4)B样条函数:K(x,y) =B2n(x-y)2LS-SVMlab工具箱基于Matlab的LS-SVMlab工具箱[3]主要包括分类、回归、时间序列预测和无监督学习。
工具箱的代码都是用C语言编写的。
工具箱根据不同计算机系统可以用于W indows版本和Linux版本,大多数函数都能计算20 000个数据。
LS-SVM工具箱有3个版本,基本的,高级的(代码可编辑,包括用于贝叶斯框架),还有一个是在C环境下运行的版本,每个不同的算法包含不同的函数。
在LS-SVM工具箱外有一个C 程序的编译器,它会自动把Matlab程序编译成C程序,然后在C程序下进行计算,这样就大大提高了LS-SVM的运算效率。
图1是基于Matlab的LS-SVMlab工具箱的结构图,下面就对LS-SVMlab进行介绍。
2. 1训练数据的导入要使用LS-SVM工具箱进行训练,就必须准备训练样本,对样本数据的获取,有以下几种方法供选择,具体采用哪种方法,取决于数据的多少和数据文件的格式等: (1)用元素列表方式直接输入数据; (2)创建数据文件,通过matlab提供的装载数据函数,从数据文件中读取。
函数load适合从MA T文件、ASCII文件中读取数据,函数xlsread从. xls格式的文件中读取,函数csvread从. csv格式的文件中读取数据。
2. 2数据预处理对要训练的输入和输出数据进行一定的预处理,可以加快训练速度。
Matlab提供的数据预处理方法有归一化处理(把每组数据都变为-1~+1之间的数,所涉及到的函数有premnmx, postmnmx, tramnmx)、标准化处理(把每组数据都化为均值为0,方差为1的一组数据,所涉及到的函数有prestd,poatstd, trastd)和主成分分析(进行正交处理,减少输入数据的维数,所涉及到的函数有prepca, trapca)。
当训练得到输出时,还必须进行数据的反归一化。
2. 3算法的训练和仿真LS-SVMlab工具箱主要用来进行分类、函数的回归和利用核函数进行无监督学习。
LS-SVMlab用于函数回归主要用到3个函数, trainlssvm函数用来训练建立模型, simlssvm函数用于预估模型, plotlssvm函数是LS-SVMlab工具箱的专用绘图函数。
高版本的LS-SVMlab 工具箱还有贝叶斯框架下的最小二乘支持向量机,固定大小的最小二乘支持向量机等。
2. 4LS-SVM算法的改进L ssvm.mex*是matlab训练时在UNIX /Linux环境下和C的接口。
lssvm. dll是Matlab训练时在W indows环境下和C的接口,有了这两个文件,就可以大大提高运行效率。
模型的验证主要包括Crossvalidate、rcrossvalidation、leaveoneout是用交叉验证的各种改进方法进行寻优,gridsearch是在一定的范围内用来寻找最优的参数范围。
由于最小二乘支持向量回归估计将二次规划问题转变成线性方程组的求解,失去了支持向量解的稀疏性优点,此外,冗余信息的噪声被全部拟合到模型参数里,削弱了模型的鲁棒性,使辨识参数的推广能力下降。
针对上述缺点,函数Tunelssvm, prunelssvm,weightedlssvm是对最小二乘支持向量机上述缺点的改进。
3LS-SVMlab在82B钢生产预测中的应用3. 182B钢生产建模的必要性提高产品性能一直是冶金工作者所致力追求的目标,为了达到这个目标,有必要在生产前对所要生产的产品性能进行预测,然后根据预测结果,设计钢种成分和加工工艺条件,从而降低研制成本,缩短开发时间。
国内一些钢铁公司生产的82B钢存在着力学性能不稳定、拉拔断裂现象,而且钢铁的化学成分和轧制时的工艺参数影响着82B钢的力学性能,并且82B钢的化学成分和工艺参数与产品的力学性能的关系很难用传统的数学模型准确的表示出来,因此如何有效的建立82B钢生产的模型是一个亟待解决的问题。
3. 2输入输出变量的选择原则上,建模可以输入各种影响相关研究课题的因素,但是考虑到实际生产情况和控制模型的收敛速度,故需要对各种因素进行充分的分析和筛选。
对于82B钢的生产来说,影响性能的因素分为内因(钢种的化学成分)和外因(工艺条件)两个方面[4],金属本身的化学成分直接影响到82B钢的抗拉强度,延伸率,断面收缩率等最终性能。
工艺条件就更加复杂如:加热时间的长短,轨道速度,吐丝温度的高低以及斯太尔摩冷却线上的风冷情况等都会对高速线材的最后力学性能造成影响。
因此结合厂里工艺人员的经验,在建立82B钢的性能预报模型时可以将钢的化学成分包括:炭、硅、锰、氮、铬、磷、硫的百分含量以及开轧温度、精轧前温度、精轧后温度、吐丝温度一共13个变量作为神经网络的输入。
从对82B钢的性能影响因素规律性的研究以及82B钢的力学性能可测的这一前提出发,我们将82B钢的力学性能即抗拉强度、延伸率、断面收缩率作为输出量建立模型进行预报。
3. 3LS-SVM工具箱在82B钢建模中的应用从MySQL数据库导出的训练数据放在traindata. csv的文件中,导出的预估数据放在predic. csv文件中。
假设训练据有200个,预估数据是70个。
下面是利用LS-SVMlab工箱编写的程序来具体阐述设计的步骤:(1)读取输入输出数据。
A=csvread(′traindata. csv′);csv格式的文件是一种文本文件,占用空间小,而且可用. txt、. xls打开,并且有利于数据的读取,也便于做B/S网发布。
(2)对输入输出的数据进行归一化预处理[5]。
Ptrain0=A(:, [1: 13]);Ttrain0=A(:, [14: 16);[Ptrain,meanptrain, stdptrain] = prestd(Ptrain0′);[Ttrain,meant, stdt]= prestd(Ttrain0′);Prestd()是数据归一化函数,其中meanptrain是未归一数据之前的向量平均值stdptrain是未归一化数据之前的向标准差。
(3)设定最小二乘支持向量机的参数gam和相应的核数涉及到的参数。
gam=10; sig2=0. 5;type=′function estimation′;LS-SVM要求调的参数就两个。
gam和sig2是最小二支持向量机的参数,其中gam是正则化参数,决定了适应差的最小化和平滑程度, sig2是RBF函数的参数。
在工具中有一个函数gridsearch可以在一定的范围内用来寻找最的参数范围。
type有两种类型,一种是classfication,用于类,一种是function estimation,用于函数回归。
(4)算法训练,建立模型。
建立模型用trainlssvm函数实现,它根据样本的输入输和预先已经设置好的训练函数的参数,对网络进行训练,得最小二乘支持向量机的支持向量和相应的阈值,见公式(8)[alpha, b] =trainlssvm({Ptrain′, Ttrain′, type, gam, sig′RBF_kernel′,′preprocess′});Trainlssvm函数是LS-SVM工具箱的重要函数之一,是小二乘支持向量机的训练函数。
其中′RBF_kernel′是表明函数是RBF函数。
核函数还有Lin_kernel、Poly_kernel等。
alpha是支持向量, b是阈值。
preprocess是表明数据经进行归一化,也可以是′original′,表明数据没有进行归化,缺省时是′preprocess′。
plotlssvm ({ P, T, type, gam, sig2,′RBF _ kernel′′preprocess′}, {alpha, b})plotlssvm函数是LS-SVM工具箱特有的绘图函数,和p函数原理相近。
(5)读取预估数据的输入,进行数据预处理并进行模的预测。
其中smi lssvm函数类似于神经网络工具箱中的smi函数,来验证模型的准确性,用预估82B 钢生产得到的质量指标。
B=csvread(′predic. csv′);Ptest0=B(:, [1: 13]);Ttest0=B(:, [14: 16]);[Ptest,meanptest, stdptest] = prestd(Ptest0′);读取预估数据,并且进行数据预处理,进行归一化。
y1=simlssvm({Ptest’, T, type, gam, sig2,′RBF_kernel′′preprocess′}, {alpha, b}, Ptest) simlssvm函数也是LS-SVM工具箱的重要函数,其中的参数如上述所示,原理类似于神经网络工具箱中的sim函数。