衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用MATLAB進行異常檢測(上)

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

異常檢測任務,指的是檢測偏離期望行為的事件或模式,可以是簡單地檢測數值型數據中,是否存在遠超出正常取值范圍的離群值,也可以是借助相對復雜的機器學習算法識別數據中隱藏的異常模式。

在不同行業中,異常檢測的典型應用場景包括:

根據設備傳感器采集的信號,識別零部件故障類型

自動檢測生產線中產品加工異常,降低不良率或輔助質檢人員提高工作效率

監控金融交易中是否存在詐騙行為

根據醫學影像數據,識別癌組織及其邊界

針對異常數據的不同,以及是否可以人為判斷異常行為或故障模式,實現方式各有千秋。本文分為上下兩篇,在第一部分,將梳理異常檢測問題的一般處理思路,第二部分則結合示例重點討論基于統計和機器學習的無監督異常檢測方法。

什么是異常值

異常值包括離群值和奇異值,以下是相關定義:

離群值(outlier):偏離正常范圍的數據,可能是由傳感器故障、人為錄入錯誤或異常事件導致,在構建機器學習或統計模型前,如果不對離群值做任何處理,可能會導致模型出現偏差。

奇異值(novelty):數據集未受到異常值污染,但是存在某些區別于原數據分布的觀測數據。

首先,了解你的數據

在一頭扎進算法或模型開發之前,首先需要做的是仔細查看手中的數據,并考慮以下問題:

01原始數據中的異常是否是顯而易見的?

機電設備的停機、堵轉等異常現象,從信號波形就可以直接判斷異常原因和發生時間,這類問題比較簡單,常用突變點檢測函數findchangepts或過程控制SPC (Statistical Process Control) control chart 進行處理。例如圖1(a)中超出上下置信區間的數據點即為異常點,具體可查看示例:Find abrupt changes in signal[1] ,Control Charts[2] ,統計過程控制[3]

02從原始數據中是否可以提取出能夠有效區分異常的特征?

旋轉機械設備的正常和異常數據,從時域信號的波形看上去往往相差無幾,但是經過頻域變換后,不同頻率分量的幅值,可能有較大的不同,這種情況下,可根據頻域特征直接檢測出異常,如圖 1(b) 中標記的異常部分。

03從統計分析的角度,是否可以分區異常和正常數據?

Predictive Maintenance Toolbox內置的Diagnostic Feature Designer App,可以幫助我們提取時域和頻域特征,并分析其統計分布,例如,在工業設備應用中,利用三軸加速度傳感器,分別采集設備維護前(藍色)和維護后(紅色)的振動信號,如圖 1(c) 所示,對這兩類信號(每類多個樣本)提取標準差、斜度等常用統計特征,再分析兩類信號的特征直方圖,見圖 1(d),不難看出,二者的各個特征的統計分布均存在一定差異。此外,在 Diagnostic Feature Designer App 中,還可以使用一系列特征排序的方法,例如在有標簽或無標簽的條件下,分別選用 One-Way ANOVA Laplace Score 分析哪些特征可以更好地輔助判斷,并利用這些特征作訓練基于機器學習的異常檢測模型。

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

04如果無法確定數據中是否存在特定的異常模式,應該如何處理?

在全天候運行的工業設備中,故障停機意味著產能的降低,因此設備運營階段往往采取預防性維護的策略,這意味著異常數據稀缺,并且采集到數據全部或大多是正常數據,異常數據的占比往往較低(獲取難度大風險高,或是無法描述異常模式),這也是為什么異常檢測任務多被處理為無監督學習問題,僅僅通過正樣本(正常數據)訓練算法實現任務,或根據數據的隱藏特性篩選出其中的異常樣本。

關于如何選擇異常檢測方法,可參考該鏈接了解更多相關函數和適用條件:Decision Models for Fault Detection and Diagnosis [4]

簡單的一維數據異常檢測問題

針對一維數據的異常值檢測,處理方法有以下幾種

是否超出歷史數據的最大值/最小值

