【轴承故障诊断】基于matlab贝叶斯优化支持向量机轴承故障诊断(西储数据)【含Matlab源码 2027期】

网友投稿 233 2022-08-23

【轴承故障诊断】基于matlab贝叶斯优化支持向量机轴承故障诊断(西储数据)【含Matlab源码 2027期】

一、贝叶斯优化支持向量机简介

1 支持向量机 SVM的基本思想是结构风险最小化, 通过核函数将数据从原始特征空间映射到高维特征空间, 使线性内积运算非线性化, 然后在高维特征空间建立使分类间隔最大化的最优超平面。 惩罚因子C和RBF核函数参数γ是SVM中两个重要的参数。 惩罚因子C>0, C越大对错误分类的惩罚越大, 但容易出现过拟合; C越小则对错误分类的惩罚减小, 模型的复杂度降低, 容易出现欠拟合。 γ决定数据映射到新特征空间后的分布, γ越小, 支持向量越多, 模型平滑效应增大, 容易欠拟合; γ越大, 支持向量越少, 对未知样本分类效果很差, 模型容易过拟合。 支持向量的个数影响模型训练与预测的速度, 因此在使用SVM建立判别模型时, 惩罚参数C和核函数参数γ的选择至关重要。

2 贝叶斯优化

SVM模型参数C和γ与模型性能之间呈现黑箱特点, 即模型的性能与参数C和γ之间无法使用表达式描述, 只能根据通过遍历离散的自变量取值得到最优SVM模型。 贝叶斯优化是一种十分高效的全局优化算法, 主要用于机器学习调参, 贝叶斯优化是一种不需要计算导数的系统化调优算法, 采用高斯过程建立概率代理模型, 考虑之前的参数信息, 不断更新先验, 使用采集函数来确定下一个评估点, 可以在较短的时间内确定最佳参数。 概率代理模型和采集函数是贝叶斯优化算法的两个核心组件。 高斯过程是随机变量的集合, 用以代替目标优化函数。 在本研究中, 高斯过程用于优化的SVM的参数组合, 高斯过程的表达式如式(1)

常见的超参数优化算法包括网格搜索、 遗传算法, 这些算法除了非常耗时之外, 在遍历下一个离散参数时不考虑之前的参数信息, 针对非凸问题容易陷入局部最优。 而贝叶斯优化侧重于减少评估代价, 迭代次数少, 速度快, 而且考虑之前的参数信息, 针对非凸问题不易陷入局部最优。 本研究选择贝叶斯优化作为SVM模型的参数寻优算法。

贝叶斯优化算法的过程如下:

(1) 在SVM模型的C和γ的设定搜索范围中随机选取n0个采样点, 以十折交叉验证的平均测试准确率为目标函数f, 模型的不同参数组合作为自变量x, 构成代理模型框架, 得到目标函数的初始分布和采样点集D;

(2) 通过最大化采集函数选择下一个采样点xt, 得到采样点函数值f(xt);

(3) 将新的采样点[xt, f(xt)]添加到采样点集D中, 更新高斯过程代理模型, 使得代理模型更加贴合目标函数的分布;

(4) 设定一个最大迭代次数, 当迭代次数达到最大次数时, 停止算法迭代, 输出最优采样点以及对应的目标函数最优值, 即SVM模型的最优参数C和γ。

二、部分源代码

