異常檢測(cè)任務(wù),指的是檢測(cè)偏離期望行為的事件或模式,可以是簡(jiǎn)單地檢測(cè)數(shù)值型數(shù)據(jù)中,是否存在遠(yuǎn)超出正常取值范圍的離群值,也可以是借助相對(duì)復(fù)雜的機(jī)器學(xué)習(xí)算法識(shí)別數(shù)據(jù)中隱藏的異常模式。
在不同行業(yè)中,異常檢測(cè)的典型應(yīng)用場(chǎng)景包括:
根據(jù)設(shè)備傳感器采集的信號(hào),識(shí)別零部件故障類型
自動(dòng)檢測(cè)生產(chǎn)線中產(chǎn)品加工異常,降低不良率或輔助質(zhì)檢人員提高工作效率
監(jiān)控金融交易中是否存在詐騙行為
根據(jù)醫(yī)學(xué)影像數(shù)據(jù),識(shí)別癌組織及其邊界
針對(duì)異常數(shù)據(jù)的不同,以及是否可以人為判斷異常行為或故障模式,實(shí)現(xiàn)方式各有千秋。本文分為上下兩篇,在第一部分,將梳理異常檢測(cè)問題的一般處理思路,第二部分則結(jié)合示例重點(diǎn)討論基于統(tǒng)計(jì)和機(jī)器學(xué)習(xí)的無監(jiān)督異常檢測(cè)方法。
什么是異常值
異常值包括離群值和奇異值,以下是相關(guān)定義:
離群值(outlier):偏離正常范圍的數(shù)據(jù),可能是由傳感器故障、人為錄入錯(cuò)誤或異常事件導(dǎo)致,在構(gòu)建機(jī)器學(xué)習(xí)或統(tǒng)計(jì)模型前,如果不對(duì)離群值做任何處理,可能會(huì)導(dǎo)致模型出現(xiàn)偏差。
奇異值(novelty):數(shù)據(jù)集未受到異常值污染,但是存在某些區(qū)別于原數(shù)據(jù)分布的觀測(cè)數(shù)據(jù)。
首先,了解你的數(shù)據(jù)
在一頭扎進(jìn)算法或模型開發(fā)之前,首先需要做的是仔細(xì)查看手中的數(shù)據(jù),并考慮以下問題:
01原始數(shù)據(jù)中的異常是否是顯而易見的?
機(jī)電設(shè)備的停機(jī)、堵轉(zhuǎn)等異?,F(xiàn)象,從信號(hào)波形就可以直接判斷異常原因和發(fā)生時(shí)間,這類問題比較簡(jiǎn)單,常用突變點(diǎn)檢測(cè)函數(shù)findchangepts或過程控制SPC (Statistical Process Control) 中 control chart 進(jìn)行處理。例如圖1(a)中超出上下置信區(qū)間的數(shù)據(jù)點(diǎn)即為異常點(diǎn),具體可查看示例:Find abrupt changes in signal[1] ,Control Charts[2] ,統(tǒng)計(jì)過程控制[3]
02從原始數(shù)據(jù)中是否可以提取出能夠有效區(qū)分異常的特征?
旋轉(zhuǎn)機(jī)械設(shè)備的正常和異常數(shù)據(jù),從時(shí)域信號(hào)的波形看上去往往相差無幾,但是經(jīng)過頻域變換后,不同頻率分量的幅值,可能有較大的不同,這種情況下,可根據(jù)頻域特征直接檢測(cè)出異常,如圖 1(b) 中標(biāo)記的異常部分。
03從統(tǒng)計(jì)分析的角度,是否可以分區(qū)異常和正常數(shù)據(jù)?
Predictive Maintenance Toolbox內(nèi)置的Diagnostic Feature Designer App,可以幫助我們提取時(shí)域和頻域特征,并分析其統(tǒng)計(jì)分布,例如,在工業(yè)設(shè)備應(yīng)用中,利用三軸加速度傳感器,分別采集設(shè)備維護(hù)前(藍(lán)色)和維護(hù)后(紅色)的振動(dòng)信號(hào),如圖 1(c) 所示,對(duì)這兩類信號(hào)(每類多個(gè)樣本)提取標(biāo)準(zhǔn)差、斜度等常用統(tǒng)計(jì)特征,再分析兩類信號(hào)的特征直方圖,見圖 1(d),不難看出,二者的各個(gè)特征的統(tǒng)計(jì)分布均存在一定差異。此外,在 Diagnostic Feature Designer App 中,還可以使用一系列特征排序的方法,例如在有標(biāo)簽或無標(biāo)簽的條件下,分別選用 One-Way ANOVA 和 Laplace Score 分析哪些特征可以更好地輔助判斷,并利用這些特征作訓(xùn)練基于機(jī)器學(xué)習(xí)的異常檢測(cè)模型。
04如果無法確定數(shù)據(jù)中是否存在特定的異常模式,應(yīng)該如何處理?
在全天候運(yùn)行的工業(yè)設(shè)備中,故障停機(jī)意味著產(chǎn)能的降低,因此設(shè)備運(yùn)營(yíng)階段往往采取預(yù)防性維護(hù)的策略,這意味著異常數(shù)據(jù)稀缺,并且采集到數(shù)據(jù)全部或大多是正常數(shù)據(jù),異常數(shù)據(jù)的占比往往較低(獲取難度大風(fēng)險(xiǎn)高,或是無法描述異常模式),這也是為什么異常檢測(cè)任務(wù)多被處理為無監(jiān)督學(xué)習(xí)問題,僅僅通過正樣本(正常數(shù)據(jù))訓(xùn)練算法實(shí)現(xiàn)任務(wù),或根據(jù)數(shù)據(jù)的隱藏特性篩選出其中的異常樣本。
關(guān)于如何選擇異常檢測(cè)方法,可參考該鏈接了解更多相關(guān)函數(shù)和適用條件:Decision Models for Fault Detection and Diagnosis [4]
簡(jiǎn)單的一維數(shù)據(jù)異常檢測(cè)問題
針對(duì)一維數(shù)據(jù)的異常值檢測(cè),處理方法有以下幾種:
是否超出歷史數(shù)據(jù)的最大值/最小值
3σ 原則:如果數(shù)據(jù)符合正態(tài)分布,可將 ±3σ 作為極限誤差,將落在 μ±3σ 以外樣本作為離群值
可以通過箱線圖分析/四分位數(shù)檢驗(yàn)、Grubbs 等方法,進(jìn)行檢測(cè)。
例如,針對(duì)一組隨機(jī)生成數(shù),使用 boxchart 函數(shù)繪制箱線圖,可以簡(jiǎn)單有效地可視化離群值,默認(rèn)情況下,boxchart使用 'o'符號(hào)顯示每個(gè)離群值。
% 創(chuàng)建一個(gè)一維的隨機(jī)數(shù)向量 data = randn(1,1000); boxchart(data,"DisplayName","random data") legend % 選取其中一個(gè)離群值 ax = gca; chart = ax.Children(1); datatip(chart,"1",3.425);

