0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用MATLAB進(jìn)行異常檢測(cè)(上)

MATLAB ? 來源:MATLAB ? 作者:MATLAB ? 2022-11-17 10:32 ? 次閱讀

異常檢測(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è)模型。

b64670da-659f-11ed-8abf-dac502259ad0.png

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);
b65edfc6-659f-11ed-8abf-dac502259ad0.png

或者使用實(shí)時(shí)任務(wù)“清除離群值”,選擇合適的檢測(cè)方法和清理方法,并對(duì)數(shù)據(jù)分布和離群值進(jìn)行可視化和處理:

b670f85a-659f-11ed-8abf-dac502259ad0.png

對(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)
b690bd7a-659f-11ed-8abf-dac502259ad0.png

關(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降維 - 三維')
b6a5df48-659f-11ed-8abf-dac502259ad0.png

基于 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è)。

b6cebf9e-659f-11ed-8abf-dac502259ad0.png

由于篇幅有限,在此先不詳細(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)容。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • matlab
    +關(guān)注

    關(guān)注

    187

    文章

    2988

    瀏覽量

    232379
  • 異常檢測(cè)
    +關(guān)注

    關(guān)注

    1

    文章

    43

    瀏覽量

    9777
  • 機(jī)器學(xué)習(xí)

    關(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)注明出處。

