1. 引言
如今,随着科学技术的不断进步,各个领域都产生了巨大而复杂的信息。为了处理这些海量数据,数据挖掘和机器学习层出不穷。支持向量机(SVM)是一种常见的机器学习方法,在处理有限样本、高维和非线性数据等复杂问题时具有独特的优势。支持向量机的性能与核参数和惩罚因子密切相关,选择合适的参数是提高分类正确率的关键。此外,原始数据集大多包含冗余和不相关的信息,这需要很长时间来建模,并导致性能下降和数据分析困难。因此,许多研究者使用特征选择等预处理技术从数据集中选择特征子集,去除噪声、无关和模糊数据,以提高分类精度。
近年来,元启发式算法由于其强大高效的性能,在解决许多组合优化问题方面表现良好。许多研究人员尝试使用元启发式算法来解决特征选择问题,在尽可能保留信息的同时,减少原始数据集的维数,有利于提高模型的准确性和效率。飞蛾火焰优化算法(MFO) [1] 算法是Mirjalili提出的一种群智能优化算法,因其具有结构简单、易于操作的优点在许多实际问题中被广泛应用。然而,对于一些复杂的优化任务,特别是高维和多模态问题,MFO可能存在收敛过早、容易陷入局部最优的问题。因此,许多研究者提出了一些改进策略,以提升它的性能。本文针对MFO算法的不足加以改进,并应用到特征选择中,在提升数据集分类正确率的同时,减少了特征数量。本文的主要研究内容如下:
1) 通过引入Hénon初始化、反馈共享机制和惯性权重因子到MFO算法,提出了一种改进的飞蛾火焰算法(IMFO),并在12个基准函数上进行测试。
2) 将改进的飞蛾火焰算法用于同时优化SVM的参数和特征子集,提高分类的准确率和效率,并在12个UCI数据集上进行测试。
2. 相关工作
目前,对SVM参数的优化有很多方法。宋玉生等人使用改进的灰狼算法优化SVM参数,并应用到太阳能光伏故障诊断中 [2] ;Albashish等人使用改进的生物地理学优化算法优化SVM参数 [3] ;徐国天等人使用改进的哈里斯鹰算法优化SVM参数 [4] ;郭辉等人改进的利用鲸鱼优化算法优化SVM参数 [5] 。
此外,MFO算法在很多领域得到了应用。刘雨豪等人提出了基于飞蛾火焰优化(MFO)算法的模糊控制器设计 [6] ;王秀莲等人使用MFO算法优化RBF神经网络 [7] ;徐炜翔等人使用MFO算法搜索自主水下航行器路径,获得能耗最优的无碰路径 [8] 。他们都取得了很好的效果,说明飞蛾火焰算法在解决实际工程应用问题上有较好的能力。
为进一步提高MFO算法的优化性能,不少研究者对该算法进行改进。Li等人通过引入混沌方法来MFO算法的缺点 [9] ;何加文等人提出了一种多策略融合改进的飞蛾火焰算法,并应用于实际工程问题中 [10] ;Ma等人引入差分进化提升MFO算法跳出局部最优的能力 [11] ;Elaziz等人提出一种基于反向学习和差分进化的飞蛾火焰算法用于特征选择 [12] 。
3. 飞蛾火焰优化算法
飞蛾火焰优化算法(MFO)由飞蛾和火焰两种角色构成。飞蛾种群用M表示,火焰种群用F表示,飞蛾和火焰的适应度值分别用OM和OF表示。
飞蛾采用螺旋更新方式,每只飞蛾对应火焰更新位置方式如公式(1)所示:
(1)
其中,
代表第i只飞蛾;
代表第j个火焰;
表示飞蛾与火焰之间的距离,
;t是一个随机数;b为螺旋形状常数,
。
每次迭代后火焰按适应度值进行排序,使用式(2)在迭代过程中自适应地减少火焰的数量:
(2)
其中,n表示的是当前设定的种群数目,1表示的算法运行到此的迭代次数,T代表的算法运行的终止条件,即最大迭代次数。
飞蛾火焰算法流程为:
1) 设置初始参数:飞蛾和火焰的种群规模、最大迭代次数、初始化种群;
2) 计算飞蛾和火焰种群的适应度值;
3) 根据公式(1)更新飞蛾的位置;
4) 根据公式(2)计算火焰数量,对火焰进行排序和更新;
5) 判断是否达到最大迭代次数,若达到,则输出最优结果;否则返回步骤(2)继续执行操作。
4. 支持向量机
支持向量机(SVM)是Vapnik为构建统计学习理论而引入的分类模型。它的灵感来自于最大化类之间的几何边界的想法。支持向量机训练阶段的主要目标是使分类线能够将两类区分开,且类之间的分类间隔最大,以在特征空间中找到能够很好地分离不同类别的最优分类面。
支持向量机的判别函数为等式(3):
(3)
其中,x是输入样本,b是偏差,
表示通过等式(4)计算得到:
(4)
其中,
是拉格朗日乘数,c是惩罚因子。
SVM中最常见的核函数是高斯核函数,如等式(5)所示:
(5)
其中,
为核参数。
5. 改进的飞蛾火焰算法
为了克服原始MFO算法寻优精度低和容易陷入局部最优等缺点,本文提出了一种基于反馈共享和惯性权重因子的飞蛾火焰算法(Improved MFO, IMFO)。首先,引入Hénon初始化以增加种群的多样性,其次,利用反馈共享机制增强飞蛾之间的信息交流,使个体容易脱离局部最优,最后,引入惯性权重因子改进飞蛾位置更新公式,该因子可以显著增强算法的勘探能力。
5.1. Hénon初始化
基本的飞蛾火焰算法采用随机方式初始化飞蛾的位置,这可能会导致算法在搜索空间中分布不均匀,影响算法的搜索能力。使用Hénon的混沌序列分布可以使种群分布更加均匀,并增加蝴蝶个体的多样性,从一定程度上帮助算法跳出局部最优。因此,本文采用Hénon初始化飞蛾种群,计算方式如下所示 [13] :
(6)
(7)
其中,
,
,k代表混沌迭代次数,通过式(6)产生[0, 1]区间上n个不同的混沌序列式(7),最后通过逆映射得到个体搜索空间变量
:
(8)
其中,ub和lb是搜索空间的上、下界。
5.2. 反馈共享机制
由于基础的MFO算法只能根据火焰的位置进行更新,缺乏了飞蛾种群之间的信息交流,容易导致算法陷入局部最优。飞蛾在绕火焰飞行过程中,彼此之间会不断地进行信息交换,以找到最亮的火焰。飞蛾向附近随机的一只飞蛾发送信息,根据随机飞蛾反馈的火焰信息进行比较,如果比自己发现的火焰亮,则说明最亮的火焰在随机飞蛾和最优飞蛾周围,通过正反馈作用,该飞蛾会移动到两只飞蛾周围;如果比自己发现的火焰暗,则说明最亮的火焰不在随机飞蛾周围,通过负反馈作用,该飞蛾会移动到最优飞蛾的位置。数学模型描述如下:
(9)
(10)
(11)
其中,
是共享系数,
和
分别是适应度的最大值和最小值,r是一个0到1之间的随机数,
是反馈因子,
表示当前迭代个体数,
表示随机飞蛾的位置,F表示适应度值。
5.3. 惯性权重因子
在MFO算法中,飞蛾绕火焰以螺线方式更新位置,搜索区域较大,导致收敛速度较慢,勘探能力较弱。因此,本节引入惯性权重因子提升算法的搜索能力,较大的因子能够使得飞蛾在整个飞行空间内进行搜索,较小的因子能够使得飞蛾在局部区域内精准搜索。该因子通过如下公式更新:
(12)
其中,
,
。
引入权重因子之后,飞蛾的位置更新公式为:
(13)
(14)
5.4. 改进的飞蛾火焰算法流程
改进的飞蛾火焰算法流程如下:
1) 设置初始参数:飞蛾和火焰的种群规模、最大迭代次数;
2) 使用公式(8)初始化种群;
3) 计算飞蛾和火焰种群的适应度值;
4) 随机选择一个飞蛾xr,比较当前飞蛾xi与随机飞蛾的适应度值;
5) If fitness(xr) < fitness(xi),使用公式(11)中的正反馈更新飞蛾位置,否则,使用负反馈更新飞蛾位置;
6) 使用引入惯性权重因子的公式(14)更新飞蛾位置;
7) 使用公式(2)计算火焰的数量,对火焰进行排序和更新;
8) 判断是否达到最大迭代次数,若达到,则输出最优结果;否则返回步骤(3)继续执行操作。
6. IMFO-SVM同步优化参数和特征子集
特征选择是一个二进制优化问题,必须将CESDAVO的连续值转换为相应的二进制值。也就是说,每个特征子集都可以被视为飞蛾的位置,飞蛾向量的维数是特征子集的长度。矢量的每个单元可以包含两个值1或0,其中值1表示选择了相应的特征,值0表示未选择该特征。
该转换是通过使用Sigmoid函数来实现的,转换公式如等式(15)所示:
(15)
特征选择的目标是在保证较高分类正确率的前提下选择最少的特征子集。因此,本文使用适应度函数(16)来评估每个解:
(16)
其中,E表示SVM分类器给出的错误率,S是所选特征的数量,N是原始数据集的特征数量,
,
是惩罚因子。本文实验中
,
。
使用IMFO算法优化SVM特征选择的具体步骤如下:
1) 输入数据,划分数据集,并将数据集进行归一化处理;
2) 创建SVM模型,随机生成SVM参数,初始化种群,并进行编码:飞蛾种群维度的前两维采用实数编码用于优化SVM的参数c和σ,其他维度进行二进制编码用于选择特征子集;
3) 利用式(16)的适应度函数计算适应度值;
4) 使用IMFO算法优化搜索SVM的最优参数(c, σ)和特征子集;
5) 将优化后的参数和特征子集的训练集一起输入到SVM模型中进行训练;
6) 计算适应度值,适应度值最小的子集即为具有最大分类正确率和最少特征数量的最优子集;
7) 用所选特征子集的测试集对训练的SVM进行测试;
8) 判断是否满足算法终止条件,如果是,则进行结果评估并输出最终结果,否则返回步骤(3)继续运行。
基于IMFO算法优化SVM特征选择的流程图如下图1所示。
7. 仿真实验
7.1. 改进飞蛾火焰算法测试实验
7.1.1. 测试函数
为测试IMFO算法的能力,本章采用12个函数对该算法进行测试,其中F1~F4是单峰型,它们只有一个全局最优解,用于验证算法的收敛速度;F5~F8是多峰型,它们具有局部最优解,可用于判断算法避免陷入局部最优的能力。F9~F12是固定维多峰型,固定维多峰函数提供了比其他基准函数更多的搜索空间,用于判断算法的全局搜索能力。测试函数如表1所示。
7.1.2. 实验结果与分析
为测试引入的改进策略是否有效,分别在12个函数的30维度和100维度上对IMFO与MFO进行测试,算法的迭代次数均设为500,在每个函数上运行30次,并记录每个函数上适应度值的最优值、平均值和标准差,实验结果如表2所示。