或者使用實(shí)時(shí)任務(wù)“清除離群值”,選擇合適的檢測(cè)方法和清理方法,并對(duì)數(shù)據(jù)分布和離群值進(jìn)行可視化和處理:
對(duì)于多變量(特征)數(shù)據(jù)集,特征之間可能存在復(fù)雜和高度非線性的相關(guān)性,上述離群值剔除的方法將不再適用。
高維數(shù)據(jù)的異常檢測(cè)
接下來,通過一個(gè)基于工業(yè)設(shè)備振動(dòng)信號(hào)的預(yù)測(cè)性維護(hù)示例,介紹如何著手處理高維數(shù)據(jù)的異常檢測(cè)問題,在該例中,原始數(shù)據(jù)為使用加速度傳感器采集的 x/y/z 三個(gè)通道的振動(dòng)信號(hào)。在重要工業(yè)設(shè)備的實(shí)際運(yùn)營(yíng)過程中,使用者往往采取定期預(yù)防性維護(hù)的策略,以避免意外停機(jī)造成的風(fēng)險(xiǎn)和經(jīng)濟(jì)損失,而設(shè)備運(yùn)行一段時(shí)間,可能存在一定的零部件磨損和老化問題,這也是導(dǎo)致異常的部分潛在原因,因此樣本標(biāo)簽分為兩類:“維護(hù)前”(before)和“維護(hù)后”(after)。
振動(dòng)信號(hào)是典型的時(shí)間序列數(shù)據(jù),在進(jìn)行處理時(shí),常用的方法之一是,按設(shè)定的時(shí)間窗口,對(duì)信號(hào)進(jìn)行時(shí)域的統(tǒng)計(jì)特征提取或頻域特征提取,從而轉(zhuǎn)換成以下結(jié)構(gòu)化數(shù)據(jù)形式:
load("FeatureEntire.mat") head(featureAll)