3σ 原則:如果數據符合正態分布,可將 ±3σ 作為極限誤差,將落在 μ±3σ 以外樣本作為離群值

可以通過箱線圖分析/四分位數檢驗、Grubbs 等方法,進行檢測。

例如,針對一組隨機生成數,使用 boxchart 函數繪制箱線圖,可以簡單有效地可視化離群值,默認情況下,boxchart使用 'o'符號顯示每個離群值。

% 創建一個一維的隨機數向量
data = randn(1,1000);
boxchart(data,"DisplayName","random data")
legend
% 選取其中一個離群值
ax = gca;
chart = ax.Children(1);
datatip(chart,"1",3.425);
b65edfc6-659f-11ed-8abf-dac502259ad0.png

或者使用實時任務“清除離群值”,選擇合適的檢測方法和清理方法,并對數據分布和離群值進行可視化和處理:

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

對于多變量(特征)數據集,特征之間可能存在復雜和高度非線性的相關性,上述離群值剔除的方法將不再適用。

高維數據的異常檢測

接下來,通過一個基于工業設備振動信號的預測性維護示例,介紹如何著手處理高維數據的異常檢測問題,在該例中,原始數據為使用加速度傳感器采集的 x/y/z 三個通道的振動信號。在重要工業設備的實際運營過程中,使用者往往采取定期預防性維護的策略,以避免意外停機造成的風險和經濟損失,而設備運行一段時間,可能存在一定的零部件磨損和老化問題,這也是導致異常的部分潛在原因,因此樣本標簽分為兩類:“維護前”(before)和“維護后”(after)。

振動信號是典型的時間序列數據,在進行處理時,常用的方法之一是,按設定的時間窗口,對信號進行時域的統計特征提取或頻域特征提取,從而轉換成以下結構化數據形式:

load("FeatureEntire.mat")
head(featureAll)
b690bd7a-659f-11ed-8abf-dac502259ad0.png

關于如何進行特征提取,可在命令行窗口運行以下指令,打開對應參考文檔查看:

>> openExample('predmaint_deeplearning/AnomalyDetectionUsing3axisVibrationDataExample')

將數據集劃分為訓練集和測試集:

rng(0) 
idx = cvpartition(featureAll.label, 'holdout', 0.1);
featureTrain = featureAll(idx.training, :);
featureTest = featureAll(idx.test, :);

將測試集部分的標簽進行替換,將“維護前”(before)定義為“異常”(Anomaly),“維護后”(after)定義為“正常”(Normal):

trueAnomaliesTest = featureTest.label;
trueAnomaliesTest = renamecats(trueAnomaliesTest,["After","Before"], ["Normal","Anomaly"]);
featureTestNoLabels = featureTest(:, 2:end);

將訓練集中“維護后”(after)的數據樣本篩選出來,作為后續異常檢測模型的訓練樣本:

featureNormal = featureTrain(featureTrain.label=='After', :);
feat = featureNormal{:,2:end};
[NumSamples,Dim] = size(feat)

NumSamples=10282

Dim=12

這個數據集一共有 12 個維度的特征和 10282 條樣本。

常用的高維數據可視化方法

為了方便理解數據,可采用以下方法,在低維空間內,對高維數據進行可視化:

1. 通過 plotmatrix 函數,隨機抽取 3 個特征,將任意兩個特征作為橫縱坐標:

plotmatrix(feat(:,randi(size(feat,2),1,3)))
title('原始特征')

2. 使用 fsulaplacian 函數,利用 LaplacianScore 算法,選取最重要 2 個特征(第 9 和第 10 個特征)后,繪制其二維平面散點圖,觀察數據中是否存在某些特定的聚集現象。

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)對數據進行降維:

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 進行數據降維的過程中,將融合多個特征得到新的基向量,再將原始數據投射到對應基向量的低維空間進行可視化,在第二部分中,我們將利用這個方法查看訓練樣本中的異常情況。

有監督異常檢測

參考文檔頁面:Model-Specific Anomaly Detection[5]