Table 2. The result of function test
表2. 函数测试结果
在单峰函数测试中,IMFO在4个测试函数上的30、100维度上均获得了最小的适应度、平均值和标准差,这表明IMFO算法具有更强的寻优能力和稳定性。在多峰函数测试中,IMFO在F5、F6、F7上同样获得了最小的适应度值、平均值和标准差,在F8的30维度上得到了了最优的适应度值、平均值和标准差,在100维上虽然没有得到最小的适应度值,但得到了最小的平均值和标准差,说明IMFO在多峰函数上也比MFO有更好的表现。在固定维多峰函数上,IMFO算法也在30和100维度上均获得了最小的最优值、平均值和标准差,说明IMFO算法具有更好的全局搜索能力。总的来说,这些实验结果表明,引进的改进策略大大提升了原始算法的寻优能力,并且随着维度的增加,IMFO算法的寻优能力越来越好,说明改进的算法在解决高维和复杂问题上也具有强大的能力。
7.2. 特征选择实验
7.2.1. 数据集
UCI是一个广泛用于数据分析和分类的机器学习数据库(UCI Machine Learning Repository: Data Sets)。本文使用12个数据集来评估IMFO-SVM的性能。
7.2.2. 评价指标
以下标准用于评估不同算法的性能:
1) 适应度值:它们是从适应度函数中获得的,适应度函数表示算法收敛的速度和值;
2) 分类正确率:它是分类器给出的指标,描述了算法选择特征集的准确程度。该值越大,分类效率越好;
3) 特征约简率:这是一个描述特征减少率的指标,由
计算得到。其中,N是原始数据集
中的特征数量,S是所选特征数量。该值越大,说明特征约简效率越高。
7.2.3. 实验结果与分析
为测试IMFO在同步优化中的有效性,使用了四个优化算法进行比较,包括差分进化算法(DE)、灰狼优化算法(GWO)、粒子群算法(PSO)和鲸鱼优化算法(WOA)。为保证实验的公平性,种群的大小和最大迭代次数分别设置为20和100。所有算法在每个数据集上运行20次,分别计算适应度值、分类正确率和特征选择率的最优值和平均值。
表3显示了20次运行中每个算法获得的适应度值的最优值和平均值,从中我们可以看出,基于MFO的特征选择方法在12个数据集中均获得了最优的适应值,即适应度函数的最小值。具体而言,IMFO算法在4个数据集上适应度值优于DE,在8个数据集上与之并列第一;在8个数据集上适应度值优于GWO,在4个数据集上与之并列第一;在5个数据集上适应度值优于PSO,在7个数据集上与之并列第一;在10个数据集上适应度值优于WOA,在2个数据集上与之并列第一。这说明该方法在同步优化SVM参数和特征子集问题上的寻优能力明显优于其他算法。此外,IMFO算法在除了Vote和Wine之外的10个数据集中都获得了最优的平均适应度值,这意味着它在该问题的寻优过程中比GWO、PSO、WOA和MFO具有更好的稳定性。

