什么是異常檢測?
異常檢測是一個發(fā)現(xiàn)“少數(shù)派”的過程,由于它們與大多數(shù)數(shù)據(jù)不一樣而引起我們的注意。在幾個典型場景中,異常數(shù)據(jù)能為我們關(guān)聯(lián)到一些潛在的問題,如銀行欺詐行為、藥品問題、結(jié)構(gòu)缺陷、設(shè)備故障等。這些關(guān)聯(lián)關(guān)系能幫助我們挑出哪些點可能是異常的,從商業(yè)角度來看,查出這些事件是非常有價值的。
這樣就引出我們的主要目標(biāo):我們?nèi)绾畏直婷總€點是正常還是異常呢?在一些簡單的場景中,如下圖所示,數(shù)據(jù)可視化就可以給出重要信息。
圖 1:兩個變量的異常
在這個二維數(shù)據(jù)(X 和 Y)的例子中,判斷異常點是非常容易的,只需要觀察數(shù)據(jù)點在二維平面上的分布即可。然而,觀察右圖可以發(fā)現(xiàn),只觀察一個變量是無法看出異常的,只有把變量 X 和變量 Y 結(jié)合起來觀察,才能發(fā)現(xiàn)異常點。當(dāng)我們把數(shù)據(jù)維度從 2 提升到 10-100,這件事情就極其復(fù)雜了,實際場景的異常檢測也是如此。
什么是狀態(tài)監(jiān)控?
無論任何機器,旋轉(zhuǎn)電機(泵、壓氣機、燃?xì)饣蛘羝啓C等)或非旋轉(zhuǎn)機器(熱交換器、分裂蒸餾塔、閥門等),都會最終出現(xiàn)運轉(zhuǎn)異常的情況。出現(xiàn)這種情況時,機器并不一定是徹底壞掉了,可能只是無法以最佳狀態(tài)運轉(zhuǎn),它可能需要進行維修以恢復(fù)完全的運轉(zhuǎn)能力。簡而言之,識別設(shè)備的“健康狀態(tài)”就是狀態(tài)監(jiān)控領(lǐng)域所研究的問題。
在狀態(tài)監(jiān)控中,最常用的方法是觀測機器的每個傳感器,并對其設(shè)置一個最小值和最大值。如果當(dāng)前值在所設(shè)置范圍之內(nèi),說明機器運轉(zhuǎn)正常。如果當(dāng)前值超出范圍,系統(tǒng)會給出預(yù)警信號,提醒機器運轉(zhuǎn)不正常。
對機器硬性施加報警閾值這一過程,會導(dǎo)致系統(tǒng)發(fā)出大量假的預(yù)警信號,即機器運轉(zhuǎn)正常時卻收到了異常報警。同時也存在預(yù)警信號遺漏的問題,即機器運轉(zhuǎn)異常卻沒有收到警示。第一個問題不僅浪費時間精力,也影響機器壽命。第二個問題更為嚴(yán)重,可能導(dǎo)致機器損壞,進而損失大量維修費用和生產(chǎn)損失。
而兩個問題都源于一個原因:設(shè)備的健康程度是一個高維的復(fù)雜問題,不能依賴于某個單獨的指標(biāo)進行判斷(和圖 1 展示的異常檢測問題同理)。我們必須結(jié)合考慮多個檢測值,從而獲得一個更為真實的信號。
主要方法
說到異常檢測,很難把機器學(xué)習(xí)和統(tǒng)計分析全部覆蓋,我會避免在理論知識上過于深入(但會提供一些有詳細(xì)介紹的鏈接)的同時介紹一些常用方法。如果你對機器學(xué)習(xí)和統(tǒng)計分析在狀態(tài)監(jiān)控方面的實際應(yīng)用更感興趣,可以往下看“狀態(tài)監(jiān)控實例”部分。
方法一:多變量統(tǒng)計分析
使用主成分分析法進行降維:PCA
處理高維數(shù)據(jù)總是充滿挑戰(zhàn)的,減少變量個數(shù)(降維)的方法有很多。其中最主要的方法是主成分分析法(PCA, principal component analysis),該方法將數(shù)據(jù)映射到一個低維空間,使數(shù)據(jù)在低維空間的方差最大化。在實際應(yīng)用中,需要建立數(shù)據(jù)的協(xié)方差矩陣,并計算矩陣的特征向量。對應(yīng)最大特征值(即主要成分)的特征向量可用作重新構(gòu)建原數(shù)據(jù)集。如今原特征空間被減小了(部分?jǐn)?shù)據(jù)丟失了,但保留了最重要的信息),得到了由部分特征向量構(gòu)成的空間。
降維:
https://en.wikipedia.org/wiki/Dimensionality_reduction
PCA:
https://en.wikipedia.org/wiki/Principal_component_analysis
協(xié)方差矩陣:
https://en.wikipedia.org/wiki/Covariance_matrix
特征向量:
https://en.wikipedia.org/wiki/Eigenvalues_and_eigenvectors
多變量異常檢測
當(dāng)處理單變量或兩個變量的異常檢測時,數(shù)據(jù)可視化常常是一個好的方法。然而,當(dāng)拓展到高維數(shù)據(jù)時(同時也是大多數(shù)實際應(yīng)用中的情況),這種方法就會極其難處理。幸運的是,多變量分析可以幫得上忙。
當(dāng)處理一個數(shù)據(jù)點的集合時,這些點會有典型的特定分布(如高斯分布)。要想定量地檢測異常點,我們要先計算數(shù)據(jù)點的概率分布 p(x)。之后出現(xiàn)新的點 x,我們就可以用 p(x) 與閾值 r 作對比了。如果 p(x)
狀態(tài)監(jiān)控場景中的異常檢測很有趣,因為異??梢愿嬖V我們有關(guān)被監(jiān)控設(shè)備是否“健康”的訊息:當(dāng)設(shè)備臨近故障或非最優(yōu)操作所產(chǎn)生的數(shù)據(jù),與設(shè)備正常運轉(zhuǎn)所產(chǎn)生的數(shù)據(jù)在分布上不同。
多變量統(tǒng)計/多元統(tǒng)計:
https://en.wikipedia.org/wiki/Multivariate_statistics
高斯分布:
https://en.wikipedia.org/wiki/Normal_distribution
概率分布:
https://en.wikipedia.org/wiki/Probability_distribution
馬氏距離
試考慮一個數(shù)據(jù)點是否屬于某一分布的概率問題。第一個步驟是找到質(zhì)心或者說樣本點的質(zhì)量中心。直觀上來看,該點離質(zhì)心越近,越可能屬于這個集合。然而,我們也要注意該集合的范圍大小,這樣我們才能判斷給定的離質(zhì)心的距離是否值得注意。簡化的方法是去估計樣本點與質(zhì)心距離的標(biāo)準(zhǔn)差。將其插入標(biāo)準(zhǔn)分布中,我們可以得出數(shù)據(jù)點是否屬于同一分布的概率值。
上述方法也存在缺陷,我們假設(shè)了樣本點相對于質(zhì)心是球形分布的。如果它們的分布不是球狀的,而是橢圓狀的,我們在判斷測試點是否屬于該集合時,不僅要考慮與質(zhì)心的距離,還要考慮方向。在那些橢圓短軸的方向上,測試點的距離一定更近,但那些長軸方向上測試點是遠(yuǎn)離質(zhì)心的。從數(shù)學(xué)角度看,我們可以通過計算樣本的協(xié)方差矩陣,來估計出最能代表集合分布的橢圓。馬氏分布是指從測試點到質(zhì)心的距離除以橢圓在測試點方向上的寬度。
為了使用馬氏距離來判別一個測試點屬于 N 個分類中的哪一個,首先應(yīng)該基于已知樣本與各個分類的對應(yīng)情況,來估計每個類的協(xié)方差矩陣。在我們的例子中,我們只對“正?!焙汀爱惓!眱蓚€類別感興趣,我們使用只包含正常操作狀態(tài)的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),來計算協(xié)方差矩陣。接下來,拿來測試樣本,計算出它們與“正常”類別的馬氏距離,如果距離高于所設(shè)置的閾值,則說明該測試點為“異?!薄?/p>
馬氏距離:
https://en.wikipedia.org/wiki/Mahalanobis_distance
方法二:人工神經(jīng)網(wǎng)絡(luò)
自動編碼器網(wǎng)絡(luò)
第二種方法是基于自動編碼器神經(jīng)網(wǎng)絡(luò)。它的基本思想與上面的統(tǒng)計分析相似,但略有差異。
自動編碼器是一種人工神經(jīng)網(wǎng)絡(luò),通過無監(jiān)督的方式學(xué)習(xí)有效的數(shù)據(jù)編碼。自動編碼器的目的是學(xué)習(xí)一組數(shù)據(jù)的表示(編碼),通常用于降維過程。與降維的一層一起,通過學(xué)習(xí)得到重建層,自動編碼器嘗試將降維層進行編碼,得到盡可能接近于原數(shù)據(jù)集的結(jié)果。
在結(jié)構(gòu)上,最簡單的自動編碼器形式是前饋非循環(huán)神經(jīng)網(wǎng)絡(luò),與許多單層感知器類似,它們構(gòu)成了包含輸入層、輸出層和用于連接的一個或多個隱藏層的多層感知器(MLP, multilayer perceptron),但輸出層的節(jié)點數(shù)與輸入層相同,目的是對自身的輸入進行重建。
自動編碼器:
https://en.wikipedia.org/wiki/Autoencoder
人工神經(jīng)網(wǎng)絡(luò):
https://en.wikipedia.org/wiki/Artificial_neural_network
有效數(shù)據(jù)編碼:
https://en.wikipedia.org/wiki/Feature_learning
無監(jiān)督:
https://en.wikipedia.org/wiki/Unsupervised_learning
多層感知器:
https://en.wikipedia.org/wiki/Multilayer_perceptron
圖2:自動編碼器網(wǎng)絡(luò)
在異常檢測和狀態(tài)監(jiān)控場景中,基本思想是使用自動編碼器網(wǎng)絡(luò)將傳感器的讀數(shù)進行“壓縮”,映射到低維空間來表示,獲取不同變量間的聯(lián)系和相互影響。(與 PCA 模型的基本思想類似,但在這里我們也允許變量間存在非線性的影響)
接下來,用自動編碼器網(wǎng)絡(luò)對表示“正?!边\轉(zhuǎn)狀態(tài)的數(shù)據(jù)進行訓(xùn)練,首先對其進行壓縮然后將輸入變量重建。在降維過程中,網(wǎng)絡(luò)學(xué)習(xí)不同變量間的聯(lián)系(例如溫度、壓力、振動情況等)。當(dāng)這種情況發(fā)生時,我們會看到通過網(wǎng)絡(luò)重構(gòu)后的輸入變量的異常報錯增多了。通過對重構(gòu)后的報錯進行監(jiān)控,工作人員能夠收到所監(jiān)控設(shè)備的“健康”信號,因為當(dāng)設(shè)備狀態(tài)變差時,報錯會增多。與基于馬氏距離的第一種方法類似,我們在這里使用重建誤差的概率分布來判斷一個數(shù)據(jù)點是正常還是異常。
狀態(tài)監(jiān)控實例:齒輪軸承故障
在這個部分,我會介紹上述兩個不同方法在狀態(tài)監(jiān)控實例中的應(yīng)用。由于實際工作中大部分客戶的數(shù)據(jù)是無法公開的,我們選擇使用 NASA 的數(shù)據(jù)來展示兩種方法,讀者也可以通過鏈接自行下載。
NASA 數(shù)據(jù)下載:
http://data-acoustics.com/measurements/bearing-faults/bearing-4/
在該實例中,目的是檢測發(fā)動機上的齒輪軸承退化,并發(fā)送警告,以幫助工作人員及時采取措施以免齒輪故障。
實驗細(xì)節(jié)和數(shù)據(jù)準(zhǔn)備
在恒定負(fù)載和運行條件下,三個數(shù)據(jù)集各包含四個軸承運行出現(xiàn)異常的數(shù)據(jù)。數(shù)據(jù)集提供了軸承生命周期內(nèi)的振動測量信號,直到出現(xiàn)故障。前連天的運行數(shù)據(jù)被用作訓(xùn)練數(shù)據(jù),以表示正常且“健康”的設(shè)備。剩余部分的數(shù)據(jù)包含軸承運轉(zhuǎn)直到故障的過程,這部分?jǐn)?shù)據(jù)用作測試數(shù)據(jù),以評估不同方法是否能在運轉(zhuǎn)故障前檢測到其軸承異常。
方法一:PCA + 馬氏距離
正如本文“技術(shù)部分”中所介紹的,第一種方法先進行主成分分析,然后計算其馬氏距離,來辨別一個數(shù)據(jù)點是正常的還是異常的(即設(shè)備退化的信號)。代表“健康”設(shè)備的訓(xùn)練數(shù)據(jù)的馬氏距離的分布如下圖所示:
圖3:“健康”設(shè)備的馬氏距離分布
利用“健康”設(shè)備的馬氏距離分布,我們可以設(shè)定判斷是否為異常點的閾值。從上面的分布圖來看,我們可以定義馬氏距離大于 3 的部分為異常。這種檢測設(shè)備老化的估計方法,需要計算測試集中全部數(shù)據(jù)點的馬氏距離,并將其與所設(shè)置的閾值進行比較,來標(biāo)記其是否異常。
基于測試數(shù)據(jù)的模型評估
利用上述方法,我們計算測試數(shù)據(jù),即運轉(zhuǎn)直到軸承故障這一時間段內(nèi)數(shù)據(jù)的馬氏距離,如下圖所示:
圖 4:利用方法一檢測軸承故障
在上圖中,綠色點對應(yīng)計算得到的馬氏距離,而紅線表示所設(shè)置的異常閾值。軸承故障發(fā)生在數(shù)據(jù)集的最末端,即黑色虛線標(biāo)記處。這說明第一種方法可以檢測到 3 天后即將發(fā)生的設(shè)備故障。
現(xiàn)在我們用第二種建模方法做類似的實驗,以評估哪種方法更好。
方法二:人工神經(jīng)網(wǎng)絡(luò)
如本文“技術(shù)部分”中所寫的,第二種方法包括使用自動編碼器神經(jīng)網(wǎng)絡(luò)來尋找異常點。和第一種方法類似,我們在此也是用模型輸出的分布,用表示“健康”設(shè)備的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),來進行異常檢測。訓(xùn)練數(shù)據(jù)集的重建損失分布如下圖所示:
圖 5::“健康”設(shè)備的重建損失分布
利用“健康”設(shè)備的重建損失分布,我們可以設(shè)置判斷數(shù)據(jù)是否異常的閾值。由上圖中的分布,我們可以設(shè)置損失大于 0.25 的部分為異常。這種檢測設(shè)備老化的評估方法包括計算測試集中全部數(shù)據(jù)點的重建損失,將該損失與所設(shè)置閾值作比較,來判別其是否異常。
基于測試數(shù)據(jù)的模型評估
利用上述方法,我們計算測試數(shù)據(jù),即運轉(zhuǎn)直到軸承故障這一時間段內(nèi)數(shù)據(jù)的重建損失,如下圖所示:
圖 6:利用方法二檢測軸承故障
在上圖中,藍(lán)色點對應(yīng)重建損失,而紅線表示所設(shè)置的異常閾值。軸承異常發(fā)生在數(shù)據(jù)集的末端,即黑色虛線標(biāo)記處。這表示該建模方法也能夠檢測到未來 3 天即將發(fā)生的設(shè)備異常。
總結(jié)
綜上所述,兩種不同的方法都能用作異常檢測,在機器實際發(fā)生故障前幾天就檢測到即將發(fā)生的事故。在現(xiàn)實生活場景中,這項技術(shù)可以幫助我們早在故障前就采取預(yù)防措施,不僅可以節(jié)約開銷,也在設(shè)備故障的 HSE 方面具有潛在的重要性。
展望
使用傳感器收集數(shù)據(jù)的成本越來越低,設(shè)備間的連通度也日益提升,從數(shù)據(jù)中提取有價值的信息變得越來越重要。從大量數(shù)據(jù)中挖掘模式是機器學(xué)習(xí)和統(tǒng)計的重要領(lǐng)域,利用這些數(shù)據(jù)背后隱藏的信息來改善不同領(lǐng)域有極大的可能性。異常檢測和狀態(tài)監(jiān)控只是諸多可能性中的一種。
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
6808瀏覽量
88743 -
異常檢測
+關(guān)注
關(guān)注
1文章
42瀏覽量
9724
原文標(biāo)題:一文掌握異常檢測的實用方法 | 技術(shù)實踐
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論