时间:2024-07-28
崔兆亿,耿秀丽
(上海理工大学 管理学院,上海 200093)
支持向量机(Support Vector Machine,SVM)作为一种基于统计学习理论的机器学习算法,在解决小样本、非线性和高维模式识别问题中表现出许多特有的优势,并成功应用于故障诊断[1]、模式识别[2]等领域。SVM应用过程中存在一些问题:一方面,当数据集特征过多或存在一些异常特征时,SVM模型的分类性能和拟合效果会降低;另一方面,SVM内部参数的选取好坏也会影响SVM模型的分类性能及拟合效果。因此,数据集数据降维及内部参数选取对提高SVM模型的泛化性能起着非常重要的作用。
在处理特征过多的分类问题时,对数据集进行数据降维非常必要,可以提高SVM的运行速度。现有SVM研究与应用主要采用主成分分析(Principal Component Analysis,PCA)方法对数据集进行降维。解雪等[3]利用PCA将影响冻融土壤蒸发的因素降维,然后使用PSO-SVM模型预测冻融土壤的蒸发量。廖小平等[4]采用核主成分分析法进行数据降维,利用灰狼优化的支持向量机得到刀具磨损的分类等级。但PCA提取的主成分本身具有一定的模糊性,不如原始样本完整,而随机森林(Random Forest,RF)算法很好地解决这一问题,保留了原始样本中重要性高的特征。RAHMAN等[5]使用随机森林算法计算出特征重要度,并对其进行排名,在选择顶部排名的功能后,利用SVM对蛋白进行分类。RUSTAM等[6]将RF和SVM相结合用于对基因表达数据进行分类,并验证了RF-SVM可以有效地预测高维度的基因表达数据。夏丽莎等[7]提出一种基于随机旋转森林的集成支持向量机故障诊断算法,通过将监控数据进行属性随机分割、组合等处理,组建多个新训练子集并使用SVM算法进行训练。
另外,SVM对核函数参数和惩罚因子等参数的确定具有高度的依赖性,因此如何优化出最优参数是提高SVM模型泛化能力的关键。粒子群优化(Particle Swarm Optimization,PSO)算法作为一种基于群体智能的随机搜索算法,常用于优化SVM模型的核函数参数和惩罚因子等参数。LIU等[8]利用PSO-SVM模型预测每日PM2.5水平。马钢等[9]提出一种基于PSO-SVM模型的油气管道内腐蚀速率预测方法。虽然PSO算法能够优化得到SVM模型的参数,但PSO算法本身缺乏随机性,容易陷入局部最优。因此,越来越多的学者对传统的PSO-SVM算法进行改进,殷贤华等[10]将随机权重策略和异步学习因子同时引入到PSO算法中,并与SVM结合建立精确分类模型,提高橡胶和硫化促进剂的识别准确率。吴玉洋等[11]提出一种改进的粒子群算法,并结合最小二乘支持向量机(Least Squares Support Vector Machine,LSSVM)建立液体火箭发动机故障检测预测模型,最终提高了故障检测精度。虽然以上学者改进了粒子群算法,提高了精度,但是并未解决粒子位置更新的随机性,同样会遇到陷入局部最优的问题。
在量子力学中,根据不确定原理得知不考虑粒子的速度变化,并且粒子的位置是随机更新的,解决了PSO算法容易陷入局部最优的缺点。许多学者利用量子粒子群优化(Quantum Particle Swarm Optimization,QPSO)算法优化SVM模型的参数。LI等[12]将量子粒子群优化算法和最小二乘支持向量机结合建立边坡稳定性的非线性关系模型。党东升等[13]建立基于QPSO-SVM的故障分类模型,对变压器故障样本进行诊断。但是在分析大量数据时,一些冗余特征会增加计算工作量,降低模型的优化能力,影响模型的整体性能[14]。而目前在QPSO-SVM模型基础上结合数据降维的方法研究较少。因此,本文结合RF算法在特征选择领域和QPSO算法在参数优化领域的优势,优化SVM模型中的核函数参数和惩罚因子。通过RF算法计算出每个特征的重要性,筛选出相应的特征作为模型的训练集,然后利用QPSO算法寻找SVM模型的最优核函数和惩罚因子并进行模型的预测。最后,为了验证RF-QPSO-SVM模型的性能,将其应用于机器学习中的wine数据集中。实验仿真结果表明,RF-QPSO-SVM模型具有更高的训练精度和预测精度。
支持向量机(SVM)首先由CORTES等[15]在1995年提出,其基本思想是将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间中线性可分。假设给定一个包括N个训练样本的集合S,S={(xi,yi),i=1,2,…,N},其分类超平面的表达式及目标函数分别为[16]:
f(x)=w·x+b;
(1)
(2)
s.t.
yi(w·x+b)≥1-ξi;
ξi≥0,i=1,2,…,N。
式中:w为超平面的法向量;b为超平面的平移距离;ξi为非负松弛变量,用于提高模型的泛化能力;C为惩罚因子,用于权衡分类损失和最大间隔之间的关系。
本文选用高斯RBF(radical base function)函数作为核函数,高斯RBF为空间中任一点xi到某一中心点xj之间欧氏距离的单调函数,具有较好的实际应用效果[17],表达式为:
(3)
式中核函数参数σ影响着从样本空间到特征空间的映射。
C和σ对于SVM有很大的影响,因此选取合适的模型参数至关重要。
RF是一个包含多个决策树的分类器,其输出的类别由每个决策树输出类别的众数而定。RF算法如图1所示。
图1 随机森林算法示意图
随机森林计算特征重要性的步骤如下[18]:
步骤1针对每一颗决策树,选择相应的袋外数据(部分未被抽取的余留样本)计算袋外数据误差,记为error1。
步骤2随机对袋外数据所有样本的特征X加入干扰,再次计算袋外数据误差,记为error2。
步骤3假设森林中有N棵树,则特征X的重要性=∑(error2-error1)/N。
步骤4最后筛选出重要性高的特征作为新的数据集。
在量子粒子群算法中,粒子由薛定谔方程来描述,而不是标准粒子群算法的位置和速度。在一个粒子群规模为M的种群中,下标i表示粒子种群中的第i个粒子,则平均粒子历史最优位置为:
(4)
式中:pbesti表示第i个粒子当前的最优位置,pbesti=(pi1,pi2,…,piM)。与PSO算法位置更新方式不同,QPSO算法位置更新中加入一个区间为(0,1)的随机数λ,量子粒子i当前的最优位置更新公式为:
Pi=λ·pbesti+(1-λ)gbest。
(5)
式中:gbest表示当前全局最优粒子,Pi用于第i个粒子位置的更新。则最后采用蒙特卡罗法得出粒子的最优位置更新方程为:
(6)
式中:μ为(0,1)间的均匀分布数值;alpha为创新因子,能够控制粒子位置的收缩扩张程度,其值一般不大于1,正负号的概率均为0.5。
特征属性过多及内部参数的优选是影响支持向量机(SVM)模型泛化能力的重要因素。首先利用RF算法计算出每个特征的重要性,根据事先设定好保留的特征数量,保留特征重要性高的,剔除重要性低的特征,形成新的特征集用于SVM模型的训练。其次,通过QPSO算法优化SVM模型中的核函数参数和惩罚因子。最后,将最优参数代入到SVM模型中进行分类预测。RF-QPSO-SVM模型的构建过程如图2所示,具体步骤如下:
图2 RF-QPSO-SVM模型预测流程
步骤1给定初始数据集Q,设定RF算法需要保留的特征个数及QPSO算法初始参数(如粒子群的数量,参数的取值范围,alpha值等)。
步骤2利用RF算法计算出每个特征的重要性,进行降序排序,根据设定好的特征保留数量生成新的特征集Q′。
步骤3计算适应度函数。本文设置的适应度函数为SVM模型的训练精度。将数据集Q′作为QPSO算法的训练数据集,通过当前粒子的位置向量,训练SVM模型,并计算适应度值,并利用蒙特卡罗法不断更新粒子的位置。
步骤4判断结束条件。当寻优达到最大迭代次数时,则寻优结束;否则转步骤3,继续寻优。
步骤5将得到的粒子最优位置,即最优参数(C,σ)赋给SVM,并进行分类预测。
为了验证提出的RF-QPSO-SVM算法分类性能,选取UCI数据集的wine数据集进行测。UCI数据集是一个常用的机器学习测试数据集,是由加州大学欧文分校(University of California Irvine)提出的用于机器学习的数据库。wine数据集共有178个数据样本,13个化学成分属性,分别为Alcohol,Malic acid,Ash,Alcalinity of ash,Magnesium,Total phenols,Flavanoids,Nonflavanoid phenols,Proanthocyanins,Color intensity,Hue,OD280/OD315 of diluted wines,Proline,下文用A1~A13代替。整个数据集共分为3类(对应3种不同起源的葡萄酒)。由于数据集数据过多,只展示前5行数据如表1所示。通过对wine数据集13个化学成分属性进行分析,利用随机森林算法得出每个化学成分属性的重要性,进行特征抽取后,将降维后的数据集代入QPSO-SVM模型中进行预测。以上所有编程环境均在Pycharm 2019中实现。
表1 wine数据集前5行数据
为了能够更加直观地看出每个特征的分布情况,通过如图3和图4所示的直方图和箱型图进行展示。
图3 wine数据集特征直方图
图4 wine数据集特征箱型图
由图4可以看出,部分特征存在少数异常值,对整个数据集的影响不大。为了能够更加直观地看出各个特征之间的相关性,建立特征关系热度图如图5所示。
图5 特征间关系热度图
由图5可以看出,特征A6(Total phenols)和A7(Flavanoids)相关性最高(0.86),通过建立以A6作为x轴,A7为y轴坐标系,观察二者在平面分布是否呈现线性相关性,结果如图6所示。
图6 Total phenols与Flavanoids相关性图
由图6可以看出,特征A6(Total phenols)和A7(Flavanoids)近似可以呈现出线性相关,因此在数据预处理阶段,可以剔除特征A6(Total phenols)和A7(Flavanoids)其中一个,保留特征重要度高的特征。
上文分析wine各个特征情况,下面利用RF计算wine各个特征的重要性,并对wine数据集进行特征选择,保留特征重要性高的,剔除重要性低的特征,以达到数据降维的效果。本文设置树的个数n_estimators=20 000,结果如图7所示。
特征图7 wine特征的重要程度
wine各个特征的重要程度如表2所示。本文抽取了6个特征属性,分别为A1,A2,A3,A4,A5,A6,特征重要程度总占比为86.4%,剔除其余7个特征属性。
表2 wine各个特征的重要程度
首先,将随机森林算法特征选择后的数据集作为多分类SVM模型的数据集。然后,利用量子粒子群优化(QPSO)算法进行2—折交叉验证(2-fold Cross Validation,2-CV)的参数寻优,找出最优参数对(C,σ)代入多分类SVM模型,并对wine数据集进行预测。在QPSO算法中,本文参数设置为:种群数量为20,粒子维度为2,alpha为0.8,由于wine数据样本不多,并通过多次试验,迭代次数设置为100次能够寻找出最优参数,若数据样本过多,可以增加迭代次数,因此本文迭代次数设置为100次,适应度函数为2-CV下的分类精度,算法停止条件为迭代次数大于100次[19]。通过每一次迭代得出一个参数对(C,σ),反复迭代到最大的迭代次数输出最优的参数对(C,σ)。
构建RF-QPSO-SVM模型后,为了能够找出最优的核函数参数和惩罚因子,使用训练精度作为评价指标,训练精度最高情况下对应的核函数参数值和惩罚因子值为最优值,并与RF-PSO-SVM,QPSO-SVM,PSO-SVM进行对比,模型训练对比结果如图8所示。图8a和图8b首先利用随机森林算法对wine数据集进行降维,然后利用QPSO和PSO算法寻优SVM模型的参数,而图8c和图8d是利用QPSO和PSO算法对原数据集进行寻优SVM模型的参数,SVM的寻优参数C,σ数值如表3所示。由表3可以看出,RF-QPSO-SVM模型的训练精度最高(83.89%),优于RF-PSO-SVM,QPSO-SVM,PSO-SVM模型,证明了该模型具有更高的寻优精度。
表3 不同模型SVM参数及精度对比
图8 模型训练对比图
将表3中的参数代入到SVM中,并用45个测试样本进行测试。为了验证RF-QPSO-SVM模型预测的准确性和性能,增加了与GA-SVM、SVM、RF-RF预测方法的比较,并将预测精度和均方误差作为评价指标。实验中各种预测方法分别预测20次,抽取其最优预测值,最终得到的预测结果比较如表4所示。仿真结果表明,RF-QPSO-SVM模型预测准确度为93.33%,优于其他各种算法,因此相对来说其具有更好的适应性和预测能力。另外,RF-QPSO-SVM的均方误差为0.133,说明RF-QPSO-SVM模型预测建模效果良好。
表4 各种模型预测结果对比
本研究针对数据集特征过多及SVM内部参数的选取两个方面来提高SVM模型的预测性能,将随机森林和量子粒子群优化算法结合优化SVM模型的核函数参数和惩罚因子。利用随机森林算法进行特征抽取,量子粒子群优化算法优化SVM模型的核函数参数和惩罚因子,最后将所提模型用于wine数据集的分类预测。实验结果表明,利用RF-QPSO-SVM模型对wine数据集进行预测是可行的,训练数据精度达到83.89%,与RF-PSO-SVM、QPSO-SVM和PSO-SVM相比,训练精度最高,并且寻优速度也是最快的,在对测试集预测中,相比RF-PSO-SVM、QPSO-SVM、PSO-SVM、GA-SVM、SVM、RF-RF模型,该模型的预测精确度最高(93.33%),并且均方误差最小(0.133),说明RF-QPSO-SVM模型预测建模效果良好,具有更好的泛化能力。但是本文对于wine数据集的预测精度还可以进一步提高,如何找到最优的特征子集并找到契合该特征子集的预测模型,提高预测精度将是今后研究的方向。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!