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

Posted 海神之光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了轴承故障诊断基于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);
end
if abs( NewBestCVaccuracy-BestCVaccuracy ) <= 10^(-2) && ...
        cg_temp(I,1) < Bestc
    BestCVaccuracy = NewBestCVaccuracy;
    Bestc = cg_temp(I,1);
    Bestg = cg_temp(I,2);
end
trace(gen,1) = max(ObjV);
trace(gen,2) = sum(ObjV)/length(ObjV); 
gen = gen+1; 
if gen <= MAXGEN/2
    continue;
end
if BestCVaccuracy >=80 && ...
        ( temp_NewBestCVaccuracy-BestCVaccuracy ) <= 10^(-2)
    break;
end
if 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 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

以上是关于轴承故障诊断基于matlab贝叶斯优化支持向量机轴承故障诊断(西储数据)含Matlab源码 2027期的主要内容,如果未能解决你的问题,请参考以下文章

故障诊断分析基于matlab FFT轴承故障诊断含Matlab源码 2001期

故障诊断分析基于matlab FFT轴承故障诊断(包络谱)含Matlab源码 2002期

故障诊断预测基于matlab FFT与DBN轴承故障诊断预测含Matlab源码 1741期

故障诊断分析基于matlab FFT轴承故障诊断含Matlab源码 1397期

故障诊断分析基于matlab小波变换外圈轴承故障诊断含Matlab源码 1678期

故障诊断分析基于matlab小波包能量分析轴承故障诊断含Matlab源码 1620期