支持向量机(support vector machine,SVM)是应用最广泛的分类算法之一,该方法的核心思想是在特征空间寻找最优超平面将两类样本无误地分开,且分类间隔最大。该方法能够平衡模型的复杂性和学习能力,较好地避免了“过学习”和“维数灾难”等问题,保证得到的极值解是全局最优解,这也决定了该算法具有较好的泛化能力,近年来被广泛应用于遥感图像的分类中并取得了良好的效果。在SVM的应用中,模型参数选择的恰当与否会对遥感图像的分类效果带来较大影响。传统的SVM采用网格搜索交叉验证方法优化其参数,但此方法主观因素影响较大,同时搜索和验证过程耗时较长,且浪费相当数量的训练样本用于验证,在训练样本有限的情况下,其缺陷体现得更加明显。基于此,国内外学者开始将智能优化算法引入到SVM的参数优化中,其中最为广泛的是遗传算法(genetic algorithm,GA)和粒子群优化(particle swarm optimization,PSO)算法。遗传算法虽然具有较强的鲁棒性,但对所求问题的目标函数敏感性不高,且收敛速度慢,算法实时性差,而PSO算法具有导向性强、收敛速度快以及求解精度高[1]的特点,本文采用PSO算法优化SVM。
1 PSO 算法和SVM 原理简介 1.1 PSO算法原理及研究现状PSO算法将优化问题的候选解抽象为一群无质量、零体积的粒子,这些粒子在d维空间中依靠自身的经验和群体中适应度最高的粒子的经验来不断的优化自身的位置。设一个由n个粒子构成的粒子群,其中第i个粒子在d维空间中的速度记为vi=vi1,vi2,…vidT,把位置记作xi=(xi1,xi2,…,xid)T,可以将xi代入相应公式计算其适应度值并据此评价粒子i位置的优劣。粒子i的当前个体最优位置记为pbestid,整个粒子群的当前最优位置记为gbestd,粒子i通过式(1)来迭代更新自身的速度与位置。
$\left\{ \matrix{ v_i^{t + 1} = wv_i^t + {c_1}{r_1}\left( {pbest_{id}^t - x_i^t} \right) + {c_2}{r_2}\left( {gbest_d^t - x_i^t} \right) \hfill \cr x_i^{t + 1} = x_i^t + v_i^{t + 1} \hfill \cr} \right.$ | (1) |
式中:vit+1和vit分别为粒子i下一时刻和当前时刻的速度,xit+1和xit分别为粒子下一时刻和当前时刻的位置。为了控制vit和xit的值在合理的区域内,需要制定vmax和xmax来限制,w为惯性权重,较大的w使算法更倾向于全局搜索,而较小的w则使算法更倾向于局部搜索。c1和c2是学习因子,为非负常数,r1和r2是两个[0,1]的随机数。
国内外众多学者都对PSO算法的改进展开了研究。有些学者对式(1)中的惯性权重w进行了研究。文献[2]在迭代过程中线性递减w的值,因为适当增大w的值可以使算法在迭代初期具有较强的全局搜索能力,尽可能保证搜索到整个解空间,而适当缩小w的值能够保证群体后期趋向于进行局部搜索,即在有可能产生最优解的区域进行精细寻优,最终收敛到最优位置。但是由于PSO算法的寻优过程本身是非线性的,所以如果想要真实的反映算法的搜索过程,采取w线性递减的方案显然是不合理的,因此文献[3]采用模糊规则来动态调整w。文献[4]对w应该取某一固定常数还是随时间线性减小的问题进行了分析研究,讨论了两种方案对算法性能的影响并提出w的设置原则。有些学者改进了式(1)中的学习因子c1和c2,它们分别代表每个粒子趋向pbestid和gbestd的加速系数,反映了粒子的“个体认知”能力和群体的“社会引导”能力。文献[5]使c1和c2以时间为自变量线性递减,得出了为得到更好的效果需要根据特定的问题选取特定加速系数的结论,但很遗憾的是没有总结出普遍适用的规律,文献[6]提出了异步时变的加速系数,即在粒子寻优过程中以时间为变量,c1和c2分别进行相应的不同改变,但取得的优化效果并不理想,文献[7]在改进PSO算法的时变加速度系数的同时,也将其应用到综合减摇控制系统解耦控制器的设计中。有些文献对粒子群的拓扑结构进行改进,如文献[8]指出粒子群的拓扑结构会影响其搜索性能,对于简单问题应采用大规模的拓扑结构进行解决,而小规模的拓扑结构适用于求解复杂问题。文献[9]采用了多种连接方式不同的拓扑结构对PSO算法进行实验,得出了一般性结论,即任何一种PSO拓扑结构都不能适用于所有的基准函数,具体问题要具体分析。这是因为虽然连接方式不同,但这些拓扑结构都是固定不变的,因此文献[10]提出了一种动态的拓扑结构解决方案。另一些学者将PSO算法与其他算法结合使用。文献[11]提出了一种协同粒子群算法,它根据粒子的维数将粒子分为d个部分,然后对每一部分(d维中的其中一维)分别进行优化,通过计算适应度来评价每一部分的每一步搜索到的位置优劣,最后选取每一部分中历史的最优位置组成一个完整的粒子。文献[12]将PSO与GA的自然选择机制相结合,当算法更新完所有的粒子后,计算种群中所有粒子的适应度并进行优劣排序,然后根据结果,将适应度最差的一半粒子用适应度最好的一半粒子替换,但保留原粒子的个体历史最优位置信息。而文献[13]则将GA的其他两种机制借鉴到PSO中,即交叉机制和高斯变异机制,并在此基础上引入了模拟退火算法,以便更好的优化粒子群体。
在上述对PSO算法的改进中,大多数文献只针对PSO易陷入局部极小的问题提出了改进方案,并没有考虑PSO后期震荡严重的缺陷;在改进易陷入局部极小的缺点时,有的文献只是单纯的进行参数的修改,并不是从PSO算法收敛于局部极小的根本原因上采取改进策略;有的文献引入了一些新的参数或者将一些新的算法与传统的PSO相结合,虽在一定程度上得到了较好的寻优效果,但增加了复杂度,对收敛速度产生了较大影响。本文提出的对PSO算法进行改进的方案,不但提高了算法收敛速度,又同时解决了算法易陷入局部极小和后期震荡严重的缺陷,并将其用于优化支持向量机的模型参数以便更好的对遥感图像进行分类。
1.2 SVM算法原理SVM的基本原理是建立一个最优超平面使得正负两类被正确地分开,并且保证分类间隔的最大化。1)线性可分情况:在原空间中求得能准确将正负样本完全分离的最优分类超平面;2)线性不可分情况:引入松弛变量ξi和惩罚参数C,容许错分样本的存在,并在最大分类间隔与最小分类误差之间寻求平衡。超平面的约束调节变为
${y_i}\left[ {\omega \cdot{x_i} + b} \right] \ge 1 - {\xi _i},{\rm{ }}i = 1,2, \ldots ,n$ | (2) |
广义的最优分类面变为
$\varphi \left( {\omega ,\xi } \right) = {1 \over 2}\omega {^2} + C\mathop \sum \limits_{i = 1}^n {\xi _i}$ | (3) |
$s.t.{y_i}\left[ {\omega \cdot{x_i} + b} \right] \ge 1 - {\xi _i},{\rm{ }}i = 1,2, \cdots ,n$ | (4) |
3) 非线性情况:将样本xi,yi经由非线性映射转化成高维空间中的线性问题。为此需要引入核函数Kxi,x,由于径向基核函数(RBF)可逼近任何的非线性函数[14],所以本文采用RBF核函数对SVM进行研究。RBF核函数为
$K\left( {{x_i},x} \right) = exp\left\{ { - {{{{\left| x \right|}^2}} \over {{\sigma ^2}}}} \right\}$ | (5) |
相应的分类决策函数表示为
$f\left( x \right) = sgn\left( {\sum\limits_{i = 1}^n {{y_i}} \cdot {a_i}K\left( {{x_i},x} \right) + b} \right)$ | (6) |
式中:ai为支持向量,b是分类的阈值。研究表明,C调节经验风险和VC维的平衡,可通过减少误差以实现对样本的较好分类,σ的大小决定着SVM是否对输入量的变化敏感,σ值过大会使SVM对输入反应迟钝,过小则会使SVM对输入过于敏感,所以要想对样本进行准确的分类就必须对参数进行优化,本文采用改进的PSO算法对SVM的上述参数进行优化。
2 IPSO算法原理传统的粒子群优化算法其粒子群的初始位置是随机分布的。但是粒子群的初始位置会在一定程度上影响后续的寻优效果。因此本文利用混沌搜索的随机性和遍历性初始化粒子群使其能够均匀的分布于整个解空间,从而加快粒子群算法的收敛速度,有利于更快的得到全局最优解。
设问题解的维数为d维,利用混沌序列初始化粒子群初始位置的具体操作是:先产生一个d维、每个分量数值在(0,1)的随机向量z1=z11,z12,…,z1d,然后根据Logistic方程对z1进行迭代,代到N个随机向量z1,z2,…,zN,将z1的各个分量按照式(7)映射到问题解的取值范围:
$i = 1,2, \cdots ,N;{\rm{ }}j = 1,2, \cdots ,d$ | (7) |
最后根据目标函数计算xi=xi1,xi2,…,xidT的适应度值,从N个随机向量中选出n个较好的作为粒子群算法中种群的初始位置。
文献[15]中的定理1证明PSO算法可以不考虑粒子的速度,因为粒子的速度并不能反映出一个粒子趋近于最优位置的能力,反而可能会引导粒子向错误的方向进行搜索,影响了粒子的收敛速度与精度,据此本文对式(1)进行简化,简化后的粒子群优化公式为
$x_i^{t + 1} = wx_i^t + {c_1}{r_1}\left( {pbest_i^t - x_i^t} \right) + {c_2}{r_2}\left( {gbes{t^t} - x_i^t} \right)$ | (8) |
本文采用式(8)作为PSO算法的基础数学模型,剔除速度项简化了公式,从而减少了计算量,提高了搜索效率。传统PSO算法主要存在两点不足: 1)由于算法收敛速度快,粒子寻优存在趋同性,导致算法极易陷入局部极小;2)算法在寻优后期出现严重的震荡现象,从而对算法后期的收敛速度产生较大影响。
针对问题(1),文献[16]用粒子的个体最优值pbestit替换粒子在t时刻的位置xit,并借鉴其余粒子的经验,采用赌轮方式选出整个种群中的其余粒子当中的任一粒子的最优位置q替换pbestit,本文将文献[16]的方法进行引申,将xit保留并且在迭代公式中新增一项,由借鉴一个粒子的经验扩展到借鉴多个粒子的经验。因此式(8)调整为
$x_i^{t + 1} = wx_i^t + {c_1}{r_1}\left( {pbest_i^t - x_i^t} \right) + {c_2}{r_2}\left( {gbes{t^t} - x_i^t} \right) + {c_3}{r_3}\left( {p_{avr}^t - x_i^t} \right)$ | (9) |
式(9)中引入新的学习因子c3和随机数r3,pavrt是从所有个体粒子中选出的适应度优于pbestit且劣于所有其余粒子个体位置的平均值。在粒子的寻优过程中,pbestit、gbestt和pavrt三者共同向种群中的每个粒子传递信息,使每个粒子能获得更多的信息。由于pavrt的权值c3r3很小,相当于在式(8)的基础上增加一个小的扰动项以提高粒子的多样性,从而避免PSO的“过早熟”现象。对于问题(2),本文引入动量项来解决。令:
$\Delta x_i^t = {c_1}{r_1}\left( {pbest_i^tx_i^t} \right) + {c_2}{r_2}\left( {gbes{t^t} - x_i^t} \right) + {c_3}{r_3}\left( {p_{avr}^t - x_i^t} \right)$ | (10) |
设动量项为βΔxit,它与粒子的历史速度修正量线性相关,β是动量因子,可正可负且β∈0,1。当Δxit与前一时刻正负情况相同时,可增加xit+1的速度,以加快算法的收敛; 当Δxit与前一时刻正负情况相反,则需要适当减小Δxit以减弱算法后期的震荡。引入动量项的方法使算法在对粒子速度进行修正时,将速度修正量的历史变化趋势考虑在内,减缓了寻优过程中的震荡。将上述两种解决PSO算法缺陷的方法结合,既解决了粒子易陷入局部极小又减缓了后期存在的震荡现象,较为全面地弥补了传统PSO算法的不足。经过改进的PSO(即IPSO)的迭代式如下:
$x_i^{\left( {t + 1} \right)} = wx_i^t + \Delta x_i^t + \beta \Delta x_i^t$ | (11) |
本文采用IPSO算法优化SVM 分类模型中的两个参数,即式(3)中的参数C和式(5)中的参数σ,此SVM方法简记为IPSO-SVM,分类实验的算法步骤如下。
Input:已标记样本、测试样本。
Output:C和σ2、分类结果。
1) 为PSO各个参数c1、c2、c3、w和β分别赋一个实数值,设置误差阈值和最大迭代次数itermax;
2) 采用混沌序列初始化所有粒子(即SVM的参数组合C,σ2)的初始位置xi0,再根据适应度函数确定种群规模n;
3) 设置n个粒子的当前位置为粒子的个体极值pbestit,取适应度值最优的粒子个体极值为最初的全局极值gbestt;
4) 根据式(10)分别对种群中的每个粒子求其pavrt和速度修正量Δxit,确定动量因子β;然后利用适应度函数更新其适应度;
5) 根据式(11)更新粒子的位置信息,利用适应度函数计算其适应度,更新个体的最优pbestit和全局最优gbestt;
6) 检查结束条件,若满足则结束寻优,返回最优的参数组合C,σ2;否则转至4)。结束条件为寻优次数达到itermax或适应度值大于给定阈值;
7) 利用最优的参数组合C,σ2建立的SVM分类模型进行分类。
为了验证IPSO-SVM算法的分类效果,选择流行的UCI(University of California Irvine)数据库中的4种数据集Wine、 Iris、Ionosphere、Yeast进行算法验证,其中Yeast数据集选用MIT、NUC、CYT三类数据进行实验。对应的详细数据信息表格如表 1所示。实验硬件和软件环境信息如下:CPU为Intel(R) Xeon(R) E3-1226 v3 3.30 GHz,内存为RAM 4.00GB ,操作系统为Windows 7 64位,实验平台为VS.NET 2012,开发语言为C#。
用表 1所示训练样本和测试样本验证SVM、GA-SVM、PSO-SVM和IPSO-SVM 4种算法,得到相应的训练时间和泛化时间如图 1和图 2所示。GA-SVM、PSO-SVM和IPSO-SVM算法的最大迭代次数均为50次,粒子群或种群的数量均为40,遗传算法的交叉率0.8,变异率0.2,SVM算法采用径向基核函数,误差阈值10-3。如图所示,GA和PSO对支持向量机的优化(GA-SVM和PSO-SVM算法)会减慢其训练速度,而IPSO-SVM则有效地加快了训练速度,同时,也一定程度上加快了泛化速度。理论上的原因在于,相比于传统的PSO优化算法,IPSO 算法去除了粒子速度的概念,避免了人为确定参数-vmax,vmax对粒子训练的收敛速度的影响。同时,通过引入动量项的方法,明显减缓了粒子后期进化过程中产生的震荡,同时加快了粒子进化的速度,最终使得IPSO算法训练速度较传统的PSO算法,能更加快速地完成收敛,减少训练时间。
如图 3所示,本文利用表 1所示训练样本和测试样本,对比验证4种算法的分类准确率。误差率计算公式为
$误差率 = {{测试样本中分类正确的样本个数} \over {测试样本总数}}$ | (12) |
如图所示,IPSO-SVM的准确率都比另外3种算法高,而且与PSO-SVM相比,IPSO-SVM准确率提高了3%~5%。因此,从模型的训练时间和分类的准确率来看,IPSO-SVM都有一定的优势。
4 IPSO-SVM在矿产资源预测中的应用遥感图像分类是实现矿产资源预测的关键技术,本文以秘鲁南部的实验区为例进行矿产资源评价预测的研究。选择遥感图像的大小为8 832×6 988像素,图像中有部分已知的大型铜矿和小型铜矿区。通过对遥感图像多波段影像的分析,以及地质专家对此处成矿因素的地质解译,选择6组成矿要素(铁染蚀变、羟基蚀变、主线性构造、次线性构造、环形构造和地层信息)作为分类的特征变量,如图 4中所示,部分示矿信息已在图中标出。采用C#语言开发了矿产资源评价预测系统,并将IPSO-SVM算法应用到该系统中。
如图 5~7所示,分别应用PSO-SVM和IPSO-SVM算法对实验靶区进行了矿产资源的预测与评价,实验靶区的已知矿点都显示准确,而且通过对两种矿产资源预测图进行对比,基于IPSO-SVM算法的矿产评价图所显示的信息量更少,表示其预测出矿产资源的可能分部区域更少,结果更加精确,因此与PSO-SVM算法相比,IPSO-SVM算法提高了资源预测的准确度,从实践中验证了该算法的有效性。
5 结论
SVM模型参数的选择是影响其分类效果的重要因素,采用PSO算法优化SVM模型参数是常用的方法之一。但PSO算法存在容易陷入局部极小值、后期震荡严重的问题。
1) 首先利用混沌序列初始化例子初始位置,然后在简化的PSO公式的基础上,通过借鉴多个粒子的经验使得每个粒子获得更多的信息,通过增加扰动项来提高粒子的多样性以避免“过早熟”现象;同时也通过引入动量项来缓解寻优过程中的震荡问题。
2) 采用改进的PSO算法(IPSO算法)来改进SVM模型的参数,与SVM、PSO-SVM和GA-SVM相比,本文所提出的IPSO-SVM在分类时间和分类准确率上均有一定优势。
3) 将IPSO-SVM算法应用到基于遥感影像的矿产资源预测中,与PSO-SVM相比,IPSO-SVM算法提高了资源预测的准确度,在实践中验证了算法的有效性。
在具体的应用中,IPSO算法参数(如c1、c2 和c3等)往往需要依靠经验来设置,针对具体应用问题,如何自适应地调整参数值是需要继续研究的另一个问题。
[1] |
张鑫源, 胡晓敏, 林盈. 遗传算法和粒子群优化算法的性能对比分析[J].
计算机科学与探索, 2014, 8(1): 91–102.
ZHANG Xinyuan, HU Xiaomin, LIN Ying. Comparisons of genetic algorithm and particle swarm optimization[J]. Journal of frontiers of computer science and technology, 2014, 8(1): 91–102. |
[2] | SHI Yuhui, EBERHART R C. A modified particle swarm optimizer[C]//Proceedings of The 1998 IEEE International Conference on Evolutionary Computation. Anchorage, AK, USA:IEEE, 1998:69-73. http://www.oalib.com/references/15804376 |
[3] | SHI Yuhui, EBERHART R C. Fuzzy adaptive particle swarm optimization[C]//Proceedings of the 2001 Congress on Evolutionary Computation. Seoul, South Korea:IEEE, 2001:101-106. |
[4] |
王俊伟, 汪定伟. 粒子群算法中惯性权重的实验与分析[J].
系统工程学报, 2005, 20(2): 194–198.
WANG Junwei, WANG Dingwei. Experiments and analysis on inertia weight in particle swarm optimization[J]. Journal of systems engineering, 2005, 20(2): 194–198. |
[5] | SUGANTHAN P N. Particle swarm optimizer with neighborhood operator[C]//Proceedings of the Congress on Evolutionary Computation. Washington, DC, USA, 1999:1958-1962. |
[6] | RATNAWEERA A, HALGAMUGE S K, WATSON H C. Self-organizing hierarchical particle swarm optimizer with time-varying acceleration coefficients[J]. IEEE transactions on evolutionary computation, 2004, 8(3): 240–255. DOI:10.1109/TEVC.2004.826071 |
[7] |
于立君, 陈佳, 刘繁明, 等. 改进粒子群算法的PID神经网络解耦控制[J].
智能系统学报, 2015, 10(5): 699–704.
YU Lijun, CHEN Jia, LIU Fanming, et al. An improved particle swarm optimization for PID neural network decoupling control[J]. CAAI transactions on intelligent systems, 2015, 10(5): 699–704. |
[8] | KENNEDY J, MENDES R. Population structure and particle swarm performance[C]//Proceedings of Congress on Evolutionary Computation. Honolulu, HI, USA:IEEE, 2002:1671-1676. |
[9] |
潘峰, 陈杰, 甘明刚, 等. 粒子群优化算法模型分析[J].
自动化学报, 2006, 32(3): 368–377.
PAN Feng, CHEN Jie, GAN Minggang, et al. Model analysis of particle swarm optimizer[J]. Acta automatica sinica, 2006, 32(3): 368–377. |
[10] | HU Xiaohui, EBERHART R C. Multiobjective optimization using dynamic neighborhood particle swarm optimization[C]//Proceedings of the 2002 IEEE International Congress on Evolutionary Computation. Honolulu, HI, USA:IEEE, 2002:1677-1681. |
[11] | VAN DEN BERGH F, ENGELBRECHT A P. Training product unit networks using cooperative particle swarm optimisers[C]//Proceedings of IEEE International Joint Conference on Neural Networks. USA:IEEE, 2001:1-9. |
[12] | ANGELINE P J. Evolutionary optimization versus particle swarm optimization:philosophy and performance differences[M]//PORTO V W, SARAVANAN N, WAAGEN D, et al. Evolutionary Programming VⅡ. Berlin Heidelberg:Springer, 1998:601-610. |
[13] |
高鹰, 谢胜利. 基于模拟退火的粒子群优化算法[J].
计算机工程与应用, 2004(1): 47–50.
GAO Ying, XIE Shengli. Particle swarm optimization algorithms based on simulated annealing[J]. Computer engineering and applications, 2004(1): 47–50. |
[14] |
肖燕彩, 陈秀海, 朱衡君. 遗传支持向量机在电力变压器故障诊断中的应用[J].
上海交通大学学报, 2007, 41(11): 1878–1881.
XIAO Yancai, CHEN Xiuhai, ZHU Hengjun. The application of genetic support vector machine in power transformer fault diagnosis[J]. Journal of Shanghai Jiaotong University, 2007, 41(11): 1878–1881. |
[15] |
胡旺, 李志蜀. 一种更简化而高效的粒子群优化算法[J].
软件学报, 2007, 18(4): 861–868.
HU Wang, LI Zhishu. A simpler and more effective particle swarm optimization algorithm[J]. Journal of software, 2007, 18(4): 861–868. DOI:10.1360/jos180861 |
[16] |
郭广寒, 王志刚. 一种改进的粒子群算法[J].
哈尔滨理工大学学报, 2010, 15(2): 31–34.
GUO Guanghan, WANG Zhigang. A modified particle swarm optimization[J]. Journal of Harbin university of science and technology, 2010, 15(2): 31–34. |