Table 3. Comparison of fitness values of different optimization algorithms
表3. 不同优化算法的适应度值比较
各算法在12个数据上分类正确率的最优值和平均值如表4所示。实验结果表明,MFO算法在12个数据集中分类正确率的最优值均是最高。具体而言,IMFO在5个数据集上的最优分类正确率高于DE,在7个数据集上与DE并列第一;在8个数据集上的正确率高于GWO,在4个数据集上与GWO并列第一;在5个数据集上的正确率高于PSO,在7个数据集上与PSO并列第一;在9个数据集上的正确率高于WOA,在3个数据集上与WOA并列。这表明IMFO分类正确率的最优值明显优于其他是个算法。此外,IMFO在除Breast cancer和Vote之外的10个数据集上的平均分类正确率均高于DE、GWO、PSO和WOA。这说明该算法不仅有效地提高了数据集的分类正确率,并且具有很好的稳定性。
算法在12个数据集上的特征选择率如表5所示。IMFO算法在8个数据集上特征约简率的最优值高于其他算法,分别达到了78.6%、77.8%、76.9%、26.5%、66.7%、45%、77.8%、53.8%,这说明IMFO算法能大大地约简原始数据集的特征,且相较于其他算法有更好的特征约简能力。综合IMFO算法获得的分类正确率,证明了该算法可以在约简特征和提升分类正确率上达到很好的平衡。

