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

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞💞💞💞💞💞💥💥💥💥💥💥
在这里插入图片描述
✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进;
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式

⛳️座右铭:行百里者,半于九十。
更多Matlab信号处理仿真内容点击👇
Matlab信号处理 (进阶版)
付费专栏Matlab信号处理(初级版)

⛳️关注优快云海神之光,更多资源等你来!!

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

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 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海神之光

有机会获得赠送范围1份代码

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值