Java教程

支持向量机:蝙蝠算法优化支持向量机SVM预测原理与MATLAB代码

本文主要是介绍支持向量机:蝙蝠算法优化支持向量机SVM预测原理与MATLAB代码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

 1 蝙蝠算法

1.1 算法简介

1.2 算法原理

2 支持向量机基本理论

2.1 支持向量机简介

2.2 支持向量机回归SVR

3. 优化原理

3.1 优化模型构建

3.2 优化步骤

4 优化实例

4.1 实验数据

4.2 实验结果


1 蝙蝠算法

1.1 算法简介

蝙蝠算法BA于2010年提出,算法利用蝙蝠通过回声定位行为进行捕食的原理进行优化问题的求解。蝙蝠算法的提出虽然距今有十多年,但与经典的优化算法相比,仍是一种新型启发式算法,具有参数少、稳定性高、求解速度快、寻优能力强等优点,已在工程优化、特征选择、故障诊断和数据挖掘等多个领域展现出较好的应用效果,仍有改进点和创新之处。

蝙蝠回声定位原理为:蝙蝠以脉冲的形式发射一定频率和响度的超声波,当超声波在传播的过程中遇到物体时会返回回声,通过对接收到的回声进行处理,蝙蝠可以检测到物体相对于自身的距离和方向,以及物体的大小和运动速度,从而捕食或者避开障碍物。

1.2 算法原理

蝙蝠算法是在理想状态下, 利用蝙蝠在觅食时所发出的脉冲的频率f、响度Ai、脉冲发射率ri 的变化而模拟设计出的一种新型群体智能算法。

通过频率f的调整可以引起波长λ的变化,波长λ的大小与蝙蝠所捕食猎物的大小相一致,从而可定位目标。 频率越高,波长和行程的距离越短。一般频率f 在[fmin; fmax]范围内变化,并对应于波长范围[λminλmax]。蝙蝠按脉冲发射率ri∈[0,1]和响度Ai发出声波脉冲。蝙蝠在定位过程中发现目标时会增加脉冲发射率,减小响度,逼近目标,从而捕食猎物。

为了建立蝙蝠回声定位行为的数学模型,设定2个理想化规则:

(1)搜索规则:蝙蝠随机飞行,同时以固定的频率、可变的波长和音量的超声波来搜索猎物。

(2)参数变化规则:蝙蝠根据自身与猎物的距离来自动调整脉冲波长和脉冲发射率,并限定声音响度在指定范围内依照给定方式由大到小变化。

算法求解过程由若干独立搜索的蝙蝠完成,算法首先将每只蝙蝠视为当前可行域内的一个解,每个解对应一个由所优化问题确定的适应值,每只蝙蝠通过调整其脉冲频率、声音响度、脉冲发射率3项参数来追随当前最优蝙蝠,使得整个种群在问题求解空间中产生从无序到有序的衍化,进而获取最优解。脉冲频率、速度和位置的更新方式如式(1)~式(3)所示:

\begin{gathered} f_{a}=f_{\min }+\left(f_{\max }-f_{\min }\right) \beta ,(1)\\ v_{a}^{t}=v_{a}^{t-1}+\left(x_{a}^{t-1}-x^{*}\right) f_{a} ,(2)\\ x_{a}^{t}=x_{a}^{t-1}+v_{a}^{t},(3) \end{gathered}

式中,fa表示第a 只蝙蝠的脉冲频率;fmaxfmin分别表示脉冲频率的最大值和最小值;β 是均匀分布的随机数,β∈[0,1];xat-1和vat分别表示第t-1代蝙蝠a所在的位置和速度;xatvat分别表示第t代蝙蝠a 所在的位置和速度;x*表示当前最优解,当前最小适应度值对应的蝙蝠位置即为当前最优解。

算法实现流程如下所示:

Begin

        初始化算法相关参数及蝙蝠的位置、速度和脉冲频率;

        根据蝙蝠的初始位置计算适应度值,得出初始解,找出最优蝙蝠位置;

        Whilet<最大迭代数)

                根据式(1)~式(3)分别调整蝙蝠的脉冲频率、速度和位置;

        If(当前随机数>当前脉冲发射率)   

                在当前最优解附近根据式(4)进行局部搜索;

x_{n e v}=x^{*}+\varepsilon^{*} \mu,(4)

                式中, xnew表示随机扰动得到的新解;ε 表示服从标准正态分布的随机向量,且ε(0,1);μ表示常量,且0<μ<1;x* 表示当前最优解。

        End if

  If(当前随机数<当前声音响度,且xnew的适应度值优于x*)

          接受新解,分别根据式(5)和式(6)更新脉冲发射率和声音响度;

