预测性维护中的数据分析示例(3)

内容

Method3:看到下面成了一个支持向量机

之前的方法,Hotelling的t平方方法和高斯混合模型,都是基于高斯分布的参数模型。但在实际应用中,数据分布有时没有明确的聚类,或者在更严重的情况下,由于维数多等原因无法掌握数据分布。在这种情况下,可以采用非参数模型。在这个演示中,我将展示一个类支持向量机(一种典型的非参数分类方法)如何从给定的数据集中检测出x %的离群值。

加载预处理数据

该数据由运行生成Demo0_PreProcessing.m

负载(“Preprocessed_FD001.mat”);

基于一类支持向量机的离群点检测

为了可视化结果,我想对前两个PCA组件应用一类SVM。

首先,将标记为“long”的一组数据点假定为正常条件。

然后,利用一类支持向量机方法计算出检测5%、1%和0.1%异常值的阈值。

最后,我想用这些阈值创建前两个组件的图。

计算检测5%、1%和0.1%异常值的阈值idx = (dataTrainZ。标签= =“长”);Th = [0.001, 0.01, 0.05];mdlSVM =细胞(3,1);C =细胞(3,1);d = 0.1;[x1Grid, x2Grid] = meshgrid(-8:d:8, -8:d:8);mdlSVM{kk} = fitcsvm(score(idx,1:2), ones(nnz(idx),1),...“KernelFunction”“rbf”...“OutlierFraction”th (kk));[~,方式]=预测(mdlSVM {kk}, [x1Grid (:) x2Grid (:)));网格=重塑(网格,大小(x1Grid,1),大小(x2Grid,2));%基于一类支持向量机生成阈值C {kk} = contourc ((8: d: 8), (8: d: 8),方式,[0 0]);结束设置颜色为5%,1%和0.1%的离群区域Col5per = [0.75 0.95 1];Col1per = [0.75 1 0.75];Col01per = [1 1 0.75];colAnomaly = [1 0.85 0.85];%绘制结果图plotContourmatrix (C {1}, col01per);plotContourmatrix (C {2}, col1per);plotContourmatrix (C {3}, col5per);持有;s1 = gscatter(分数(:1),...分数(:,2),...dataTrainZ.Label);idx = dataTrainZ。时间= = 0;s2 =情节(分数(idx, 1),...分数(idx, 2),“记者”“MarkerSize”10“MarkerFaceColor”' w ');传奇([s1;s2) {“紧急”“短”“媒介”“长”故障发生的},...“颜色”, [1 1 1],...“位置”“西北”...“字形大小”12);甘氨胆酸ax =;斧子。颜色= colAnomaly;斧子。盒=“上”;包含(第一主成分的“字形大小”12);ylabel (第二主成分的“字形大小”12);标题({“训练数据和计算离群点检测阈值”...“蓝色:正常,绿色:5%离群值,黄色:1%离群值,红色:0.1%离群值”},“字形大小”, 12)

应用到测试集

在此过程中,将这些阈值(可以检测出5%、1%和0.1%的异常值)应用于测试数据集。通过创建带有测试集和这些阈值的前两个组件的图来显示结果。在这个图中,每个引擎的条件通过改变每个数据点的颜色来显示。在实际情况中,只有每个数据点的位置和离群点检测的阈值是可用的。

如图所示,一类支持向量机计算出的离群值检测阈值对于机器正常运行时的异常检测和故障预测也很有帮助。在本例中,可以使用1%离群值检测阈值检测测试集中的所有“紧急”条件。

将测试集标准化dataTestZ =人数(;dataTestZ {: 3: end-1} =(人数({:3:end-1} -μ)。/σ;分数= dataTestZ {: 3: end-1} * wcoeff;%绘制结果图plotContourmatrix (C {1}, col01per);plotContourmatrix (C {2}, col1per);plotContourmatrix (C {3}, col5per);持有;s1 = gscatter(分数(:1),...分数(:,2),...dataTestZ.Label);传奇(s1, {s1。DisplayName},...“颜色”, [1 1 1],...“位置”“西北”...“字形大小”12);甘氨胆酸ax =;斧子。颜色= colAnomaly;斧子。盒=“上”;包含(第一主成分的“字形大小”12);ylabel (第二主成分的“字形大小”12);标题({“对测试数据应用离群值检测阈值”...“蓝色:正常,绿色:5%离群值,黄色:1%离群值,红色:0.1%离群值”},“字形大小”, 12)