function [BestCVaccuracy,Bestc,Bestg,ga_option] = gaSVMcgForClass(train_label,train_data,ga_option) %% 参数初始化 if nargin == 2 ga_option = struct(‘maxgen’,100,‘sizepop’,20,‘ggap’,0.9,… ‘cbound’,[1e-3 1e3],‘gbound’,[2^-5 2^5],‘v’,5); end % maxgen:最大的进化代数,默认为200,一般取值范围为[100,500] % sizepop:种群最大数量,默认为20,一般取值范围为[20,100] % cbound = [cmin,cmax],参数c的变化范围,默认为(0,100] % gbound = [gmin,gmax],参数g的变化范围,默认为[0,1000] % v:SVM Cross Validation参数,默认为5%% MAXGEN = ga_option.maxgen; NIND = ga_option.sizepop; NVAR = 2; PRECI = 20; GGAP = ga_option.ggap; trace = zeros(MAXGEN,2);FieldID = … [rep([PRECI],[1,NVAR]);[ga_option.cbound(1),ga_option.gbound(1);ga_option.cbound(2),ga_option.gbound(2)]; … [1,1;0,0;0,1;1,1]];Chrom = crtbp(NIND,NVAR*PRECI);gen = 1; v = ga_option.v; BestCVaccuracy = 0; Bestc = 0; Bestg = 0; %% cg = bs2rv(Chrom,FieldID);for nind = 1:NIND cmd = ['-v ‘,num2str(v),’ -c ‘,num2str(cg(nind,1)),’ -g ',num2str(cg(nind,2))]; ObjV(nind,1) = libsvmtrain(train_label,train_data,cmd); end [BestCVaccuracy,I] = max(ObjV); Bestc = cg(I,1); Bestg = cg(I,2);%% while 1

FitnV = ranking(-ObjV); SelCh = select('sus',Chrom,FitnV,GGAP);SelCh = recombin('xovsp',SelCh,0.7);SelCh = mut(SelCh);cg = bs2rv(SelCh,FieldID);for nind = 1:size(SelCh,1) cmd = ['-v ',num2str(v),' -c ',num2str(cg(nind,1)),' -g ',num2str(cg(nind,2))]; ObjVSel(nind,1) = libsvmtrain(train_label,train_data,cmd);end[Chrom,ObjV] = reins(Chrom,SelCh,1,1,ObjV,ObjVSel); if max(ObjV) <= 50 continue;end[NewBestCVaccuracy,I] = max(ObjV);cg_temp = bs2rv(Chrom,FieldID);temp_NewBestCVaccuracy = NewBestCVaccuracy;if NewBestCVaccuracy > BestCVaccuracy BestCVaccuracy = NewBestCVaccuracy; Bestc = cg_temp(I,1); Bestg = cg_temp(I,2);endif abs( NewBestCVaccuracy-BestCVaccuracy ) <= 10^(-2) && ... cg_temp(I,1) < Bestc BestCVaccuracy = NewBestCVaccuracy; Bestc = cg_temp(I,1); Bestg = cg_temp(I,2);endtrace(gen,1) = max(ObjV);trace(gen,2) = sum(ObjV)/length(ObjV); gen = gen+1; if gen <= MAXGEN/2 continue;endif BestCVaccuracy >=80 && ... ( temp_NewBestCVaccuracy-BestCVaccuracy ) <= 10^(-2) break;endif gen == MAXGEN break;end

end gen = gen -1; %% figure; hold on; trace = round(trace10000)/10000; plot(trace(1:gen,1),'r-',‘LineWidth’,1.5); plot(trace(1:gen,2),‘o-’,‘LineWidth’,1.5); legend(‘最佳适应度’,‘平均适应度’); xlabel(‘进化代数’,‘FontSize’,12); ylabel(‘适应度’,‘FontSize’,12); axis([0 gen 0 100]); grid on; axis auto;line1 = ‘适应度曲线Accuracy[GAmethod]’; line2 = [‘(终止代数=’, … num2str(gen),‘,种群数量pop=’, … num2str(NIND),‘)’]; line3 = [‘Best c=’,num2str(Bestc),’ g=‘,num2str(Bestg), … ’ CVAccuracy=’,num2str(BestCVaccuracy),‘%’]; title({line1;line2;line3},‘FontSize’,12);

三、运行结果

四、matlab版本及参考文献

1 matlab版本 2014a

2 参考文献 [1]冯瑞杰,陈争光,衣淑娟.基于贝叶斯优化的SVM玉米品种鉴别研究[J].光谱学与光谱分析. 2022,42(06)

3 备注 简介此部分摘自互联网,仅供参考,若侵权,联系删除

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:springboot 部署到 weblogic 中 jar 包冲突
下一篇:LibTorch之张量操作与线性回归
相关文章

 发表评论

暂时没有评论,来抢沙发吧~