\begin{gathered} r_{a}^{t}=r_{a}^{0}[1-\exp (-\gamma t] ,(5)\\ A_{a}^{t+1}=p A_{a}^{t},(6) \end{gathered}

                式中,t表示代数;Ata和Aat+1分别表示蝙蝠a在第t代和第t+1代的声音响度;ra0和rta分别表示蝙蝠a在第0代和第t代的脉冲发射率;常量p表示声音响度的衰减系数,0<p<1;常量 γ 表示搜索频率的增强系数,γ>0。

        End if

                输出全局最优解;

        End while

End

2 支持向量机基本理论

2.1 支持向量机简介

支持向量机(Support Vector Machine,SVM)是在20世纪90年代初提出的,它建立在统计学习理论的VC维概念和结构风险最小原理基础上,可以根据有限的样本信息实现计算量和计算能力之间的平衡性,是归属于统计学的新兴分支。其独特的对于数据的归类识别能力,使其能够有效地应用到机器学习的相关领域进行预测分析。

对于群体在线性可分情况下的分类情况示意如图1所示,由图可知,两类不同的样本被分类线H分离,且存在两条与H平行的直线H1和H2分别经过了两组样本最靠近分类线的样本。针对此结果,可得出最优分类线的定义:针对两样本存在一条分类线能将其正确分类,而且H1和H2的距离最大。

 图1. 最优分类线示意图

针对以上基本理论,将分类线H的方程设为wx+b=0,并将该方程归一化,有:

y_{i}\left(w \cdot x_{i}+b\right)-1 \geqslant 0,(1)

在方程(1)的样本集(xi ,yi)中有以下关系:xiRdyi={-1,+1},i=1,2,…,n。据此可知分类间隔(margin)为2/ ||w||。若要在计算中实现分类间隔最大化,则通过约束实现||w||2最小即可。

据此,最优分类线在数学上的定义可描述为满足式(1)且使||w||2最小的方程表达式,而在H1和H2上进行训练的样本点则为对应的支持向量。

以上分析是基于二维平面概念而言的,那么在VC维空间里,则所分析的样本理论上分布在一个超球范围内,同样存在一超平面能够将超球内的样本进行有效分类,将超平面表示为 fx,w,b)=sgn(wx+b)。若要实现有效分类,则该函数满足以下关系:

h \leqslant \min \left(A_{2} R_{2}, N\right)+1,(2)

其中,RN分别为超球半径和空间的维数,且在超球中存在条件||w||≤A。与二维系统同理,当w最小时,VC维可取得最小值。

为了实现对最优分类面的求解,通常引用拉格朗日优化方法,利用该方法将此问题转化为对偶问题,可得:

Q(\alpha)=\sum_{i=1}^{n} \alpha_{i}-\frac{1}{2} \sum_{i, j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right),(3)

式(3)中的αi对应于每个数据样本中的拉格朗日乘子,且该因子有以下关系:

\sum_{i=1}^{n} \alpha_{i} y_{i}=0, \alpha_{i} \geq 0, i=1,2, \cdots, n,(4)

由于式(3)受到不等式的约束,所以能够求解出该方程的唯一解。同时,对于系列解的结果中存在少部分αi不为零的数据样本的合集便组成了支持向量。基于以上解的结果,可知分类曲面所对应的最优函数表达式为:

f(x)=\operatorname{sgn}(w \cdot x+b)=\operatorname{sgn}\left(\sum_{i=1}^{n} \alpha_{i}^{*} y_{i}\left(x_{i} \cdot x\right)+b^{*}\right),(5)

据上述分析可知,大部分的求解结果αi均为零,所以式(5)中的有效求和只是有效支持向量的解的和。对应的分类阈值b*可通过将式(5)代入任一支持向量求得。

2.2 支持向量机回归SVR

支持向量机回归(Support Vector Regression , SVR)的主要思想是,引入核函数将样本空间中非线性回归映射为高维空间中的线性回归问题,即寻找一个最优分类超平面,使得所有训练样本离该最优超平面的误差最小。回归目的是得到一个能够尽量拟合训练集样本的模型,通常用的方法是构建一个样本标签与模型预测值的损失函数,使损失函数最小化,从而确定模型。

对于给定的样本数据集合

这篇关于支持向量机:蝙蝠算法优化支持向量机SVM预测原理与MATLAB代码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!