分类预测 | Matlab实现SSA-SVM多特征分类预测

目录

  • ​​分类预测 | Matlab实现SSA-SVM多特征分类预测​​
  • ​​基本介绍​​
  • ​​模型设计​​
  • ​​程序设计​​
  • ​​参考资料​​

基本介绍

Matlab实现基于麻雀算法优化支持向量机的数据分类预测。针对支持向量机( support vector machine,SVM) 的分类性能受自身参数选择影响较大的问题,提出了基于麻雀搜索算法( sparrow search algorithm,SSA) 优化SVM 的特征分类方法。利用麻雀搜索算法( SSA) 对支持向量机的惩罚参数( C) 与核参数( g) 进行优化,并构建SSA-SVM 模型。

  • 麻雀搜索算法(Sparrow Search Algorithm, SSA)是于2020年提出的。SSA 主要是受麻雀的觅食行为和反捕食行为的启发而提出的。该算法比较新颖,具有寻优能力强,收敛速度快的优点。
  • SVM是由模式识别中广义肖像算法(generalized portrait algorithm)发展而来的广义线性分类器,通过在SVM的算法框架下修改损失函数和优化问题可以得到其它类型的线性分类器。

模型设计

麻雀搜索算法( sparrow search algorithm,SSA)是一种新颖的群体优化算法,它是受麻雀种群的觅食和反捕食行为启发,通过19 个标准测试函数验证SSA 算法在搜索精度,收敛速度,稳定性和避免局部最优值方面均优于现有算法。基于此,将SSA 算法应用到SVM 的参数选择中,以SVM 训练集分类准确率最高为优化目标,选择最优的惩罚因子和核参数,建立SSA-SVM 模型。

  • SSA 算法是根据麻雀觅食并逃避捕食者的行为提出的群智能优化算法,在麻雀觅食的过程中,分为发现者和追随者,发现者在种群中负责寻找食物并为整个麻雀种群提供觅食区域和方向,而追随者则是利用发现者来获取食物。
  • 为了获得食物,麻雀通常可以采用发现者和追随者这两种行为策略进行觅食。种群中的个体会监视群体中其他个体的行为,并且该种群中的攻击者会与高摄取量的同伴争夺食物资源,以提高自己的捕食率。
  • 此外,当麻雀种群意识到危险时会做出反捕食行为。SSA 算法的数学模型。在SSA 中,具有较好适应度值的发现者在搜索过程中会优先获取食物。因为发现者负责为整个麻雀种群寻找食物并为所有追随者提供觅食的方向,因此,发现者可以获得比追随者更大的觅食搜索范围。

支持向量机( support vector machine,SVM) 是由Vapnik 教授提出的一种基于统计学方法的机器学习方法。SVM 是一种不同于神经网络的机器学习方法,尤其是对于小样本数据分类问题,SVM 有着出众的分类效果,SVM 的目的在于寻找一个最优超平面,使得不同数据最近分界面与超平面的距离最大。

分类预测 | Matlab实现SSA-SVM多特征分类预测_分类预测

( 1) 首先确定模型的输入、输出,确定目标输出值,建立训练、测试样本集。
( 2) 初始化麻雀搜索算法相关参数,包括种群规模、最大迭代次数,SVM 参数C、g。
( 3) 通过交叉验证,对训练样本进行分类,以交叉验证的准确率作为麻雀个体的适应度。保留最优的适应度值及位置信息。
( 4) 计算预警值,以预警值大小为依据。
( 6) 更新意识到危险的麻雀位置,处于种群外围的麻雀会向安全区域靠拢,处在种群中心的麻雀则随机行走以靠近别的麻雀。
( 7) 计算麻雀个体新位置的适应度值,将更新后的适应度值与原来的最优值进行比较,并更新全局最优信息。
( 8) 判断迭代次数是否满足终止条件,如不满足,则重复步骤( 3) ,反之则停止,输出最优参数,将测试集样本输入到最优的SVM 模型,输出诊断结果。

程序设计

  • 完整源码私信博主。
for i=1:size(SalpPositions,1)
SalpPositions= SalpPositions';
if i<=N/2
for j=1:1:dim
c2=rand();
c3=rand();
%%%%%%%%%%%%% % Eq. (3.1) in the paper %%%%%%%%%%%%%%
if c3<0.5
SalpPositions(j,i)=FoodPosition(j)+c1*((ub(j)-lb(j))*c2+lb(j));
else
SalpPositions(j,i)=FoodPosition(j)-c1*((ub(j)-lb(j))*c2+lb(j));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end
elseif i>N/2 && i<N+1
point1=SalpPositions(:,i-1);
point2=SalpPositions(:,i);
SalpPositions(:,i)=(point2+point1)/2; % % Eq. (3.4) in the paper
end
SalpPositions= SalpPositions';
end
for i=1:size(SalpPositions,1)
Tp=SalpPositions(i,:)>ub';Tm=SalpPositions(i,:)<lb';SalpPositions(i,:)=(SalpPositions(i,:).*(~(Tp+Tm)))+ub'.*Tp+lb'.*Tm;
SalpFitness(1,i)=fobj(SalpPositions(i,:));
if SalpFitness(1,i)<FoodFitness
FoodPosition=SalpPositions(i,:);
FoodFitness=SalpFitness(1,i);
end
end
Convergence_curve(l)=FoodFitness;
  • 预测效果:

参考资料

[1] Liu Lu,Wang Taiyong. Support vector machine optimization based
on artificial bee colony algorithm[J]. Journal of Tianjin University,
2011,44( 9) : 803-809.
[2] Xue J K, Shen B. A novel swarm intelligence optimization
approach: sparrow search algorithm[J]. Systems Science & Control
Engineering,2020,8: 22-34,