利用PSO优化SVM
基于PSO优化LS-SVM的异步电动机振动故障诊断
位置振动信号 的特征频率作 为系统的输入 , 然后利用训练好的粒子群算 法优 化后的 最小二乘 支持 向量机 进行异步 电动机 振动的故 障诊 断。最终结果与其他诊 断方法对 比表明 : 该方法克服 了样本训练 时间较 长并容 易陷入局部收敛的缺点 , 同时 诊断的准确率较 高, 有效地避免 了异步 电动机 故障的误诊断。 关键 词: 异步电动机 ; 振动 ; 故障诊断 ; 粒子群算法 ; 最小二乘支持 向量机
作 者 简 介 : 建辉 (9 4一) 男 , 士 研 究 生 , 要 研 究 方 向 为 电力 设 备 状 态检 测 与 故 障 诊 断 。 薛 18 , 硕 主
通过对 三相 鼠笼式 异步 电机 常见 故 障机 理分 析 可 知 鼠笼式 异 步 电 动机 的主 要 故 障 为 :定 子 匝 间短 路 、 转 子断条和气 隙偏 心 。在 以往 的异 步 电动 机 故 障监 测 与诊 断系统 中 ,多数是 利用算 法诊 断 ,且监测 量单一 。 但是 异步 电动机 故 障时 谐波 成 分相 当丰 富 ,故 分 类 和 识别工作 复杂 。 目前 国 内许 多专 家学 者 提 出 了多 种方 法对异 步 电动机 的故 障进 行 诊 断 ,文献 [ ] 出 了基 2提
于小波分 析 的电机 故 障振 声 诊 断方 法 ,可 以有效 地 检
收敛 ,且 能通过 故 障信号 准 确判 断 出异 步 电动 机 的各
类 故障 。 1 P O算法 S P O是 由 K n e y和 E ehr 等人 于 19 S en d b ra t 9 5年提 出 的一种 基 于群 体 、 自适 应 的进 化算 法 。P O算法是 一 S 种线性 搜索算法 , 因为其 简单 、 实现方便 , 因此 自从提 出 以来便在 短期 内迅速得 到 国际计 算领域 的认可 , 并在模 式识 别领域 取得 了广泛 的发展 。
PSO参数优化
1.利用PSO参数寻优函数(分类问题):psoSVMcgForClass2.[bestCVaccuracy,bestc,bestg,pso_option]=3.psoSVMcgForClass(train_label,train,pso_option)4.输入:5.train_label:训练集的标签,格式要求与svmtrain相同。
6.train:训练集,格式要求与svmtrain相同。
7.pso_option:PSO中的一些参数设置,可不输入,有默认值,详细请看代码的帮助说明。
8.输出:9.bestCVaccuracy:最终CV意义下的最佳分类准确率。
10.bestc:最佳的参数c。
11.bestg:最佳的参数g。
12.pso_option:记录PSO中的一些参数。
13.==========================================================14.利用PSO参数寻优函数(回归问题):psoSVMcgForRegress15.[bestCVmse,bestc,bestg,pso_option]=16.psoSVMcgForRegress(train_label,train,pso_option)17.其输入输出与psoSVMcgForClass类似,这里不再赘述。
复制代码psoSVMcgForClass源代码:1.function [bestCVaccuarcy,bestc,bestg,pso_option] =psoSVMcgForClass(train_label,train,pso_option)2.% psoSVMcgForClass3.4.%%5.% by faruto6.%Email:patrick.lee@ QQ:516667408/faruto BNU7.%last modified 2010.01.178.9.%% 若转载请注明:10.% faruto and liyang , LIBSVM-farutoUltimateVersion11.% a toolbox with implements for support vector machines based on libsvm,2009.12.%13.% Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for14.% support vector machines, 2001. Software available at15.% .tw/~cjlin/libsvm16.%% 参数初始化17.if nargin == 218. pso_option =struct('c1',1.5,'c2',1.7,'maxgen',200,'sizepop',20, ...19. 'k',0.6,'wV',1,'wP',1,'v',5, ...20. 'popcmax',10^2,'popcmin',10^(-1),'popgmax',10^3,'popgmin',10^(-2));21.end22.% c1:初始为1.5,pso参数局部搜索能力23.% c2:初始为1.7,pso参数全局搜索能力24.% maxgen:初始为200,最大进化数量25.% sizepop:初始为20,种群最大数量26.% k:初始为0.6(k belongs to [0.1,1.0]),速率和x的关系(V = kX)27.% wV:初始为1(wV best belongs to [0.8,1.2]),速率更新公式中速度前面的弹性系数28.% wP:初始为1,种群更新公式中速度前面的弹性系数29.% v:初始为3,SVM Cross Validation参数30.% popcmax:初始为100,SVM 参数c的变化的最大值.31.% popcmin:初始为0.1,SVM 参数c的变化的最小值.32.% popgmax:初始为1000,SVM 参数g的变化的最大值.33.% popgmin:初始为0.01,SVM 参数c的变化的最小值.34.35.Vcmax = pso_option.k*pso_option.popcmax;36.Vcmin = -Vcmax ;37.Vgmax = pso_option.k*pso_option.popgmax;38.Vgmin = -Vgmax ;39.40.eps = 10^(-3);41.42.%% 产生初始粒子和速度43.for i=1:pso_option.sizepop44.45. % 随机产生种群和速度46. pop(i,1) =(pso_option.popcmax-pso_option.popcmin)*rand+pso_option.popcmin; 47. pop(i,2) =(pso_option.popgmax-pso_option.popgmin)*rand+pso_option.popgmin;48. V(i,1)=Vcmax*rands(1,1);49. V(i,2)=Vgmax*rands(1,1);50.51. % 计算初始适应度52. cmd = ['-v ',num2str(pso_option.v),' -c ',num2str( pop(i,1) ),' -g',num2str( pop(i,2) )];53. fitness(i) = svmtrain(train_label, train, cmd);54. fitness(i) = -fitness(i);55.end56.57.% 找极值和极值点58.[global_fitness bestindex]=min(fitness); % 全局极值59.local_fitness=fitness; % 个体极值初始化60.61.global_x=pop(bestindex,:); % 全局极值点62.local_x=pop; % 个体极值点初始化63.64.% 每一代种群的平均适应度65.avgfitness_gen = zeros(1,pso_option.maxgen);66.67.%% 迭代寻优68.for i=1:pso_option.maxgen69.70. for j=1:pso_option.sizepop71.72. %速度更新73. V(j,:) = pso_option.wV*V(j,:) +pso_option.c1*rand*(local_x(j,:) - pop(j,:)) +pso_option.c2*rand*(global_x - pop(j,:));74. if V(j,1) > Vcmax75. V(j,1) = Vcmax;76. end77. if V(j,1) < Vcmin78. V(j,1) = Vcmin;79. end80. if V(j,2) > Vgmax81. V(j,2) = Vgmax;82. end83. if V(j,2) < Vgmin84. V(j,2) = Vgmin;85. end86.87. %种群更新88. pop(j,:)=pop(j,:) + pso_option.wP*V(j,:);89. if pop(j,1) > pso_option.popcmax90. pop(j,1) = pso_option.popcmax;91. end92. if pop(j,1) < pso_option.popcmin93. pop(j,1) = pso_option.popcmin;94. end95. if pop(j,2) > pso_option.popgmax96. pop(j,2) = pso_option.popgmax;97. end98. if pop(j,2) < pso_option.popgmin99. pop(j,2) = pso_option.popgmin;100. end102. % 自适应粒子变异103. if rand>0.5104. k=ceil(2*rand);105. if k == 1106. pop(j,k) = (20-1)*rand+1;107. end108. if k == 2109. pop(j,k) =(pso_option.popgmax-pso_option.popgmin)*rand + pso_option.popgmin; 110. end111. end112.113. %适应度值114. cmd = ['-v ',num2str(pso_option.v),' -c',num2str( pop(j,1) ),' -g ',num2str( pop(j,2) )];115. fitness(j) = svmtrain(train_label, train, cmd);116. fitness(j) = -fitness(j);117.118. cmd_temp = ['-c ',num2str( pop(j,1) ),' -g ',num2str( pop(j,2) )];119. model = svmtrain(train_label, train, cmd_temp);120.121. if fitness(j) >= -65122. continue;123. end124.125. %个体最优更新126. if fitness(j) < local_fitness(j)127. local_x(j,:) = pop(j,:);128. local_fitness(j) = fitness(j);129. end130.131. if abs( fitness(j)-local_fitness(j) )<=eps && pop(j,1) < local_x(j,1)132. local_x(j,:) = pop(j,:);133. local_fitness(j) = fitness(j);134. end135.136. %群体最优更新137. if fitness(j) < global_fitness138. global_x = pop(j,:);139. global_fitness = fitness(j);140. end142. if abs( fitness(j)-global_fitness )<=eps && pop(j,1) < global_x(1)143. global_x = pop(j,:);144. global_fitness = fitness(j);145. end146.147. end148.149. fit_gen(i) = global_fitness;150. avgfitness_gen(i) = sum(fitness)/pso_option.sizepop;151.end152.153.%% 结果分析154.figure;155.hold on;156.plot(-fit_gen,'r*-','LineWidth',1.5);157.plot(-avgfitness_gen,'o-','LineWidth',1.5);158.legend('最佳适应度','平均适应度',3);159.xlabel('进化代数','FontSize',12);160.ylabel('适应度','FontSize',12);161.grid on;162.163.% print -dtiff -r600 pso164.165.bestc = global_x(1);166.bestg = global_x(2);167.bestCVaccuarcy = -fit_gen(pso_option.maxgen);168.169.line1 = '适应度曲线Accuracy[PSOmethod]';170.line2 = ['(参数c1=',num2str(pso_option.c1), ...171. ',c2=',num2str(pso_option.c2),',终止代数=', ...172. num2str(pso_option.maxgen),',种群数量pop=', ...173. num2str(pso_option.sizepop),')'];174.% line3 = ['Best c=',num2str(bestc),' g=',num2str(bestg), ... 175.% ' CVAccuracy=',num2str(bestCVaccuarcy),'%'];176.% title({line1;line2;line3},'FontSize',12);177.title({line1;line2},'FontSize',12);。
冲击地压危险等级预测的PSO-SVM模型
安
工
业
大
学
学
报
V0 . 2 No 1 I3 .
J u n lo ’n Te h oo i l iest o r a fXia c n lgc v ri a Un y
Jn 2 1 a. 0 2
文章 编号 : 1 7 —9 5 2 1 ) 10 90 6 39 6 ( 0 2 0 —3 —4
击地 压煤 层安 全开 采 暂 行 规 定 》 工作 地 区按 照 冲 ,
击地 压危 险程 度可 分为 3 : 、 强 ) 级 无 中、 . 利 用支 持 向量 机方 法 建 立起 的 冲击 地压 危 险 等级 预测 模 型为
进行了预测预报E. 4 蒋谙男建立了冲击地压危险性 ]
预测 的最 小二 乘支 持 向量机 模 型 , 用这 个模 型对 并
1 粒 子群 优 化支 持 向量机 的 冲击 地 压危险等级预测模型
1 1 冲击地 压 危险等 级预 测 的支持 向量 机模 型 .
假设 有 冲 击 地 压 实 例 { Y)i= , , ,, z , , : 2 … l :1 Y ∈ { , ), 中 五 为 影响 冲击地 压危 险 等级 +1 一1 其 的因素 , 样本 冲击 地压 危 险等级 级别 ( 照《 Y为 按 冲
煤矿冲击地压危 险程度预测具有一定的参考价值和指导意义. . 关 键词 : 冲 击地压 ; 测 ; 预 粒子群 优化 支持 向量机 方 法 ; P神 经 网络 B 中 图号 : T 1 P8 文献标 志 码 : A 一
冲击 地压 是 一种 岩 体 中 聚积 的弹 性 变 形 势 能 在一 定条 件下 的突然猛 烈 释放 , 致岩石 爆 裂并 弹 导 射 出来 的现象 , 界上 几乎 所有 国家都不 同程度地 世 受 到 冲击 地压 的威 胁. 别 是 近些 年来 , 着煤 矿 特 随 开采 深度 的增 加 , 围岩 的受 力 情 况 变 的 更加 复杂 , 应 力 集 中程度 加 大 , 中 区域 内赋存 的弹性 变形 能 集 增大 , 使得 冲击 地 压 的发生更 加 频繁 , 害更 大 , 危 因
基于PSO-SVM的多分类财务预警模型
1 原 理 与 方 法
1 . 1 支 持 向量机
类算法 , 将其运用到实际问题 中并取得 了良好的 效果 。章智儒 将 S V M 多分类 应用到纹理 图像 分类 中, 证实其分类 效果较传统神经 网络模 型有
一
支持向量机主要是针对两类分类问题寻找一 个满足分类要求 的最优超平面 , 使得这个分类超 平面在保证分类精度 的同时, 能够使两侧的分类
间隔最 大化 。假 设线 性 可分情 况 下 的训 练样 本集
为( , Y ) , i =1 , 2 , …, f , ∈R , Y∈ { 一1 , +1 } (
定优势。应 伟 提 出 了一种 改进 的支持 向量
机 的多类 文 本分 类方 法 。 目前 国内外 也致力 于 将
Vo 1 . 3 5 No . 2
Apr . 2 01 3
文章 编 号 : 2 0 9 5— 3 8 5 2 ( 2 0 1 3 ) 0 2— 0 2 6 5— 0 5
文献标志码 : A
基于 P S O —S V M 的 多分 类财 务预 警模 型
吴翎 燕 , 韩 华 , 唐 菲
l 1 w l 。因此 , 最优 分类面 问题可 以表示为如下
性, 但均针对财务二分类问题 。
的约束优化问题 J :
收稿 日期 : 2 0 1 2—1 0—0 9 . 作者简介 : 吴翎燕 ( 1 9 9 0 一) , 女, 安徽无为人 , 武汉理工大学理学院硕士研究生. 基金项 目: 国家 自然科学基金资助项 目( 6 0 7 7 3 2 1 0 , 7 1 1 4 0 0 1 5 ) ; 中央高校基本科研业务费专项基金资助项 目( 2 0 1 1 — 1 a - 0 3 4 )
利用PSO优化SVM
%% 清空环境clcclearload wine;train = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];train_label = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)];test = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];test_label = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];[train,pstrain] = mapminmax(train');pstrain.ymin = 0;pstrain.ymax = 1;[train,pstrain] = mapminmax(train,pstrain);[test,pstest] = mapminmax(test');pstest.ymin = 0;pstest.ymax = 1;[test,pstest] = mapminmax(test,pstest);train = train';test = test';%% 参数初始化%粒子群算法中的两个参数c1 = 1.6; % c1 belongs to [0,2]c2 = 1.5; % c2 belongs to [0,2]maxgen=300; % 进化次数sizepop=30; % 种群规模popcmax=10^(2);popcmin=10^(-1);popgmax=10^(3);popgmin=10^(-2);k = 0.6; % k belongs to [0.1,1.0];Vcmax = k*popcmax;Vcmin = -Vcmax ;Vgmax = k*popgmax;Vgmin = -Vgmax ;% SVM参数初始化v = 3;%% 产生初始粒子和速度for i=1:sizepop% 随机产生种群pop(i,1) = (popcmax-popcmin)*rand+popcmin; % 初始种群pop(i,2) = (popgmax-popgmin)*rand+popgmin;V(i,1)=Vcmax*rands(1); % 初始化速度V(i,2)=Vgmax*rands(1);% 计算初始适应度cmd = ['-v ',num2str(v),' -c ',num2str( pop(i,1) ),' -g ',num2str( pop(i,2) )];fitness(i) = svm train(train_label, train, cmd);fitness(i) = -fitness(i);end% 找极值和极值点[global_fitness bestindex]=min(fitness); % 全局极值local_fitness=fitness; % 个体极值初始化global_x=pop(bestindex,:); % 全局极值点local_x=pop; % 个体极值点初始化tic%% 迭代寻优for i=1:maxgenfor j=1:sizepop%速度更新wV = 0.9; % wV best belongs to [0.8,1.2]V(j,:) = wV*V(j,:) + c1*rand*(local_x(j,:) - pop(j,:)) + c2*rand*(global_x - pop(j,:));if V(j,1) > VcmaxV(j,1) = Vcmax;endif V(j,1) < VcminV(j,1) = Vcmin;endif V(j,2) > VgmaxV(j,2) = Vgmax;endif V(j,2) < VgminV(j,2) = Vgmin;end%种群更新wP = 0.6;pop(j,:)=pop(j,:)+wP*V(j,:);if pop(j,1) > popcmaxpop(j,1) = popcmax;endif pop(j,1) < popcminpop(j,1) = popcmin;endif pop(j,2) > popgmaxpop(j,2) = popgmax;endif pop(j,2) < popgminpop(j,2) = popgmin;end% 自适应粒子变异if rand>0.5k=ceil(2*rand);if k == 1pop(j,k) = (20-1)*rand+1;endif k == 2pop(j,k) = (popgmax-popgmin)*rand+popgmin;endend%适应度值cmd = ['-v ',num2str(v),' -c ',num2str( pop(j,1) ),' -g ',num2str( pop(j,2) )];fitness(j) = svmtrain(train_label, train, cmd);fitness(j) = -fitness(j);end%个体最优更新if fitness(j) < local_fitness(j)local_x(j,:) = pop(j,:);local_fitness(j) = fitness(j);end%群体最优更新if fitness(j) < global_fitnessglobal_x = pop(j,:);global_fitness = fitness(j);endfit_gen(i)=global_fitness;endtoc%% 结果分析plot(-fit_gen,'LineWidth',5);title(['适应度曲线','(参数c1=',num2str(c1),',c2=',num2str(c2),',终止代数=',num2str(maxgen),')'],'FontSize',13);xlabel('进化代数');ylabel('适应度');bestc = global_x(1)bestg = global_x(2)bestCVaccuarcy = -fit_gen(maxgen)cmd = ['-c ',num2str( bestc ),' -g ',num2str( bestg )];model = svmtrain(train_label,train,cmd);[trainpre,trainacc] = svmpredict(train_label,train,model);trainacc[testpre,testacc] = svmpredict(test_label,test,model);testacc。
基于PSO-SVM的焊缝缺陷X射线检测
W el di ng T echno l ogy V01.42N o,10O ct,2013焊接质量控制与管理57文章编号:1002—025X(2013)10--0057—04基于PSO—SV M的焊缝缺陷X射线检测蔡晓龙1,穆向阳1,高炜欣1,魏巍2(1.西安石油大学陕西省钻机控制重点实验室,陕西西安710065;2.西安西北石油管道公司,陕西西安710018)摘要:为了提高X射线焊缝缺陷检测的实时性,本文研究了将粒子群优化(Par t i cl e Sw ar m O p t i m i zat i on,PSO)算法与支持向量机(Su ppo r t V ect or M achi ne,SV M)算法相结合应用于焊管焊缝缺陷检测的方法。
该方法首先提取焊缝缺陷的特征描述,然后利用SV M算法进行焊缝缺陷的检测,过程中采用PSO算法优化SV M模型参数,最后将PSO—SV M和基于网格寻优的SV M分类方法进行了对比。
试验结果表明,基于PSO—SV M的焊缝缺陷检测方法具有较高的识别精度,平均分类准确率达98%,且相对于后者其实时性提高了39.87%,这表明PS0一SV M方法能够有效地应用于焊管焊缝缺陷检测实时性的提高。
关键词:粒子群优化:模型参数;缺陷检测;支持向量机中图分类号:T G441.7文献标志码:B0引言随着计算机和数字图像处理技术的发展,x射线焊缝缺陷检测技术以其直观可靠、数字化精度高等特点被广泛应用于石油焊管和压力容器制造等重要行业的无损检测领域中f1]。
该方法主要针对检测图像进行现代图像处理、被检对象的特征参数提取、分类器训练建模以及分类决策几个部分。
近年来。
支持向量机(SV M)算法在小样本、非线性和高维数建模中表现出了许多特有的优势,被广泛应用于识别系统的分类器建模中。
康维新等人构建了二层一对一SV M多分类器模型,该方法对小样本测试环境的适应能力强,并有较好的分类准确率[2]。
PSO-LSSVM分类模型在岩性识别中的应用
1 理论与算法
1 1 粒子 群优 化算 法 .
粒子 群 优 化 算 法 ( a ieS a pii t n Prc w r O t z i , t l m m ao
这些单 元是 经过 相似 的地 质条件 和相 似 的成岩 改造
在 统计 学 习理论基 础 上 发 展 起来 的一 种 实 用算 法 ,
S M 是 基于结 构 风险最 小 化原 则 , 够 较好 地解 决 V 能
得到 的沉 积物 . 如果 岩石 能够被适 当地 分类 和定 义 ,
那么就 会通 过油 藏数 值模 拟模 型获得储 层 的真 正动 态特性 . 井参 数值是 地 下岩石 的矿 物成分 、 构和 测 结
井 响应 和 实际油 气 储 层之 间 的非线 性 关 系 , 线 性 用 测井 响应 方程 和统计 经验 公式很 难表 征储 层 的真实
大 , 费时 间等 诸 多不 便 . 了实 现 L S M参 数 自 耗 为 SV
动选 择 以及 更好 的进 行 测 井 岩 性识 别 工 作 , 文 提 本 出基 于粒 子群 优 化 的 L S M 模 型对 测 井 资 料进 行 SV 岩性 识别 , 既解 决 了 L S M 参 数 选 择 的难题 , 提 SV 又 高 了识别精 度 .
映射 关 系 , 识别精 度 高 , 并提 高 了算 法的 自动化 程度 .
关 键词 : 性识 别 ; 井 资料 ; 岩 测 最小二 乘 支持 向量机 ; 粒子群 优化 算 法 中 图分 类号 :P 8 T 3 9 T 1 ;E 1 文献标 识码 : A
基于PSO算法的SVM参数优化方法研究
基于PSO算法的SVM参数优化方法研究基于粒子群优化算法(Particle Swarm Optimization, PSO)的支持向量机(Support Vector Machine, SVM)参数优化是近年来机器学习领域中的热门研究方向。
本文将探讨PSO算法在SVM参数优化中的应用,并介绍其原理和优势。
首先,我们需要介绍一下支持向量机(SVM)。
SVM是一种常用的监督学习算法,可用于分类和回归问题。
其核心思想是在特征空间中找到一个最优的超平面来使不同类别的样本尽可能地分开。
SVM参数优化包括核函数选择、惩罚参数(C)以及其他控制参数的选择。
然而,SVM参数优化是一个复杂的优化问题,传统方法通常需要进行大量的计算和试验。
为了降低计算复杂度,提高参数优化效率,近年来研究者开始引入PSO算法来求解SVM参数优化问题。
PSO算法是一种启发式优化算法,模拟了鸟群捕食的行为。
在PSO算法中,每个解(粒子)都有一个速度和位置,并与其他粒子共享信息。
通过不断更新速度和位置,粒子会向全局最优解靠近。
在使用PSO算法进行SVM参数优化时,需要将SVM参数作为优化目标函数的参数。
PSO算法通过不断更新粒子的速度和位置来优化SVM参数,使得SVM模型在训练集上的性能最优。
具体而言,PSO算法的每个粒子可以看作是一个SVM的参数组合,包括核函数选择、惩罚参数(C)等。
每个粒子通过评估其对应的SVM模型在训练集上的性能来计算适应度值。
然后,粒子根据自己的当前最优位置和全局最优位置来更新速度和位置,以期望找到更好的解。
PSO算法有以下几个优势适合用于SVM参数优化。
首先,PSO算法具有全局能力,能够在参数空间中找到最优解。
其次,PSO算法不依赖于问题的具体形式,适用于各种类型的SVM参数优化。
而且,PSO算法不需要计算梯度,因此能够避免陷入局部最优解。
目前,PSO算法在SVM参数优化中得到了广泛的应用,并取得了较好的结果。
基于粒子群优化的PSO-SVM的瓦斯时间序列突出预测方法
其中,
解层次。
为小波系数 ; =c r x / 2I nN ,
.
为噪声标准差,N 为分
1 S V M实现原 则
实现 S VM原 则 可以有 两个思 路 : ( 1 ) 求 出每 个 子集 的 最小 经验 风险 ,选 择 使最 小 经验风 险 和置 信范 围之和 最小 的子集 。显然 ,对 于子集 数 目不 大的 情况 ,这种方 法 尚能 应付 ,当子 集数 目趋于 无穷时 ,这种 方法是 不可 行的 。 ( 2 ) 设 计 某种 函数 集 的结 构使 得每 个子 集都 能 取得 最小 的 经验 风险 ( 如 经验 风 险为 零 ) ,然 后 ,只 需选 择 使 置信 范 围最 小 的子 集 ,经 验风 险和置 信范 围同时 为最小 。
的主 要研 究问题 之一 。
f s i g n W , j  ̄ ( l _ 五 ) I >
,
,
㈩
本 文 利 用 £一 S VR进 行 煤矿 瓦斯 时 间 序 列 进 行 预 测 的基 础 上 ,针 对 £一 s V R中的参 数 选 择 问题 ,提 出 了基 于 粒子 群 优化 的 £ 一 s V R 进 行 煤矿 瓦斯时 间序 列预 测的方 法 。利用 粒子 群优化 算 法 进行 模型 的参数选 择 ,从而达 到高效 准确 的预测 目的 。
图1 所示 。
摘 要 本 文对霍 尔辛赫 矿安 全监测 系统 的瓦斯 浓度 时间序 列利 用软阈值 小 波去 噪 法进行 去 噪 ;分析 支持 向量机 不敏 感损 失参数 8 和E B F 核 函 数参 数 。基于粒 子群 算法对 支持 向量机 瓦斯 浓度 模型进 行优 化 ,结 合 最优 参 数对 进行 £- S V B 模 型 预 测 ,对预 测误 差 进行 分 析 ,并将 训练样 本 的大 小对预测精 度 的影响做 出 了比较 。 关 键词 柱子群优 化 ; 支持 向量 机 ;煤矿 ;瓦斯 突出预 测
基于PSO—SVM的空中目标智能融合识别模型
b e e n d o n e wi t h r e q u i r e m e s i mu l a t i o n ’ S r e s u l t e d u c e d t h a t t h e a l g o it r h m c a n b y
Ab s t r a c t : s u p p o r t v e c t o r ma c h i n e( S V M) a l g o r i t h m c a n s o l v e p r o b l e ms o f s e n s o r d a t a ’ S a n — i n t e g i r t y
S h e n y a n g 1 1 0 0 3 4, Ch i n a)
( 2 . S h e n y a n g A i r c r a h De s i g n& Re s e a r c h I n s t i t u t e, S h e n y a n g 1 1 0 0 3 5, C h i n a)
a nd l rg a e a c c u r a t e l y r e c og n i z e t r ge a t s .
Ke y w o r d s : t a r g e t r e c o g n i i t o n; S u p p o r t v e c t o r ma c h i n e ( S V M) ; mu l i t — s e n s o r s d a t a f u s i o n; p a r t i c l e s w a r m
a nd l os s p r e f e r a bl y.Ai mi n g a t t he pr o bl e m o f d i ic f u l t y of c ho os i n g ke y pa r a me t e r i n S VM ,t he i nt e l l i g e n t f us i o n r e c og n i t i on mo de l of a i r t rg a e t s ba s e d o n PSO— SVM i s p r e s e n t e d.Si mu l a t i o n ha d
基于PSO-SVM的表面肌电信号多手势识别
第13卷㊀第7期Vol.13No.7㊀㊀智㊀能㊀计㊀算㊀机㊀与㊀应㊀用IntelligentComputerandApplications㊀㊀2023年7月㊀Jul.2023㊀㊀㊀㊀㊀㊀文章编号:2095-2163(2023)07-0173-06中图分类号:TP391.9文献标志码:B基于PSO-SVM的表面肌电信号多手势识别王㊀博,闫㊀娟,杨慧斌,徐春波,吴㊀晗(上海工程技术大学机械与汽车工程学院,上海201620)摘㊀要:作为人机交互的一种重要形式,手势识别在医疗康复领域已尤显重要㊂针对手势识别技术存在的不足,提出粒子群优化支持向量机(PSO-SVM)的多手势精确识别方法㊂首先,利用表面肌电信号采集仪采集16种手势所对应的表面肌电信号(SEMG);其次,分别从时域㊁频域和时频域提取所需要的SEMG特征;然后,采用主成分分析法(PCA)对数据特征进行降维;最后,使用PSO-SVM对降维后的数据特征进行分类识别㊂经过与传统支持向量机(SVM)分类以及遗传算法优化支持向量机分类(GA-SVM)相对比,本方法识别精度高㊁速度快,研究结果可为手势识别提供新的思路,为人体上肢动作判断和上肢康复机器人的研究提供参考㊂关键词:手势识别;表面肌电信号;主成分分析;粒子群优化;支持向量机Multi-gesturerecognitionofSEMGsignalsbasedonPSO-SVMWANGBo,YANJuan,YANGHuibin,XUChunbo,WUHan(SchoolofMechanicalandAutomotiveEngineering,ShanghaiUniversityofEngineeringScience,Shanghai201620,China)ʌAbstractɔAsanimportantformofhuman-computerinteraction,gesturerecognitionhasbecomethefocusofresearchinthefieldofmedicalrehabilitation.Aimingattheshortcomingsofgesturerecognitiontechnology,amulti-gestureaccuraterecognitionmethodbasedonparticleswarmoptimizationsupportvectormachine(PSO-SVM)isproposed.Firstly,surfaceelectromyography(SEMG)signalscorrespondingto16kindsofhumangesturesarecollectedbysurfaceelectromyographysignalacquisitioninstrument.Secondly,SEMGfeaturesareextractedfromtimedomain,frequencydomainandtime-frequencydomainrespectively.Then,principalcomponentanalysis(PCA)isusedtoreducethedimensionofdatafeatures.Finally,accordingtothedatacharacteristics,PSO-SVMisusedforclassificationandrecognition.Comparedwithtraditionalsupportvectormachine(SVM)classificationandgeneticalgorithmoptimizedsupportvectormachineclassification(GA-SVM),thismethodhashighrecognitionaccuracyandspeed.Theresearchresultscanprovideanewideaforgesturerecognition,andprovidethereferenceforhumanupperlimbmotionjudgmentandtheresearchofupperlimbrehabilitationrobot.ʌKeywordsɔgesturerecognition;surfaceelectromyographysignal;principalcomponentanalysis;particleswarmoptimization;supportvectormachine作者简介:王㊀博(1997-),男,硕士研究生,主要研究方向:智能控制㊁机器学习;闫㊀娟(1978-),女,高级实验师,硕士生导师,主要研究方向:智能控制算法研究㊁机械自动化;杨慧斌(1983-),男,实验师,主要研究方向:智能控制㊁机械自动化;徐春波(1997-),男,硕士研究生,主要研究方向:机器视觉㊁智能控制;吴㊀晗(1997-),男,硕士研究生,主要研究方向:智能控制㊂通讯作者:闫㊀娟㊀㊀Email:aliceyan_shu@126.com收稿日期:2022-08-260㊀引㊀言目前,国内人口老龄化的问题较为严峻,老年人的健康问题已经逐渐成为人们关注的焦点㊂研究可知,老年人往往行动不便或者难以表达,因此通过手势表达内心想法便成为非常重要的一种途径㊂目前,主要的手势识别方式有视觉识别[1]和人体生物信号[2]识别两种,其中表面肌电信号(SEMG)识别方式作为一种生物信号显得尤为重要,因为其中蕴含着大量的信息㊂基于此,本文中通过人体表面肌电信号进行手势识别,通过手势识别的研究为后续研究提供基础㊂迄今为止,关于肌电信号对人体手势识别的研究已经取得较多成果,但大多研究对手势识别研究不够深入,赵诗琪等学者[3]使用了支持向量机来识别4种手势,识别结果为99.92%㊂隋修武等学者[4]通过非负矩阵分解与支持向量机的联合模型识别6种手势动作,识别结果为93%㊂江茜等学者[5]通过多通道相关性特征识别8种手势动作,识别结果为94%㊂当识别的手势种类增多时,分类器的识别精度将会随之降低,大量学者对分类器进行优化以利于提高识别精度㊂Leon等学者[6]对9Copyright ©博看网. All Rights Reserved.种手势进行识别,识别精度为94%㊂Lian等学者[7]通过K最邻近和决策树算法识别10种手势动作,识别率仅为89%㊂综上所述,为了满足当前医疗康复设备的需求,多手势识别的精确度还有待提高㊂使用SEMG信号进行手势识别时,特征提取和模式识别是提高手势识别精度的关键㊂典型的特征提取方法主要包括时域特征提取㊁频域特征提取和时频域特征提取[8]㊂模式识别主要通过搭建分类器实现,基于SEMG识别常用的分类器主要包括BP(BackPropagation)神经网络[9]㊁极限学习机(ExtremeLearningMachine,ELM)[10]㊁卷积神经网络(ConvolutionalNeuralNetworks,CNN)[11]和支持向量机(SupportVectorMachine,SVM)[12]等分类模型㊂但以上方法均存在一定程度的不足:BP神经网络在识别手势时准确率较低;由于极限学习机要经过反复的迭代学习,因此其训练速度在一定程度上相对缓慢;KNN计算量较大,计算时间长;SVM分类思想简单㊁分类效果较好,但训练参数值的选取会影响分类器的效果[13]㊂基于上述分析,本文中提出一种基于粒子群算法(ParticleSwarmOptimization,PSO)优化支持向量机的多手势识别方法,以提高多手势的识别精度㊂首先,利用主成分分析法对提取的表面肌电信号特征进行降维处理;然后,利用PSO对SVM的惩罚参数C和核函数半径参数g迭代寻优;最后,使用PSO优化的SVM(PSO-SVM)分类模型识别了16种手势,并与未优化的SVM分类模型和遗传算法(GeneticAlgorithm,GA)优化的SVM分类模型进行对比,从而验证本文所提方法的准确性㊂1㊀SEMG数据采集方法分析1.1㊀实验数据采集受试者为实验室中3名男生和1名女生㊂受试者年龄在23 28岁,平均身高在170cm,均为右手使用者且无神经肌肉骨骼疾病㊂实验前24h内没有进行高强度运动并且身心舒适㊂用磨砂膏和75%酒精棉清洁右肢掌长肌㊁桡侧腕屈肌㊁尺侧腕屈肌㊁指伸肌㊁指浅屈肌和肱桡肌皮肤表面皮肤,减少皮肤阻抗干扰㊂通过Delsys无线肌电设备对6块肌肉的表面肌电信号同时进行采集㊂受试者端坐于试验台前,背部保持90ʎ,左手臂自然垂下㊂实验时,共采集16个手势动作,每个动作维持6s,休息4s,进行6次循环,重复以上动作直至4名受试者全部采集完成㊂1.2㊀信号预处理SEMG信号是由人体内神经肌肉系统产生的一种特别微弱的生物电信号㊂SEMG信号的电压幅度范围是0 5mV,频率范围是20 1000Hz,其主要能量集中在50 150Hz范围内㊂因此,首先设计陷波滤波去除原始信号中50Hz的工频干扰,再设计30 300Hz的巴特沃斯带通滤波器去除肌电信号中的基线漂移及其他噪声信号㊂图1分别为滤波前后的时域波形及频域振幅谱,较好地滤除了有效范围外的噪声信号㊂210-1-2-3102030405060幅度/10-4t /s(a)原始波形1.51.00.51002003004005006007008009001000频率/H z参考幅值/10-6(c)原始振幅图210-1-2-3102030405060幅度/10-4t /s(b)滤波后波形1.51.00.51002003004005006007008009001000频率/H z参考幅值/10-6(d)滤波后振幅图图1㊀肌电信号滤波图Fig.1㊀FilteringdiagramofSEMGsignal471智㊀能㊀计㊀算㊀机㊀与㊀应㊀用㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀第13卷㊀Copyright ©博看网. All Rights Reserved.1.3㊀特征提取为了能更全面地分析SEMG信号中所包含的信息,本文分别提取了肌电信号中的时域特征㊁频域特征和时频域特征三种特征模型㊂1.3.1㊀时域特征提取本文选用的时域特征有均方根值(RMS)和绝对平均值(ARV)㊂时域特征值的计算公式为:RMS=1NðNi=1x2i(1)ARV=1NðNi=1xi(2)㊀㊀其中,xi(i=1,2, ,N)是信号的时间序列㊂1.3.2㊀频域特征提取本文选用的频域特征是平均功率频率(MPF)和中值频率(MF)㊂频域特征值的计算公式为:MPF=ʏ¥0fˑPSDf()dfʏ¥0PSDf()df(3)MF=12ʏ¥0PSDf()df(4)㊀㊀其中,f是SEMG信号的频率,PSD(f)是SEMG信号的功率谱密度函数㊂1.3.3㊀时频域特征提取时频分析法可以对信号在时域和频域内的能量信号同时进行展现,这对于分析非平稳信号相当重要㊂其中,小波变换具有较好的准确性,本文采用小波变换计算时频域特征瞬时平均功率(IMPF)和瞬时中值频率(IMF),公式具体如下:IMPF=ʏf2f1fˑPSD(t,f)dfʏf2f1PSD(t,f)df(5)ʏIMFf1PSD(t,f)df=ʏf2IMFPSD(t,f)(6)㊀㊀其中,f是SEMG信号的频率,PSD(t,f)是频率和时间的二维函数㊂1.4㊀特征降维本文利用6通道SEMG信号,以此对36个维度的特征参数进行提取㊂高维数据由于存在很多冗余特征,使得实验过程中的计算量增多,并因此对分类器产生极大的影响㊂同时,在此过程会产生 过拟合 ㊁ 维数灾难 等系列问题,从而降低分类器的性能[14]㊂因此,本文中使用主成分分析法进行降维处理㊂对其步骤流程可做分述如下㊂(1)首先,将计算得到的特征值进行处理构建样本矩阵,样本矩阵通过m行n列的矩阵X表示,得到:X=x11x12 x1nx21x22 x2n︙︙⋱︙xm1xm2 xmnéëêêêêêùûúúúúú(7)㊀㊀(2)构建数据样本的协方差矩阵C=1m-1XTX,得到协方差矩阵:C=c11 c1n︙⋱︙cn1 cnnéëêêêêùûúúúú(8)㊀㊀(3)分解协方差矩阵C并计算协方差矩阵的特征值λ1ȡλ2ȡ ȡλn和特征向量a1,a2, ,an㊂(4)确定特征矩阵主成分的个数v并构建主成分矩阵:Ymˑv=XmˑnAnˑv(9)㊀㊀其中,Anˑv=[a1,a2, ,av],最后得到SEMG手势特征降维后的主成分特征Ymˑv㊂2㊀分类器设计2.1㊀支持向量机分类支持向量机(SVM)是基于统计学领域的VC维理论和结构风险学最小理论基础上的一种机器学习算法,常用于模式分类和非线性回归[15]㊂通常,通过将向量映射到高维空间,以此来解决输入量与输出量之间的非线性问题㊂同时,通过设定的核函数g,将输入空间利用非线性变换转变到高维空间,从而通过高维空间得到最优线性分类面㊂对于给定的训练样本集{(xi,yi)},i=1,2, ,n,xɪRn,yɪ(-1,1),设最优平面为ωTx+b=0,分类间隔为:γ=2 ω (10)㊀㊀判别模型为:f(x)=sign(ωTx+b)(11)㊀㊀若要找到最大间隔,即找到参数和使得最大,等价于最小化,因此求解问题最终转化为带约束的凸二次规划问题:minω,b12 ω 2+Cðni=1εi(12)s.t.㊀yi(ωTxi+b)ȡ1-εi571第7期王博,等:基于PSO-SVM的表面肌电信号多手势识别Copyright©博看网. All Rights Reserved.εi>0,i=1,2, ,n㊀㊀其中,εi=1-yi(ωTxi+b)为损失函数,C是惩罚参数,C的值与错误分类的惩罚程度成正比,其值越小,则惩罚程度越小;反之,惩罚程度越大㊂同时,利用凸优化理论,将约束问题通过引入的拉格朗日乘子法转化为无约束问题:㊀Lω,b,λ()=12 ω 2+Cðni=1εi-ðni=1μiεi-ðni=1λi(yi(ωxi+b)-1+εi)(13)λiȡ0,μiȡ0对于极大值㊁极小值及对偶问题,令∂L∂ω=0,∂L∂b=0,∂L∂ε=0,因此得到:ω=ðni=1λiyixiðni=1λiyi=0C=λi+μiìîíïïïïïï(14)㊀㊀因此,最终得到:minλ12ðnj=1ðni=1λiλjyjyixjxi-ðni=1λi(15)s.t.㊀ðni=1λiyi0ɤλiɤC2.2㊀粒子群优化算法粒子群优化算法(PSO)是一种设计无质量的粒子来模拟鸟群中的鸟不断迭代寻优来解决优化问题的方法[16]㊂粒子的速度和位置通过迭代进行更新,粒子群优化算法公式为:Vk+1id=ωVkid+c1r1pbestkid-xkid()+c2r2gbestkid-xkid()xk+1id=xkid+vk+1id{其中,ω表示惯量因子;d=1,2, ,D表示空间维数;i=1,2, ,n表示粒子数;k表示当前迭代次数;vkid表示第i个粒子在第k次迭代速度;xkid表示第i个粒子在第k次迭代位置;pbestkid表示第i个粒子的个体最优解;gbestkid表示第i个粒子的全局最优解;c1,c2表示学习因子;r1,r2表示随机数㊂空间中的粒子不断搜寻其自身的最优解,将自身最优解传递给其他粒子,在所有传递的个体最优解中寻找全局最优解,所有粒子根据自身最优解及全局最优解不断调整位置及速度㊂2.3㊀粒子群优化支持向量机为了使SVM能够对肌电信号特征进行快速精确地识别,通过PSO对SVM中分类识别影响最大的2个元素进行优化,即惩罚参数C和核函数半径参数g,将SVM结果中误差最小的一组惩罚参数和核函数半径参数用于预测分类㊂图2是PSO优化SVM的流程图㊂由图2可知,m个粒子在D维空间中不断更新运动速度及自身所处位置,通过反复迭代寻优得到SVM的最优参数㊂粒子群优化:更新全局最优个体更新速度更新位置根据S V M 参数形成初始种群计算适应度值形成新的种群是否满足条件交叉验证,得到最佳准确率作为适应度值返回输入参数训练S V M得到S V M 最优参数结束开始参数适应度值是否图2㊀PSO-SVM流程图Fig.2㊀PSO-SVMflowchart671智㊀能㊀计㊀算㊀机㊀与㊀应㊀用㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀第13卷㊀Copyright ©博看网. All Rights Reserved.㊀㊀PSO优化SVM主要包括初始化种群㊁寻找初始极值㊁迭代寻优等操作,其步骤为:(1)在D维空间中,随机对m个粒子进行初始化,即对SVM参数编码,形成初始种群㊂(2)初始化的种群输入到SVM分类器中,通过训练得到适应度值㊂(3)评估计算得到的粒子适应度值㊂(4)寻找全局最优参数,并判断是否满足终止条件㊂(5)若寻找得到的最优参数不满足终止条件,则更新迭代过程中的全局最优速度和全局最优位置,形成新的种群返回到步骤2继续计算;当结束条件得到满足时,通过将最优参数对SVM重新训练,并将其作为最终分类器对特征识别分类㊂㊀㊀通过上述PSO优化算法得到SVM中惩罚参数C和核函数半径g的最优解,对分类器进行训练和分类预测㊂3㊀实验结果分析实验将从2方面对所提出方法模型进行分析验证:(1)分别使用本文设计的算法模型与传统SVM模型㊁遗传算法优化SVM模型对相同的实验数据进行实验对比,验证模型的有效性㊂(2)为判断模型的识别性能,使用交叉验证,将训练样本与验证样本的数据来源分割开来用于实验,以评估方法的通用性,使用不同人的训练样本去验证其他人的测试样本㊂3.1㊀不同分类模型的对比分析将PCA降维后的特征矩阵按照5ʒ1的比例分类参与分类器的训练和验证,训练和测试的样本不重叠且从实验者中平均调取㊂测试结果如图3所示㊂表2是关于分类器识别性能在不同方法下的对比㊂实际类型预测类型16141210864220406080100120140160样本序号类型(a)SVM预测结果161412108642020406080100120140160测试集样本类别标签实际测试集分类预测测试集分类测试集的实际分类和预测分类图A c c u r a c y =94.375%(b)GA-SVM预测结果1009080706050400102030405060708090100最佳适应度平均适应度进化代数适应度(c)GA-SVM迭代次数161412108642020406080100120140160测试集样本类别标签实际测试集分类预测测试集分类测试集的实际分类和预测分类图A c c u r a c y =95.625%(d)PSO-SVM预测结果100908070605040最佳适应度平均适应度进化代数102030405060708090100适应度(e)PSO-SVM迭代次数图3㊀测试结果对比图Fig.3㊀Comparisontableofresultsofdifferentmodels771第7期王博,等:基于PSO-SVM的表面肌电信号多手势识别Copyright ©博看网. All Rights Reserved.表1㊀不同模型结果对比表Tab.1㊀Comparisontableofresultsofdifferentmodels实验方法平均迭代次数平均准确率/%SVM\87.500GA-SVM2691.320本文方法1194.253㊀㊀由上述实验结果可以得出分析如下,不同方法表现出不同的分类效果㊂其中,传统的SVM方法,分类效果易受到干扰,分类精度不高;GA-SVM虽然能够提高手势的识别精度,但在分类过程中需要经过31次的迭代才能够达到分类的效果;对于本文中的方法,不仅对手势识别的准确率保持最高,同时也大大缩减了算法的复杂度,极大地提高了运算处理效率,表现出较好的分类识别性能㊂3.2㊀不同数据源实验验证考虑模型的通用性,即模型中训练的数据是基于部分受试者肌电信号进行训练,但手势识别对其他受试者的肌电信号同样适用㊂同时,为了分析所提出的模型在相同被试和不同被试下的识别性能,实验设计了男女混合验证的方式以消除性别的影响,按照2位男性同学的肌电信号进行训练,另外2位同学的肌电信号用于识别㊂分别使用SVM和POS-SVM进行实验对比,验证本文中所提方法的有效性㊂得到的训练结果性能对比见表2㊂表2㊀不同数据源实验结果对比表Tab.2㊀Comparisontableofexperimentalresultsofdifferentdatasources分类模型平均准确率/%SVM82.23PSO-SVM90.64㊀㊀由表2中的结果可知:不同数据源的实验比同一数据源降低了3.61%,而SVM下降程度更高,也进一步说明了本文中所提出的优化方法具有较好的识别性㊂4㊀结束语为了提高多手势识别的精度,文中提出了基于PSO-SVM的识别方法㊂结果表明,通过肌电信号的陷波滤波和带通滤波进行预处理,并对其从时域㊁频域和时频域提取信号特征,再经过PCA降维后使用本文所构建的PSO-SVM分类模型对16种手势识别准确率达到94.253%,将其与未被优化的SVM模型和GA-SVM模型进行对比,可知其识别效果有非常明显的改善㊂后续可将PSO-SVM分类模型应用于机械运动控制㊁外骨骼控制等领域㊂参考文献[1]解迎刚,王全.基于视觉的动态手势识别研究综述[J].计算机工程与应用,2021,57(22):68-77.[2]梁旭,王卫群,侯增广,等.康复机器人的人机交互控制方法[J].中国科学:信息科学,2018,48(01):24-46.[3]赵诗琪,吴旭洲,张旭,等.利用表面肌电进行手势自动识别[J].西安交通大学学报,2020,54(09):149-156.[4]隋修武,牛佳宝,李昊天,等.基于NMF-SVM模型的上肢sEMG手势识别方法[J].计算机工程与应用,2020,56(17):161-166.[5]江茜,李沿宏,邹可,等.肌电信号多通道相关性特征手势识别方法[J/OL].计算机工程与应用:1-9[2022-03-07].https://kns.cnki.net/kcms/detail/11.2127.tp.20220303.2103.008.html.[6]LEONM,GUTIERREZJM,LEIJAL,etal.EMGpatternrecognitionusingSupportVectorMachinesclassifierformyoelectriccontrolpurposes[C]//2011PanAmericanHealthCareExchanges.RiodeJaneiro,Brazil:IEEE,2011.[7]LIANKY,CHIUCC,HONGYJ,etal.Wearablearmbandforrealtimehandgesturerecognition[C]//2017IEEEInternationalConferenceonSystems,Man,andCybernetics(SMC).Banff,AB,Canada:IEEE,2017:2992-2995.[8]石欣,朱家庆,秦鹏杰,等.基于改进能量核的下肢表面肌电信号特征提取方法[J].仪器仪表学报,2020,41(01):121-128.[9]梅武松,李忠新.基于手形和姿态的军用动态手势识别方法研究[J].兵器装备工程学报,2021,42(05):208-214.[10]来全宝,陶庆,胡玉舸,等.基于人工鱼群算法-极限学习机的多手势精准识别[J].工程设计学报,2021,28(06):671-678.[11]许留凯,张克勤,徐兆红,等.基于表面肌电信号能量核相图的卷积神经网络人体手势识别算法[J].生物医学工程学杂志,2021,38(04):621-629.[12]都明宇,鲍官军,杨庆华,等.基于改进支持向量机的人手动作模式识别方法[J].浙江大学学报(工学版),2018,52(07):1239-1246.[13]徐云,王福能.采用sEMG的手势识别用APSO/CS-SVM方法[J].电子测量与仪器学报,2020,34(07):1-7.[14]黄铉.特征降维技术的研究与进展[J].计算机科学,2018,45(S1):16-21,53.[15]王霞,董永权,于巧,等.结构化支持向量机研究综述[J].计算机工程与应用,2020,56(17):24-32.[16]冯茜,李擎,全威,等.多目标粒子群优化算法研究综述[J].工程科学学报,2021,43(06):745-753.871智㊀能㊀计㊀算㊀机㊀与㊀应㊀用㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀第13卷㊀Copyright©博看网. All Rights Reserved.。
pso-svm算法原理
pso-svm算法原理PSOSVM算法原理PSOSVM(Particle Swarm Optimization Support Vector Machine)是一种基于粒子群优化(PSO)的支持向量机(SVM)算法。
PSO算法是一种经典的全局优化算法,通过模拟鸟群或鱼群等生物群体行为,寻找最优解。
SVM算法是一种常用的机器学习算法,用于分类和回归问题。
PSOSVM算法结合了PSO算法的全局搜索能力和SVM算法的分类性能,能够在高维数据集中寻找到最佳的分类超平面。
下面将一步一步解释PSOSVM算法的原理。
1. 数据准备PSOSVM算法的输入是一个包含已知分类标签的训练数据集。
训练数据集由一组特征向量和相应的类标签组成。
特征向量描述了数据样本的特征,而类标签指示了每个样本的分类。
2. 初始化粒子群和SVM参数PSOSVM算法首先需要初始化粒子群,即一组粒子的初始位置和速度。
每个粒子代表了一个SVM模型的候选解。
粒子的位置表示了SVM模型的参数向量(例如权重向量和截距)的取值,而粒子的速度表示了参数向量的更新速度。
此外,初始化也需要设置PSO的参数,如惯性权重、加速度系数和迭代次数等。
这些参数决定了算法的搜索效率和精度。
3. 粒子运动和更新在PSOSVM算法中,粒子的运动可通过以下过程实现:- 计算粒子的适应度(即分类性能):根据当前粒子位置和速度,计算对应SVM模型的分类性能,通常使用交叉验证等方法评估。
- 更新粒子的最佳位置:比较当前粒子的适应度与历史最佳适应度,更新粒子的最佳位置,即当前拥有最好性能的SVM模型参数。
- 更新粒子的速度和位置:根据粒子自身的历史行为和群体最优行为,更新粒子的速度和位置。
这个过程使用加速度系数和随机数来控制粒子的移动速度和方向,以实现全局搜索。
- 限制粒子的位置和速度:为了保证SVM模型参数的可行解和避免搜索过程出现过度迭代,需要根据问题的约束条件限制粒子的位置和速度。
粒子群优化SVMpsoSVMcgForClass
% ' CVAccuracy=',num2str(bestCVaccuarcy),'%'];
% title({line1;line2;line3},'FontSize',12);
end
% 找极值和极值点
[global_fitness bestindex]=min(fitness); % 全局极值
local_fitness=fitness; % 个体极值初始化
global_x=pop(bestindex,:); % 全局极值点
local_x=pop; % 个体极值点初始化
% wP:初始为1,种群更新公式中速度前面的弹性系数
% v:初始为3,SVM Cross Validation参数
% popcmax:初始为100,SVM 参数c的变化的最大值.
% popcmin:初始为0.1,SVM 参数c的变化的最小值.
% popgmax:初始为1000,SVM 参数g的变化的最大值.
% maxgen:初始为200,最大进化数量
% sizepop:初始为20,种群最大数量
% k:初始为0.6(k belongs to [0.1,1.0]),速率和x的关系(V = kX)
% wV:初始为1(wV best belongs to [0.8,1.2]),速率更新公式中速度前面的弹性系数
if pop(j,1) > pso_option.popcmax
pop(j,1) = pso_option.popcmax;
蜂群算法和PSO算法
4、进入迭代 count++
根据公式调整粒子的位置 判断粒子的位置和速度有没有超出范围 再调用libsvm计算新的准确率,得到新的最优值 做一些粘滞次数的判断,或者选择一些粒子随机更新位置
5、count >iter,返回最优值,并退出循环
谢谢观赏
Make Presentation much more fun
参数:
3、程序根据获取的c,g值调用libsvm对训练集进行训 练,并计算模型预测的准确率(这个准确率就是用来评 价解决方案优劣的指标);算出个体最优和全局最优
粒子的数量 number_of_particle; 学习因子c1,c2; 最大迭代次数iter; 搜索空间的范围 x_max , x_min; 粒子更新速度的范围 v_max , v_min;
@WPS官方微博 @kingsoftwps
蜂群算法伪代码
1、Initialsolution() //初始化解决方案Xij,( i=1,2……SN,j=1,2……D) 其中SN为解决方案的总数,D为个方案中参数的个数。 2、cycle=0; 3、重复执行: 4、雇佣蜂阶段:ProcessEmployedBee(); GenerateNeighborMemorySolution(); //产生邻近方案 判断是否放弃食物源; 判断是否更新食物源信息; 5、侦查蜂阶段:ProcessScoutBee(); 搜索蜂巢周边的食物源; 发现更好的食物源则更新信息; 6、旁观蜂阶段:在舞蹈区观察并选择更好的食物源; Cycle=cycle+1; 7、每次记录目前为止最佳的解决方案; 8、直到cycle超过最大循环次数,退出循环 9、返回最佳的解决方案
XMU-DM
title
支持向量机的参数调优方法
支持向量机的参数调优方法支持向量机(Support Vector Machine,简称SVM)是一种常用的机器学习算法,广泛应用于分类和回归问题。
然而,SVM的性能很大程度上依赖于参数的选择。
本文将介绍一些常见的支持向量机参数调优方法,帮助读者更好地利用SVM 进行数据分析和模型建立。
一、核函数选择核函数是SVM中的一个重要参数,它用于将样本从原始空间映射到高维特征空间,以便更好地进行分类。
常见的核函数有线性核函数、多项式核函数和高斯核函数等。
在实际应用中,我们需要根据数据的特点选择合适的核函数。
对于线性可分的数据,选择线性核函数是合理的。
线性核函数计算速度快,适用于样本特征较少的情况。
然而,在某些非线性可分的问题中,线性核函数的表现可能不佳。
这时,我们可以选择多项式核函数或高斯核函数。
多项式核函数通过引入多项式的方式将数据映射到高维空间,从而实现非线性分类。
它的一个重要参数是多项式的阶数,可以通过交叉验证的方式进行选择。
高斯核函数(也称为径向基函数)在非线性分类问题中表现良好。
它通过计算样本点与支持向量之间的距离,将数据映射到无穷维的特征空间。
高斯核函数有一个重要参数sigma,控制了高斯函数的宽度。
选择合适的sigma值对于高斯核函数的性能至关重要。
二、惩罚参数选择惩罚参数C是SVM中的另一个重要参数,它用于平衡模型的复杂度和训练误差。
C值越大,模型对于训练误差的容忍度越低,模型复杂度越高;C值越小,模型对于训练误差的容忍度越高,模型复杂度越低。
在实际应用中,我们需要根据数据的特点选择合适的惩罚参数C。
一种常见的方法是使用网格搜索(Grid Search)来寻找最优的C值。
网格搜索通过遍历一系列的C值,并使用交叉验证来评估模型性能,从而选择最优的C值。
除了网格搜索,还可以使用启发式算法来选择惩罚参数C。
例如,可以使用粒子群优化算法(Particle Swarm Optimization,简称PSO)或遗传算法(Genetic Algorithm,简称GA)来寻找最优的C值。
基于改进pso-svm的燃煤电厂烟气含氧量软测量
基于改进 PSOSVM 的燃煤电厂烟气含氧量软测量
苏 涛1,潘红光1,黄向东1,邵小强1,马 彪2
(1.西安科技大学 电气与控制工程学院,陕西 西安 710054; 2.鄂尔多斯市神东工程设计有Hale Waihona Puke 公司,新疆 鄂尔多斯 017000)
摘 要:针对燃煤电厂烟气含氧量测量成本高、使用过程复杂且精度低等问题,应用软测量的方 法来代替氧量传感器估计锅炉烟气含氧量。首先分析烟气含氧量的化学原理和锅炉工艺,初步 选取合理的辅助变量,同时引入邓氏关联度分析法对燃煤电厂数据做降维处理,利用支持向量 机建立辅助变量与烟气含氧量之间的软测量模型。其次,针对软测量模型参数优化问题,提出 一种改进的粒子群优化算法,并对模型中的惩罚参数和核函数参数进行优化,进而利用算法得 到的优化值构建改进的烟气含氧量软测量模型。最后,通过仿真验证改进的粒子群优化算法的 有效性,并与传统方法进行了对比研究,发现该方法较传统方法预测精度更高、泛化性更好,烟 气含氧量预测值的相对误差范围从[0,0.07]降至[0,0.02],均方根误差 RMSE为0.0604.结果 表明:所建立的烟气氧含量软测量模型能够满足燃煤电厂对于烟气氧含量测量的精度需求,可 以很好地解决烟气含氧量软测量精度低的问题,在燃煤电厂热效率提升和锅炉控制系统性能优 化方面具有指导意义。 关键词:烟气含氧量;软测量;支持向量机;改进粒子群算法;参数优化 中图分类号:TP13 文献标志码:A 文章编号:1672-9315(2020)02-0342-07 DOI:10.13800/j.cnki.xakjdxxb.2020.0221 开放科学(资源服务)标识码(OSID):
Softsensoroffluegasoxygencontentbasedonimproved PSOSVM incoalfiredpowerplant
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%% 清空环境
clc
clear
load wine;
train = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];
train_label = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)];
test = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];
test_label = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];
[train,pstrain] = mapminmax(train');
pstrain.ymin = 0;
pstrain.ymax = 1;
[train,pstrain] = mapminmax(train,pstrain);
[test,pstest] = mapminmax(test');
pstest.ymin = 0;
pstest.ymax = 1;
[test,pstest] = mapminmax(test,pstest);
train = train';
test = test';
%% 参数初始化
%粒子群算法中的两个参数
c1 = 1.6; % c1 belongs to [0,2]
c2 = 1.5; % c2 belongs to [0,2]
maxgen=300; % 进化次数
sizepop=30; % 种群规模
popcmax=10^(2);
popcmin=10^(-1);
popgmax=10^(3);
popgmin=10^(-2);
k = 0.6; % k belongs to [0.1,1.0];
Vcmax = k*popcmax;
Vcmin = -Vcmax ;
Vgmax = k*popgmax;
Vgmin = -Vgmax ;
% SVM参数初始化
v = 3;
%% 产生初始粒子和速度
for i=1:sizepop
% 随机产生种群
pop(i,1) = (popcmax-popcmin)*rand+popcmin; % 初始种群
pop(i,2) = (popgmax-popgmin)*rand+popgmin;
V(i,1)=Vcmax*rands(1); % 初始化速度
V(i,2)=Vgmax*rands(1);
% 计算初始适应度
cmd = ['-v ',num2str(v),' -c ',num2str( pop(i,1) ),' -g ',num2str( pop(i,2) )];
fitness(i) = svm train(train_label, train, cmd);
fitness(i) = -fitness(i);
end
% 找极值和极值点
[global_fitness bestindex]=min(fitness); % 全局极值
local_fitness=fitness; % 个体极值初始化
global_x=pop(bestindex,:); % 全局极值点
local_x=pop; % 个体极值点初始化
tic
%% 迭代寻优
for i=1:maxgen
for j=1:sizepop
%速度更新
wV = 0.9; % wV best belongs to [0.8,1.2]
V(j,:) = wV*V(j,:) + c1*rand*(local_x(j,:) - pop(j,:)) + c2*rand*(global_x - pop(j,:));
if V(j,1) > Vcmax
V(j,1) = Vcmax;
end
if V(j,1) < Vcmin
V(j,1) = Vcmin;
end
if V(j,2) > Vgmax
V(j,2) = Vgmax;
end
if V(j,2) < Vgmin
V(j,2) = Vgmin;
end
%种群更新
wP = 0.6;
pop(j,:)=pop(j,:)+wP*V(j,:);
if pop(j,1) > popcmax
pop(j,1) = popcmax;
end
if pop(j,1) < popcmin
pop(j,1) = popcmin;
end
if pop(j,2) > popgmax
pop(j,2) = popgmax;
end
if pop(j,2) < popgmin
pop(j,2) = popgmin;
end
% 自适应粒子变异
if rand>0.5
k=ceil(2*rand);
if k == 1
pop(j,k) = (20-1)*rand+1;
end
if k == 2
pop(j,k) = (popgmax-popgmin)*rand+popgmin;
end
end
%适应度值
cmd = ['-v ',num2str(v),' -c ',num2str( pop(j,1) ),' -g ',num2str( pop(j,2) )];
fitness(j) = svmtrain(train_label, train, cmd);
fitness(j) = -fitness(j);
end
%个体最优更新
if fitness(j) < local_fitness(j)
local_x(j,:) = pop(j,:);
local_fitness(j) = fitness(j);
end
%群体最优更新
if fitness(j) < global_fitness
global_x = pop(j,:);
global_fitness = fitness(j);
end
fit_gen(i)=global_fitness;
end
toc
%% 结果分析
plot(-fit_gen,'LineWidth',5);
title(['适应度曲线','(参数c1=',num2str(c1),',c2=',num2str(c2),',终止代数=',num2str(maxgen),')'],'FontSize',13);
xlabel('进化代数');ylabel('适应度');
bestc = global_x(1)
bestg = global_x(2)
bestCVaccuarcy = -fit_gen(maxgen)
cmd = ['-c ',num2str( bestc ),' -g ',num2str( bestg )];
model = svmtrain(train_label,train,cmd);
[trainpre,trainacc] = svmpredict(train_label,train,model);
trainacc
[testpre,testacc] = svmpredict(test_label,test,model);
testacc。