Statistics and Machine Learning Toolbox 提供了基于模型的異常檢測算法,如果已將訓練數據標注為正常和異常,可以訓練二類分類模型,并使用 resubPredict 和 predict 對象函數分別檢測訓練數據和新數據中的異常。當對設備的全生命周期中的不同狀態,例如健康、老化、異常和壽命終末期有足夠了解和相關數據標簽時,可考慮數據擬合回歸模型,或構建聚類模型,以區分不同狀態數據。針對上述機器學習模型,以下對象函數常用于檢測數據中的異常:

相似度矩陣 — 使用 outlierMeasure[6]函數計算隨機森林 (CompactTreeBagger) 中,樣本和其他觀測點之間相似度平方值的平均值;

馬氏距離 — 使用mahal[7] 函數,適用于判別分析分類模型 (ClassificationDiscriminant) 和高斯混合模型 (gmdistribution)

無條件概率密度 —使用 logp[8],適用于判別分析分類模型 (ClassificationDiscriminant) 和樸素貝葉斯分類模型 (ClassificationNaiveBayes),包括對應的增量學習模型 (incrementalClassificationNaiveBayes)

此外,利用 DeepLearningToolbox構建深度神經網絡進行異常檢測也是目前該領域的研究熱點之一。

光學檢測領域,如圖 2(a) 所示,需要檢測圖像數據中異常,可構建基于卷積神經網絡的圖像分類模型,并結合深度學習模型解析的方法,例如類激活映射,對異常區域進行可視化,具體示例可參考:Detect Image Anomalies Using Explainable One-Class Classification Neural Network。[9]

在設備預測性維護應用中,針對傳感器信號中的異常檢測,多用生成式模型,學習正常數據的特征,并嘗試重建數據,再利用重建誤差作為判定是否異常的指標,如圖 2(b) 所示,例如自編碼器AutoEncoder(Time Series Anomaly Detection Using Deep Learning )[10] 和 Graph Deviation Network (Multivariate Time Series Anomaly Detection Using Graph Neural Network) [11]進行多元時序異常檢測。

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

由于篇幅有限,在此先不詳細展開介紹上述方法,如感興趣,可參考對應文檔鏈接。在下一篇中,我們將討論在沒有標簽的條件下,或不確定異常類型和成因的場景中,如何針對上述數據集,利用統計和機器學習方法進行無監督異常檢測,歡迎繼續關注后續內容。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    185

    文章

    2980

    瀏覽量

    231007
  • 異常檢測
    +關注

    關注

    1

    文章

    42

    瀏覽量

    9754
  • 機器學習
    +關注

    關注

    66

    文章

    8438

    瀏覽量

    133084

原文標題:機器學習應用 | 使用 MATLAB 進行異常檢測(上)