關(guān)于如何進(jìn)行特征提取,可在命令行窗口運(yùn)行以下指令,打開對(duì)應(yīng)參考文檔查看:
>> openExample('predmaint_deeplearning/AnomalyDetectionUsing3axisVibrationDataExample')
將數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集:
rng(0) idx = cvpartition(featureAll.label, 'holdout', 0.1); featureTrain = featureAll(idx.training, :); featureTest = featureAll(idx.test, :);
將測(cè)試集部分的標(biāo)簽進(jìn)行替換,將“維護(hù)前”(before)定義為“異常”(Anomaly),“維護(hù)后”(after)定義為“正?!保?strong>Normal):
trueAnomaliesTest = featureTest.label; trueAnomaliesTest = renamecats(trueAnomaliesTest,["After","Before"], ["Normal","Anomaly"]); featureTestNoLabels = featureTest(:, 2:end);
將訓(xùn)練集中“維護(hù)后”(after)的數(shù)據(jù)樣本篩選出來,作為后續(xù)異常檢測(cè)模型的訓(xùn)練樣本:
featureNormal = featureTrain(featureTrain.label=='After', :); feat = featureNormal{:,2:end}; [NumSamples,Dim] = size(feat)
NumSamples=10282
Dim=12
這個(gè)數(shù)據(jù)集一共有 12 個(gè)維度的特征和 10282 條樣本。
常用的高維數(shù)據(jù)可視化方法
為了方便理解數(shù)據(jù),可采用以下方法,在低維空間內(nèi),對(duì)高維數(shù)據(jù)進(jìn)行可視化:
1. 通過 plotmatrix 函數(shù),隨機(jī)抽取 3 個(gè)特征,將任意兩個(gè)特征作為橫縱坐標(biāo):
plotmatrix(feat(:,randi(size(feat,2),1,3))) title('原始特征')
2. 使用 fsulaplacian 函數(shù),利用 LaplacianScore 算法,選取最重要 2 個(gè)特征(第 9 和第 10 個(gè)特征)后,繪制其二維平面散點(diǎn)圖,觀察數(shù)據(jù)中是否存在某些特定的聚集現(xiàn)象。
idx = fsulaplacian(feat); idx(1),idx(2)
ans=9
ans=10
scatter(feat(:,idx(1)),feat(:,idx(2)),4,'filled') title('基于Laplacian Score選擇后的特征')
3. 僅選取其中最重要的特征,可通過 tSNE(t-Distributed Stochastic Neighbor Embedding)對(duì)數(shù)據(jù)進(jìn)行降維:
rng('default') X=tsne(feat,Standardize=true,Perplexity=100,Exaggeration=20); scatter(X(:,1),X(:,2),4,'filled') title('使用tSNE降維 - 二維') X3=tsne(feat,Standardize=true,Perplexity=100,Exaggeration=20,NumDimensions=3); scatter3(X3(:,1),X3(:,2),X3(:,3),4,'filled') title('使用tSNE降維 - 三維')

