💥💥💞💞欢迎来到本博客❤️❤️💥💥
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
💥1 概述
1.1 基于SVDD的故障检测
基于SVDD的故障检测方法是1种典型的单类划分方法。基本思想是在高维空间中找到1个中心为ap 半径为R的最小体积超球体包围尽可能多的目标数据,如图1所示。对于1个新样木,通过判断新样本是否在超球体内来实现分类,如果在超球内,则被接受,否则被拒绝。使用SVDD进行故障检测时[10],仅使用正常样本数据集对模型进行训练,获得包络最多正常样本数据点的最小体积超球体。
编辑
编辑式中:x为测试样本;xk为训练样本中支持向量。使用基于SVDD方法,进行故障检测时,计算测试样本x至由正常样本数据集训练得到超球体中心αp的距离,若D(x) >R则样本x位于超球体之外,此时判定机组发生了故障,若D(x)≤R,则样本x位于超球体之内,此时判定机组正常运行。
- 用于单类或二元分类的 SVDD 模型
- 多种核函数(线性、高斯、多项式、Sigmoid、拉普拉斯函数)
- 可视化 2D 或 3D 数据的决策边界
- 使用贝叶斯优化、遗传算法和p粒子群优化的参数优化
- 加权 SVDD 模型
- 混合内核 SVDD 模型 (K =w1×K1+w2×K2+...+wn×Kn)
📚2 运行结果
2.1 基本SVDD 模型
编辑
编辑
编辑
2.2 二分类SVDD 模型
编辑
2.3 DimReduPCA
编辑
编辑
编辑
2.4 HybridKernelSVDD
编辑
编辑
2.5 KernelFunction
编辑
2.6 ObservationWeight
编辑
编辑
编辑
2.7 ParameterOptimization
编辑
编辑 编辑
编辑
部分代码:
% set parameter
cost = 0.9;
kernel = BaseKernel('type', 'gaussian', 'gamma', 1.5);
% optimization setting
opt.method = 'pso'; % bayes, ga pso
opt.variableName = { 'cost', 'gamma'};
opt.variableType = {'real', 'real'}; % 'integer' 'real'
opt.lowerBound = [10^-2, 2^-6];
opt.upperBound = [10^0, 2^6];
opt.maxIteration = 20;
opt.points = 3;
opt.display = 'on';
svddParameter = struct('cost', cost, ...
'kernelFunc', kernel, ...
'optimization', opt, ...
'KFold', 5);
% creat an SVDD object
svdd = BaseSVDD(svddParameter);
% train SVDD model
svdd.train(trainData, trainLabel);
% test SVDD model
results = svdd.test(testData, testLabel);
% Visualization
svplot = SvddVisualization();
svplot.boundary(svdd);
svplot.distance(svdd, results);
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]张正智,周赛,王占伟,王林,谈莹莹,梁博阳.面向缺失数据基于SVR-SVDD的冷水机组故障检测方法[J].建筑科学,2023,39(02):193-201.DOI:10.13614/j.cnki.11-1962/tu.2023.02.23.
[2]田慧,刘维滨.基于单分类算法SVDD的柴油机故障预测研究[J].中国水运(下半月),2022,22(09):70-72.
[3]赖思银.基于PCA和改进SVDD的异常检测算法[J].微型电脑应用,2022,38(08):129-132.
🌈4 Matlab代码实现
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取【请看主页然后私信】