Table 4. Comparison of classification accuracy rate of different optimization algorithms
表4. 不同优化算法的分类正确率比较

Table 5. Comparison of feature reduction rate of different optimization algorithms
表5. 不同优化算法的特征约简率比较
8. 总结
本文提出了一种改进的飞蛾火焰算法(IMFO)。首先,使用Hénon混沌机制对种群初始化,有效增加了飞蛾种群的多样性;其次,飞蛾在迭代过程中随机挑选一只飞蛾建立反馈机制,增强飞蛾之间信息交流,通过正负反馈原理提升了算法逃离局部最优的能力;最后,引入惯性权重因子提升算法后期的勘探能力,提升算法寻优能力并加快算法收敛速度。通过在基准函数上的实验结果表明,IMFO算法有效提升了MFO算法的寻优能力,能够得到比原始算法精度更高的最优解。
在此基础上,将IMFO算法转换为二进制编码,并用于同时优化特征子集和SVM的参数。使用12个UCI数据集对算法进行测试,并与其他4个算法(GWO、PSO、WOA和MFO)进行比较。实验结果表明,IMFO算法能在保证高分类准确率的前提下,降低特征数量,优于其他算法的特征选择能力,同时具有更好的稳定性。
基金项目
广西自然科学基金(GUIKE AD18126010),广西高校中青年教师科研基础能力提升项目(2022KY0164)。