什么是異常檢測?
異常檢測是識別與預(yù)期行為不同的事件或模式的過程。異常檢測范圍廣泛,從簡單的離群值檢測,到復(fù)雜的機(jī)器學(xué)習(xí)算法,這些算法經(jīng)過訓(xùn)練可以發(fā)現(xiàn)數(shù)百個信號中隱藏的模式。
工程師和數(shù)據(jù)科學(xué)家使用異常檢測來進(jìn)行以下識別:
機(jī)械故障,用于預(yù)測性維護(hù)
制造生產(chǎn)線的缺陷
放射學(xué)影像中的惡性腫瘤
金融交易中的欺詐
零售業(yè)的客戶流失
視頻監(jiān)控錄像中的異常動作
在 MATLAB 中,有很多方法均可用來設(shè)計異常檢測算法。哪種異常檢測方法最適用于給定應(yīng)用,將取決于可用異常數(shù)據(jù)量,以及您是否可將異常數(shù)據(jù)與正常數(shù)據(jù)區(qū)分開來。
異常檢測的第一步是檢查現(xiàn)有的數(shù)據(jù)。不妨考慮以下問題:
您能在原始數(shù)據(jù)中發(fā)現(xiàn)異常嗎?
有時候,您只需查看數(shù)據(jù)即可執(zhí)行異常檢測。例如,下面圖 1 中的信號是從風(fēng)扇收集的,您可以很容易地看到表示風(fēng)扇行為異常的信號突變。如果您能夠通過肉眼檢測異常,則也許可以使用簡單的算法(例如 findchangepts 或 controlchart)進(jìn)行異常檢測。
圖 1:MATLAB 冷卻風(fēng)扇數(shù)據(jù)圖,異常情況一目了然。
您能在衍生特征中發(fā)現(xiàn)異常嗎?
通常很難從原始數(shù)據(jù)中直觀地檢測異常。在下面的信號中,很難確定哪個時域信號有異常。然而,如果創(chuàng)建功率譜以在頻域中查看數(shù)據(jù),則峰值的頻率和幅度差異可以清楚地表明兩個信號截然不同。在這種情況下,您可以將這些峰值用作基于有監(jiān)督學(xué)習(xí)方法的異常檢測算法的特征輸入。
圖 2:盡管原始時序信號(左圖)中的異常看上去不明顯,但在頻域中查看數(shù)據(jù)(右圖,使用 MATLAB 中的周期圖)時,可以看到峰值頻率的明顯差異。
您能用統(tǒng)計學(xué)方法區(qū)分正常特征和異常特征嗎?
在單個信號中,異常不一定那么明顯。當(dāng)今的復(fù)雜機(jī)器可能有數(shù)百個傳感器。有時,只有同時考慮多個傳感器時,異常才會變得明顯。標(biāo)注了數(shù)據(jù)后,您可以檢查時域和頻域特征的統(tǒng)計分布,如圖 3 所示。您還可以執(zhí)行特征變換和排名,以識別最能區(qū)分兩個組的特征。然后,您可以使用這些特征,通過有監(jiān)督學(xué)習(xí)方法基于標(biāo)注的數(shù)據(jù)訓(xùn)練異常檢測算法。
圖 3:左側(cè)的 MATLAB 圖分別用藍(lán)色和紅色表示成對的正常數(shù)據(jù)和異常數(shù)據(jù)。右側(cè)是來自診斷特征設(shè)計器的相應(yīng)特征直方圖,用于識別哪些特征可明確區(qū)分正常數(shù)據(jù)和異常數(shù)據(jù),以供有監(jiān)督異常檢測算法使用。
如果您不知道異常的具體表現(xiàn)該怎么辦?
機(jī)械故障代價高昂,因此,操作人員通常希望通過保守的維護(hù)計劃來防患未然。這可能意味著異常很少見,使得設(shè)計異常檢測算法變得很棘手。
有幾種設(shè)計異常檢測算法的方法只需很少的異常數(shù)據(jù),或者根本不需要異常數(shù)據(jù)。這些“僅正常”方法只基于正常數(shù)據(jù)訓(xùn)練算法,并將正常數(shù)據(jù)之外的數(shù)據(jù)識別為異常數(shù)據(jù)。
使用 MATLAB,您可以對數(shù)據(jù)應(yīng)用以下“僅正常”異常檢測方法:
閾值化。
閾值化在數(shù)據(jù)超過統(tǒng)計指標(biāo)的閾值時識別異常。例如,時序數(shù)據(jù)中最近時段內(nèi)的標(biāo)準(zhǔn)差,對信號使用控制圖,使用變化點(diǎn)檢測查找信號中的突變,或獲得數(shù)據(jù)分布的穩(wěn)健估計值,并將分布邊緣的樣本識別為異常。基于統(tǒng)計指標(biāo)的閾值化是個不錯的方法,但與機(jī)器學(xué)習(xí)方法相比,這種方法應(yīng)用于多元數(shù)據(jù)比較困難,而且在異常檢測方面也不夠穩(wěn)健。對于離群值具有穩(wěn)健性的統(tǒng)計估計法將生成更好的結(jié)果,例如穩(wěn)健協(xié)方差。
單類支持向量機(jī)。
單類支持向量機(jī)用于識別最大化類間距離的分離超平面。僅訓(xùn)練一個類會生成可視為正常的數(shù)據(jù)的模型。該模型使您無需任何可用于訓(xùn)練的標(biāo)注異常即可檢測異常。這種方法和其他基于距離的方法需要數(shù)值特征作為輸入,而且不適用于高維數(shù)據(jù)。
孤立森林。
孤立森林可用于構(gòu)建將每個觀測值隔離到一個葉節(jié)點(diǎn)中的樹。異常分?jǐn)?shù)作為樣本的平均深度進(jìn)行計算:異常樣本需要的決策數(shù)比正常樣本的要少。這種方法支持?jǐn)?shù)值特征和分類特征組合,并且適用于高維數(shù)據(jù)。
自編碼器。
自編碼器是基于正常數(shù)據(jù)訓(xùn)練且嘗試重構(gòu)原始輸入的神經(jīng)網(wǎng)絡(luò)。經(jīng)過訓(xùn)練的自編碼器將會準(zhǔn)確地重構(gòu)正常輸入。如果輸入與其重構(gòu)之間差異巨大,則可能表明存在異常。自編碼器可用于信號和圖像數(shù)據(jù)。
圖 4:自編碼器經(jīng)過訓(xùn)練,可以復(fù)制輸入。利用輸入與其重構(gòu)之間的差異,可以對信號或圖像數(shù)據(jù)進(jìn)行異常檢測。
當(dāng)您的數(shù)據(jù)中存在異常但無法進(jìn)行標(biāo)注時,您還可以嘗試使用無監(jiān)督聚類方法進(jìn)行異常檢測。有時,您可以將聚類與正常數(shù)據(jù)和異常數(shù)據(jù)相關(guān)聯(lián),但除非數(shù)據(jù)集是均衡的(包含許多同類型的異常),否則使用“僅正常”方法更有可能獲得有用的結(jié)果。
在應(yīng)用異常檢測算法之前,通常需要從原始數(shù)據(jù)中提取特征。
MATLAB 同時支持以手動和自動方法從信號、圖像和文本數(shù)據(jù)中提取特征。Predictive Maintenance Toolbox 中的診斷特征設(shè)計器可以幫助您從多種類型的信號中提取特征。
總結(jié)
異常檢測有助于識別離群值、與正常值的偏差和意外行為
如果您有足夠的標(biāo)注數(shù)據(jù)(包括異常),則可使用有監(jiān)督學(xué)習(xí)方法進(jìn)行異常檢測
如果您的數(shù)據(jù)大部分都是正常數(shù)據(jù),則應(yīng)用某種專門的“僅正常”異常檢測方法即可
上手示例:
使用 MATLAB 檢測圖像中的對象缺陷
要構(gòu)建基于圖像的異常檢測算法,您可以執(zhí)行以下操作:
1) 將圖像饋送入預(yù)訓(xùn)練的 AlexNet 卷積神經(jīng)網(wǎng)絡(luò);
2) 使用第一層后的網(wǎng)絡(luò)激活值作為特征,然后
3) 使用 fitcsvm 訓(xùn)練單類支持向量機(jī)。單類支持向量機(jī)基于正常圖像訓(xùn)練。負(fù)的分類分?jǐn)?shù)表示異常。
審核編輯:劉清
-
傳感器
+關(guān)注
關(guān)注
2550文章
51046瀏覽量
753132 -
matlab
+關(guān)注
關(guān)注
185文章
2974瀏覽量
230405 -
編碼器
+關(guān)注
關(guān)注
45文章
3639瀏覽量
134439 -
向量機(jī)
+關(guān)注
關(guān)注
0文章
166瀏覽量
20874 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8408瀏覽量
132573
原文標(biāo)題:什么是異常檢測?使用異常檢測識別意外事件以及偏離正常行為的情況
文章出處:【微信號:MATLAB,微信公眾號:MATLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論