收藏 1人收藏

    評(píng)論

    相關(guān)推薦

    如何使用部分異常觀測(cè)數(shù)據(jù)進(jìn)行異常檢測(cè)

    使用部分異常觀測(cè)數(shù)據(jù)進(jìn)行異常檢測(cè)(翻譯自 Anomaly Detection with Partially Observed Anomalies)
    發(fā)表于 04-26 14:37

    如何利用MATLAB和Simulink進(jìn)行S模式檢測(cè)和解碼?

    如何利用MATLAB和Simulink進(jìn)行S模式檢測(cè)和解碼?
    發(fā)表于 05-18 07:17

    如何利用MATLAB和Simulink去進(jìn)行S模式檢測(cè)和解碼?

    如何利用MATLAB和Simulink去進(jìn)行S模式檢測(cè)和解碼?
    發(fā)表于 05-20 06:31

    密度偏倚抽樣的局部距離異常檢測(cè)算法

    異常檢測(cè)是數(shù)據(jù)挖掘的重要研究領(lǐng)域,當(dāng)前基于距離或者最近鄰概念的異常數(shù)據(jù)檢測(cè)方法,在進(jìn)行海量高維數(shù)據(jù)異常
    發(fā)表于 12-25 14:11 ?0次下載

    AIS數(shù)據(jù)在船舶異常行為檢測(cè)

    規(guī)律和進(jìn)行船舶異常行為檢測(cè)提供了新的途徑。本文對(duì)近年來AIS數(shù)據(jù)在船舶異常行為檢測(cè)方面的研究進(jìn)展和所取得的成果
    發(fā)表于 01-08 15:11 ?1次下載

    云模型的網(wǎng)絡(luò)異常流量檢測(cè)

    異常流量檢測(cè)方法,實(shí)現(xiàn)異常檢測(cè)定性與定量的轉(zhuǎn)換。在已有流量樣本的基礎(chǔ)生成異常態(tài)勢(shì)的標(biāo)尺云,針
    發(fā)表于 03-06 16:44 ?1次下載
    云模型的網(wǎng)絡(luò)<b class='flag-5'>異常</b>流量<b class='flag-5'>檢測(cè)</b>

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

    針對(duì)現(xiàn)有異常檢測(cè)方法難以解釋異常屬性的問題,本文提出基于雙側(cè)空間窗的異常檢測(cè)方法。首先,在前景檢測(cè)
    發(fā)表于 01-11 15:17 ?3次下載
    如何<b class='flag-5'>進(jìn)行</b>雙側(cè)空間窗的<b class='flag-5'>異常</b><b class='flag-5'>檢測(cè)</b>詳細(xì)方法概述

    什么是異常檢測(cè)_異常檢測(cè)的實(shí)用方法

    異常檢測(cè)是一個(gè)發(fā)現(xiàn)“少數(shù)派”的過程,由于它們與大多數(shù)數(shù)據(jù)不一樣而引起我們的注意。在幾個(gè)典型場(chǎng)景中,異常數(shù)據(jù)能為我們關(guān)聯(lián)到一些潛在的問題,如銀行欺詐行為、藥品問題、結(jié)構(gòu)缺陷、設(shè)備故障等。這些關(guān)聯(lián)關(guān)系能幫助我們挑出哪些點(diǎn)可能是
    的頭像 發(fā)表于 06-29 09:25 ?1.9w次閱讀

    基于車輛軌跡特征的視頻異常事件檢測(cè)算法

    檢測(cè)算法,對(duì)視頻中的車輛目標(biāo)進(jìn)行提取,提出了結(jié)合運(yùn)動(dòng)特征和表觀特征的多目標(biāo)追蹤算法;在此基礎(chǔ),又提出了一種基于車輛軌跡特征的異常事件檢測(cè)
    發(fā)表于 05-13 14:45 ?5次下載

    使用MATLAB進(jìn)行線性編程

    使用MATLAB進(jìn)行線性編程方法。
    發(fā)表于 05-27 09:29 ?0次下載

    如何選擇異常檢測(cè)算法

    異常檢測(cè)(也稱為離群點(diǎn)檢測(cè))是檢測(cè)異常實(shí)例的任務(wù),異常實(shí)例與常規(guī)實(shí)例非常不同。這些實(shí)例稱為
    的頭像 發(fā)表于 10-25 09:15 ?1812次閱讀

    使用MATLAB進(jìn)行異常檢測(cè)(下)

    在使用 MATLAB 進(jìn)行異常檢測(cè))中,我們探討了什么是異常值,簡(jiǎn)單的一維數(shù)據(jù)
    的頭像 發(fā)表于 11-24 10:46 ?2499次閱讀

    采用基于時(shí)間序列的日志異常檢測(cè)算法應(yīng)用

    新增、時(shí)段新增、時(shí)段突增、時(shí)段突降等多種異常。 然而,在實(shí)際中,日志指標(biāo)時(shí)序數(shù)據(jù)并不都具有周期性,或具有其他分布特征,因此僅根據(jù)周期性進(jìn)行異常檢測(cè)會(huì)導(dǎo)致誤報(bào)率高、準(zhǔn)確率低等問題。因此如
    的頭像 發(fā)表于 12-09 10:47 ?1860次閱讀

    智能電網(wǎng)時(shí)間序列異常檢測(cè):a survey

    隨著可再生能源發(fā)電一體化的快速增加和各種電器的廣泛采用,電網(wǎng)面臨著越來越多的挑戰(zhàn)。一個(gè)突出的挑戰(zhàn)是對(duì)電網(wǎng)內(nèi)不同類型的異常行為進(jìn)行有效的異常檢測(cè)。這些
    發(fā)表于 04-04 16:13 ?0次下載
    智能電網(wǎng)時(shí)間序列<b class='flag-5'>異常</b><b class='flag-5'>檢測(cè)</b>:a survey

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

    最近,大型多模態(tài)(即視覺和語言)模型(LMM)在圖像描述、視覺理解、視覺推理等多種視覺任務(wù)上表現(xiàn)出了卓越的感知能力,使其成為更易于理解的異常檢測(cè)的有競(jìng)爭(zhēng)力的潛在選擇。然而,現(xiàn)有的通用 LMM 中缺乏有關(guān)異常
    的頭像 發(fā)表于 11-21 16:08 ?2469次閱讀
    哈工大提出Myriad:利用視覺專家<b class='flag-5'>進(jìn)行</b>工業(yè)<b class='flag-5'>異常</b><b class='flag-5'>檢測(cè)</b>的大型多模態(tài)模型

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品