基于PSO_LS-SVM的装备研制费用预测研究
2010-03-24张丽叶谢文秀
张丽叶,谢文秀
(装备指挥技术学院 装备采办系,北京 101416)
0 引言
支持向量机(Support Vector Machines,SVM)是贝尔实验室Vapnik 等人提出的一种新的统计学习方法,能够解决小样本、非线性、高维数和局部极小点等实际问题。标准SVM算法的复杂度虽然不依赖于输入空间的维数,但依赖于样本数据的个数,当样本数据量较大时,求解过程所需计算资源很大,计算速度也慢。目前,解决该问题的方法较多,比较成功的是J.A.K.Suykens 等提出的最小二乘SVM算法(Least Squares Support Vector Machine,LS-SVM)。LS-SVM和标准SVM的主要区别在于将误差平方和损失函数作为训练集的经验损失,用等式约束代替不等式约束,把求解耗时的受约束的二次型规划问题变成求解一组等式方程问题,降低了计算的复杂性,提高了求解速度。
但是,在对 LS-SVM的研究中我们发现,LS-SVM在具体应用中存在一个突出问题,即如何设置LS-SVM的调整参数γ和核参数σ2(这两个参数对LS-SVM的性能的影响非常关键)。目前在这一领域还没有什么较好的方法,通常在具体使用时都是应用网络搜索的方法,而这种方法相当耗时,程序运算一次往往需要10~20 min。有学者提出使用梯度下降法选择LS-SVM的参数[1],但该方法受核函数必须可导的限制,且在搜索过程中容易陷入局部极小。也有学者尝试用免疫算法来优化LS-SVM的参数[2],以减少参数选择的盲目性,提高LS-SVM的预测精度,但该方法实现较复杂。还有学者提出采用遗传算法确定LS-SVM 参数[3],但是遗传算法需要进行交叉(crossover)以及变异(mutation)操作,需要调整许多参数,计算复杂且效率较低。粒子群算法是一种新型的基于群体智能的随机优化算法,同遗传算法类似,也是一种基于群体的随机搜索优化工具,但是并没有遗传算法的交叉以及变异操作,而是粒子在解空间追随最优的粒子进行搜索,具有并行处理特征,鲁棒性好、简单容易实现、计算效率较高、能以较大的概率找到优化问题的全局最优解等优点。目前已广泛应用于函数优化、神经网络训练、模糊系统控制以及其他遗传算法等应用领域。
本文尝试应用粒子群算法来优化LS-SVM的参数选择问题,建立基于粒子群优化参数的LS-SVM回归预测模型(PSO_LS-SVM),并将其用于装备研制费用预测。
1 粒子群优化算法简介
粒子群优化(Particle Swarm Optimization,PSO)是由Kennedy和Eberhari在1995年提出的一种基于群智能(Swarm Intelligence)的新的全局优化进化算法[4],它源于鸟类捕食行为的模拟。其原理如下:
PSO 初始化为一群随机粒子(随机解),然后通过迭代找到最优解。这些粒子在搜索空间中以一定的速度飞行,并根据粒子本身的飞行经验以及同伴的飞行经验对自己的飞行速度进行动态调整,即每个粒子通过统计迭代过程中自身的最优值(pBest)和群体的最优值(gBest)来不断地修正自己的前进方向和速度大小,从而形成群体寻优的正反馈机制。PSO算法就是这样依据每个粒子对环境的适应度将个体逐步移到较优的区域,并最终搜索、寻找到问题的最优解。
假设在一个D 维的目标搜索空间中,有m个粒子组成一个群落,其中在第t次迭代时粒子i的位置表示为一个D 维向量i=1,2,…,m。换言之,每个粒子的位置就是一个潜在的解。将 xi带入一个目标函数就可以计算出其适应值,根据适应值的大小衡量 xi的优劣。第i个粒子的“飞翔”速度也是一个 D 维的向量,记为
开始执行PSO算法时,首先,随机初始化m个粒子的位置和速度;然后,通过迭代寻找最优解,在每一次迭代中,粒子通过跟踪两个极值(pBest和gBest)来更新自己的速度和位置,记第i个粒子迄今为止搜索到的最优位置为
整个粒子群迄今为止搜索到的最优位置为
在第t+1次迭代计算时,粒子根据下列规则来更新自己的速度和位置[5]:
为了讨论方便,设f(x)为最小化的目标函数,则微粒i的当前最好位置由下式确定
群体中所有微粒所经历过的最好位置为pg(t),称为全局最好位置。则:
式中:i=1,2,…,m;d=1,2,…,D;m为粒子数,一般取20~40,其实对于大部分问题10个粒子已经可以取得好的结果,不过对于比较难的问题或者特定类别的问题,粒子数可以取到100 或200个粒子的长度,这是由优化问题,即问题解的长度决定的;c1和c2是两个非负常数,分别称为自信度系数和互信度系数,一般c1等于 c2并且范围在0和4之间;r1和r2是介于[0,1]之间的随机数;w为惯性因子;为最大速度,如果当前对粒子的加速将导致它在某维的速度v 超过该维的最大速度 vmax,则该维的速度被限制为该维的最大速度vmax,它决定了粒子在解空间的搜索精度,如果 vmax太高,粒子可能会飞过最优解,如果 vmax太小,粒子陷入局部搜索空间而无法进行全局搜索。粒子的位置向量被限制在范围内,xmin、xmax由实际问题决定,vmax通常选为kxmax,其中[6]
迭代终止条件根据具体问题一般选为达到最大迭代次数或最小误差要求为止。
2 基于PSO_LS-SVM的装备研制费用预测模型
应用第1节粒子群优化的算法,建立基于PSO_LS-SVM的装备研制费用预测模型,见图1。
图1 基于PSO_LS-SVM的装备研制费用预测模型
应用PSO算法,对LS-SVM 两个关键参数的选择进行优化的程序逻辑框图如图2所示。优化步骤为:
第一步,PSO 参数初始化。设定粒子数m,最大迭代次数Tmax;由于LS-SVM 只有两个关键参数γ和2δ,因此,d=1,2;设定c1和c2、c1较大时,会使粒子过多地在局部范围徘徊,而 c2较大时会促使粒子过早收敛到局部最小值,为了平衡随机因素的作用,本文c1和c2通常取2[7];r1和r2是介于[0,1]的随机数;设w为惯性因子,w较大时算法具有较强的全局搜索能力,w较小则算法倾向于局部搜索。本文将w 初始值设为0.9,并使其随迭代次数的增加线性递减至0.4,设[8]设定最大速度 vmax;随机初始化粒子群中各个粒子位置和速度,即t=0,记
图2 PSO_LS-SVM预测的程序逻辑框图
第二步,计算每个粒子的适应值。粒子的适应度函数值越大,则粒子位置越好。这里,适应度函数定义为:分别为LSSVM 训练输出值和期望输出值。
第三步,按式(1)、(2)更新粒子的速度和位置,再与群体中所有微粒所经历过的最好位置pg(t)进行比较,产生新种群x(t+1)。
第四步,检查结束条件。若满足,则结束寻优;否则t=t+1,转至第二步。结束条件为寻优达到最大迭代次数Tmax,或评价值小于给定精度。
第五步,把寻到的粒子最优位置,即LS-SVM的最优调整参数γ和最优核参数σ2赋给LS-SVM模型。
第六步,用样本数据对LS-SVM 进行训练,利用改进的序列极小化方法求解。
3 实例验证
本节以从公开出版物收集到的国外某类武器研制费用为例,在样本数据(样本数据见表1)准备好的基础上,建立基于PSO_LS-SVM的某类武器研制费用预测模型,并对费用预测结果进行比较分析,检验所建预测模型的合理性,为其他装备研制的研制费用预测建模提供思路和方法。
表1 国外某类武器性能参数与研制费用样本数据表
采用Matlab7.0编制仿真程序,粒子群规模设为5,解空间为2 维,分别对应参数gam和RBF核参数sig2。取w 随进化代数从0.9 线性递减至0.4:为最大迭代次数,这里取为300,加速因子 c1=c2=2;gam初始值为1,sig2初始值为1。
POS_LS-SVM算法的matlab核心程序任务包括:求每个样本的输出值;判断得出的结果是否满足要求,如满足就结束,不满足则计算参数增加值;求单个样本最佳参数值;和原来的群最佳值比较。
1)确定参数。
采用PSO优化的方法确定参数,调用LS-SVM lab的train lssvm函数文件进行搜索调整,重复实验5 000次,选择效果最好的一次,得到确定的一组正规化参数gam=4.06和RBF核参数sig2=7.52。结果如图3所示。
2)建立模型。
在确定正规化参数gam和RBF核参数sig2之后,即可建立国外某类武器研制费用PSO_LS-SVM回归模型,即程序:
% PSO_LS-SVM 回归模型,只需输入X,即可计算出预测值Yt
3)对预测结果进行分析,检验模型的性能。
本例训练结果和测试结果见表2、3的LS-SVM模型和PSO_LS-SVM模型训练和测试结果对比表。
图3 POS_LS-SVM算法中gam和sig2选值图
表2 PSO_LS-SVM模型训练和测试结果
表3 LS-SVM模型和PSO_LS-SVM模型训练和测试结果对比表
表3对国外某类武器费用的实际值、LS-SVM预测值和PSO_LS-SVM 预测值进行了比较,目的是输入测试样本验证训练模型的应用能力。
LS-SVM计算结果常用的评价指标有:平均绝对误差(MAE)、平方差(SSE)、均方差、平均相对误差(MAPE)、根方差或标准差(RMSE)、相对误差平方和(ESE)。本文采用MAPE和ESE 进行结果评估。
从预测结果可以看出,在同样样本条件下,将计算结果带入平均相对误差(MAPE)和相对误差平方和(ESE)的计算公式中,得出如下结果:采用LS-SVM模型训练测试的预测结果评价指标MAPE=0.018 0,综合评估指标ESE=0.002 5;采用PSO_LS-SVM模型训练测试的预测结果评价指标MAPE=0.014 7,综合评估指标ESE=0.001 4。此外,采用LS-SVM模型确定训练参数,程序运行时间高达约15 min之久,而采用PSO_LS-SVM模型确定训练参数,程序运行时间只需3~4 min。
从以上分析可以得出如下结论:采用粒子群优化算法与目前普遍应用的通过全面搜索的方法确定LS-SVM参数的方法相比,粒子群优化算法的参数选择具有更明确的理论指导,PSO_LS-SVM预测方法的预测精度更高,而且训练参数寻优速度也快,建立的PSO_LS-SVM费用预测模型是有效的,可以将此模型推广到其他装备研制费用的预测中。
4 结论
在对目前LS-SVM两个关键参数的确定方法进行对比分析之后,得出采用粒子群优化算法对确定最小二乘支持向量机的参数更具有优势。因此,提出应用PSO算法优化LS-SVM参数(γ,σ2),建立了基于PSO_LS-SVM装备研制费用预测模型,研究了模型计算的程序流程和预测步骤,并以国外某类武器为例,进行了实例验证,最后将POS_LS-SVM和LS-SVM费用预测值进行了对比,通过对比得出:在同样样本情况下,应用LS-SVM方法进行国外某类武器研制费用预测具有良好的预测精度;而建立的PSO_LS-SVM费用预测模型精度更高,计算速度更快。
因此,基于以上理论和算法建立的PSO_LSSVM装备研制费用预测模型具有很高的应用价值。
[1]CHAPELLE O,VAPNIK V.Choosing multiple parameters for support vector machines[R].NewYork∶AT&T Research Labs,2001.
[2]吴宏晓,侯志俭.基于免疫支持向量机方法的电力系统短期负荷预测[J].电网技术,2004,28(23)∶47-51.
[3]刘志伟.舰船装备建造费预测研究[D].北京∶装备指挥技术学院,2008∶55-60.
[4]EBERHART R,KENNEDY J.A new optimizer using particle swarm theory[C]//Proc.of the Sixth International Symposium on Micro Machine and Human Science.Nagoya,Japan,1995∶39-43.
[5]SHI Y,EBERHART R.A modified particle swarm optimizer[C]//IEEE World Congress on Computation Intelligence.1998∶69-73.
[6]BERGH F,ENGELBRECHT A.A new locally convergent particle swarm optimizer[C]//Proc.of IEEE Int.Conf.on Systems,Man and Cybernetics.Tunisia∶IEEE.2002∶96-107.
[7]马文晓,白晓民,沐连顺.基于人工神经网络和模糊推理的短期负荷预测方法[J].电网技术,2003,27(5)∶29-32.
[8]张红梅.基于支持向量机的电力系统短期负荷预测研究[D].南京∶河海大学,2006∶53.