基于 tSNE 進(jìn)行數(shù)據(jù)降維的過程中,將融合多個(gè)特征得到新的基向量,再將原始數(shù)據(jù)投射到對(duì)應(yīng)基向量的低維空間進(jìn)行可視化,在第二部分中,我們將利用這個(gè)方法查看訓(xùn)練樣本中的異常情況。
有監(jiān)督異常檢測(cè)
參考文檔頁面:Model-Specific Anomaly Detection[5]
Statistics and Machine Learning Toolbox 提供了基于模型的異常檢測(cè)算法,如果已將訓(xùn)練數(shù)據(jù)標(biāo)注為正常和異常,可以訓(xùn)練二類分類模型,并使用 resubPredict 和 predict 對(duì)象函數(shù)分別檢測(cè)訓(xùn)練數(shù)據(jù)和新數(shù)據(jù)中的異常。當(dāng)對(duì)設(shè)備的全生命周期中的不同狀態(tài),例如健康、老化、異常和壽命終末期有足夠了解和相關(guān)數(shù)據(jù)標(biāo)簽時(shí),可考慮數(shù)據(jù)擬合回歸模型,或構(gòu)建聚類模型,以區(qū)分不同狀態(tài)數(shù)據(jù)。針對(duì)上述機(jī)器學(xué)習(xí)模型,以下對(duì)象函數(shù)常用于檢測(cè)數(shù)據(jù)中的異常:
相似度矩陣 — 使用 outlierMeasure[6]函數(shù)計(jì)算隨機(jī)森林 (CompactTreeBagger) 中,樣本和其他觀測(cè)點(diǎn)之間相似度平方值的平均值;
馬氏距離 — 使用mahal[7] 函數(shù),適用于判別分析分類模型 (ClassificationDiscriminant) 和高斯混合模型 (gmdistribution)
無條件概率密度 —使用 logp[8],適用于判別分析分類模型 (ClassificationDiscriminant) 和樸素貝葉斯分類模型 (ClassificationNaiveBayes),包括對(duì)應(yīng)的增量學(xué)習(xí)模型 (incrementalClassificationNaiveBayes)
此外,利用 DeepLearningToolbox構(gòu)建深度神經(jīng)網(wǎng)絡(luò)進(jìn)行異常檢測(cè)也是目前該領(lǐng)域的研究熱點(diǎn)之一。
在光學(xué)檢測(cè)領(lǐng)域,如圖 2(a) 所示,需要檢測(cè)圖像數(shù)據(jù)中異常,可構(gòu)建基于卷積神經(jīng)網(wǎng)絡(luò)的圖像分類模型,并結(jié)合深度學(xué)習(xí)模型解析的方法,例如類激活映射,對(duì)異常區(qū)域進(jìn)行可視化,具體示例可參考:Detect Image Anomalies Using Explainable One-Class Classification Neural Network。[9]
在設(shè)備預(yù)測(cè)性維護(hù)應(yīng)用中,針對(duì)傳感器信號(hào)中的異常檢測(cè),多用生成式模型,學(xué)習(xí)正常數(shù)據(jù)的特征,并嘗試重建數(shù)據(jù),再利用重建誤差作為判定是否異常的指標(biāo),如圖 2(b) 所示,例如自編碼器AutoEncoder(Time Series Anomaly Detection Using Deep Learning )[10] 和 Graph Deviation Network (Multivariate Time Series Anomaly Detection Using Graph Neural Network) [11]進(jìn)行多元時(shí)序異常檢測(cè)。
由于篇幅有限,在此先不詳細(xì)展開介紹上述方法,如感興趣,可參考對(duì)應(yīng)文檔鏈接。在下一篇中,我們將討論在沒有標(biāo)簽的條件下,或不確定異常類型和成因的場(chǎng)景中,如何針對(duì)上述數(shù)據(jù)集,利用統(tǒng)計(jì)和機(jī)器學(xué)習(xí)方法進(jìn)行無監(jiān)督異常檢測(cè),歡迎繼續(xù)關(guān)注后續(xù)內(nèi)容。
-
matlab
+關(guān)注
關(guān)注
187文章
2988瀏覽量
232379 -
異常檢測(cè)
+關(guān)注
關(guān)注
1文章
43瀏覽量
9777 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8467瀏覽量
133652
原文標(biāo)題:機(jī)器學(xué)習(xí)應(yīng)用 | 使用 MATLAB 進(jìn)行異常檢測(cè)(上)
文章出處:【微信號(hào):MATLAB,微信公眾號(hào):MATLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何使用部分異常觀測(cè)數(shù)據(jù)進(jìn)行異常檢測(cè)
如何利用MATLAB和Simulink去進(jìn)行S模式檢測(cè)和解碼?
密度偏倚抽樣的局部距離異常檢測(cè)算法
AIS數(shù)據(jù)在船舶異常行為檢測(cè)
云模型的網(wǎng)絡(luò)異常流量檢測(cè)

如何進(jìn)行雙側(cè)空間窗的異常檢測(cè)詳細(xì)方法概述

什么是異常檢測(cè)_異常檢測(cè)的實(shí)用方法
基于車輛軌跡特征的視頻異常事件檢測(cè)算法
如何選擇異常檢測(cè)算法
使用MATLAB進(jìn)行異常檢測(cè)(下)
采用基于時(shí)間序列的日志異常檢測(cè)算法應(yīng)用
智能電網(wǎng)時(shí)間序列異常檢測(cè):a survey

哈工大提出Myriad:利用視覺專家進(jìn)行工業(yè)異常檢測(cè)的大型多模態(tài)模型

評(píng)論