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