文章出處:【微信號:MATLAB,微信公眾號:MATLAB】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何使用部分異常觀測數據進行異常檢測

    使用部分異常觀測數據進行異常檢測(翻譯自 Anomaly Detection with Partially Observed Anomalies)
    發表于 04-26 14:37

    如何利用MATLAB和Simulink進行S模式檢測和解碼?

    如何利用MATLAB和Simulink進行S模式檢測和解碼?
    發表于 05-18 07:17

    如何利用MATLAB和Simulink去進行S模式檢測和解碼?

    如何利用MATLAB和Simulink去進行S模式檢測和解碼?
    發表于 05-20 06:31

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

    異常檢測是數據挖掘的重要研究領域,當前基于距離或者最近鄰概念的異常數據檢測方法,在進行海量高維數據異常
    發表于 12-25 14:11 ?0次下載

    AIS數據在船舶異常行為檢測

    規律和進行船舶異常行為檢測提供了新的途徑。本文對近年來AIS數據在船舶異常行為檢測方面的研究進展和所取得的成果
    發表于 01-08 15:11 ?1次下載

    云模型的網絡異常流量檢測

    異常流量檢測方法,實現異常檢測定性與定量的轉換。在已有流量樣本的基礎生成異常態勢的標尺云,針
    發表于 03-06 16:44 ?1次下載
    云模型的網絡<b class='flag-5'>異常</b>流量<b class='flag-5'>檢測</b>

    如何進行雙側空間窗的異常檢測詳細方法概述

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

    什么是異常檢測_異常檢測的實用方法

    異常檢測是一個發現“少數派”的過程,由于它們與大多數數據不一樣而引起我們的注意。在幾個典型場景中,異常數據能為我們關聯到一些潛在的問題,如銀行欺詐行為、藥品問題、結構缺陷、設備故障等。這些關聯關系能幫助我們挑出哪些點可能是
    的頭像 發表于 06-29 09:25 ?1.9w次閱讀

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

    檢測算法,對視頻中的車輛目標進行提取,提出了結合運動特征和表觀特征的多目標追蹤算法;在此基礎,又提出了一種基于車輛軌跡特征的異常事件檢測
    發表于 05-13 14:45 ?5次下載

    使用MATLAB進行線性編程

    使用MATLAB進行線性編程方法。
    發表于 05-27 09:29 ?0次下載

    如何選擇異常檢測算法

    異常檢測(也稱為離群點檢測)是檢測異常實例的任務,異常實例與常規實例非常不同。這些實例稱為
    的頭像 發表于 10-25 09:15 ?1737次閱讀

    使用MATLAB進行異常檢測(下)

    在使用 MATLAB 進行異常檢測)中,我們探討了什么是異常值,簡單的一維數據
    的頭像 發表于 11-24 10:46 ?2278次閱讀

    采用基于時間序列的日志異常檢測算法應用

    新增、時段新增、時段突增、時段突降等多種異常。 然而,在實際中,日志指標時序數據并不都具有周期性,或具有其他分布特征,因此僅根據周期性進行異常檢測會導致誤報率高、準確率低等問題。因此如
    的頭像 發表于 12-09 10:47 ?1723次閱讀

    智能電網時間序列異常檢測:a survey

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

    哈工大提出Myriad:利用視覺專家進行工業異常檢測的大型多模態模型

    最近,大型多模態(即視覺和語言)模型(LMM)在圖像描述、視覺理解、視覺推理等多種視覺任務上表現出了卓越的感知能力,使其成為更易于理解的異常檢測的有競爭力的潛在選擇。然而,現有的通用 LMM 中缺乏有關異常
    的頭像 發表于 11-21 16:08 ?2157次閱讀
    哈工大提出Myriad:利用視覺專家<b class='flag-5'>進行</b>工業<b class='flag-5'>異常</b><b class='flag-5'>檢測</b>的大型多模態模型
    大发888官方6222| 任我赢百家乐官网自动投注系统| 百家乐路单资料| 明升网| 噢门百家乐注码技巧| 博彩资讯网| 真博百家乐官网的玩法技巧和规则| 皇冠足球即时比分| 百家乐书| 赌博百家乐官网判断决策| 百家乐赌博技巧论坛| 百家乐官网算点子打法攻略| 江西老虎机遥控器| 免费百家乐官网统计| 星空棋牌大厅下载| 百家乐官网黏土筹码| 澳门百家乐官网代理| 威尼斯人娱乐城客服| 找查百家乐官网玩法技巧| 皇冠现金网娱乐城| 百家乐庄闲出现几率| 平注打百家乐官网的方法| 澳门在线转盘| 百家乐公式与赌法| 谁会玩百家乐官网的玩法技巧和规则 | 励骏会百家乐的玩法技巧和规则| 百家乐官网的路子怎么| 永利博线上娱乐城| 678百家乐博彩赌场娱乐网规则 | bet365怎么样| 二爷百家乐的玩法技巧和规则 | 大发888如何下载| 真钱百家乐官网注册送| 在线玩轮盘| 真人游戏平台| 游戏机百家乐的玩法技巧和规则| 24山在风水学中应用| 百家乐官网书籍| 贵族娱乐城| 威尼斯人娱乐城优惠条件| 百家乐实时赌博|