康鑫碩,崔 策
(1.廣研檢測(廣州)有限公司,廣東廣州 510700;2.廣州機(jī)械科學(xué)研究院有限公司,廣東廣州 510700)
油液監(jiān)測的異常值是指樣本中某個(gè)特征與其余樣本有明顯差異的少數(shù)值。在油液監(jiān)測過程中,對(duì)異常數(shù)據(jù)的甄別是一項(xiàng)重要工作,一方面,異常值的存在會(huì)對(duì)指標(biāo)閾值的制定產(chǎn)生影響,多數(shù)情況下會(huì)導(dǎo)致報(bào)警值過于寬松,這樣就容易造成漏診,因此在制定閾值前通常要先將離群值從數(shù)據(jù)集中剔除;另一方面,異常值本身也表征這設(shè)備狀態(tài)的異常,將這些離群點(diǎn)找出來并針對(duì)性地分析原因,也可以累積診斷經(jīng)驗(yàn),為企業(yè)的潤滑管理的提升提供依據(jù)[1]。
通過異常值的檢驗(yàn),一方面提升了樣本的凈度,另一方面也是數(shù)據(jù)探索過程的重要一環(huán),目前學(xué)術(shù)界有多種方法可以實(shí)現(xiàn)異常值的檢驗(yàn)。例如,對(duì)于一維數(shù)據(jù),其特征可以是樣本的均值、方差等參數(shù),采用統(tǒng)計(jì)圖表等方式直接觀察發(fā)現(xiàn)異常點(diǎn);對(duì)于多維數(shù)據(jù),可通過非監(jiān)督算法如Kmeans、PCA 主成分等算法計(jì)算相應(yīng)特征,并找出數(shù)據(jù)的特征中與多數(shù)數(shù)據(jù)存在明顯差異的異常值[2]。本文分別介紹HBOS(Histogram-based Outlier Score,直方圖)法、LOF(Local Outlier Factor,局部離群因子)算法、KNN(K-Nearest Neighbor,K-近鄰)算法、ABOD(Angle-Ba sed Outlier Detection,角度離群算法)、Kmeans 算法等、Isolation Forest(孤立森林法)的檢驗(yàn)原理,最后通過python 開發(fā)異常檢驗(yàn)?zāi)K界面。
直方圖法是一種基于統(tǒng)計(jì)的無監(jiān)督方法,利用直方圖去判斷異常值。其核心思想是將多維樣本的每個(gè)維度先進(jìn)行直方圖統(tǒng)計(jì),計(jì)算出各維度的頻數(shù)和頻率等特征,然后進(jìn)行合并計(jì)算,將多維樣本分成多個(gè)方形區(qū)間,樣本數(shù)少的區(qū)間是異常值的概率大,反之則為非異常樣本,異常值的判別通過概率密度進(jìn)行計(jì)算。圖1 為一個(gè)通過直方圖檢驗(yàn)油液黏度—酸值二維數(shù)據(jù)異常值的示例,圖中虛線外深色區(qū)間的數(shù)據(jù)為異常值[3]。
圖1 HBOS 異常值統(tǒng)計(jì)示例
從數(shù)據(jù)密度的角度來看,正常樣本往往處于高密度區(qū)域,異常值往往是處于低密度區(qū)域中?;诿芏鹊漠惓V禉z驗(yàn)方法的原理是:對(duì)于數(shù)據(jù)集D,其中多數(shù)正常樣本xc周圍的密度與其相鄰樣本的周圍密度是相似的,而少數(shù)離群樣本xo周圍的密度會(huì)明顯不同,通過對(duì)比各樣本周圍的密度和其相鄰數(shù)據(jù)周圍的密度,就可以獲取離群值的相關(guān)信息[4]。
LOF 算法就是一種基于密度的異常值檢驗(yàn)方法,可通過點(diǎn)的一定范圍內(nèi)數(shù)量來計(jì)算得出密度,某個(gè)樣本周圍的樣本越少密度越低,數(shù)量越多密度越高。CBLOF(Cluster-Based Local Outlier Factor,基于聚類的本地異常因子)在LOF 的基礎(chǔ)上增加了聚類的操作,降低了異常值檢驗(yàn)的復(fù)雜度。圖2 是通過CBLOF檢驗(yàn)的同一組實(shí)驗(yàn)樣本黏度和酸值之間的異常值檢測結(jié)果。
如果一個(gè)數(shù)據(jù)樣品遠(yuǎn)離大部分點(diǎn),那么就可以認(rèn)為這個(gè)樣本就是異常的。因此對(duì)于樣本數(shù)據(jù)集D,可以通過統(tǒng)計(jì)計(jì)算出距離的閾值r 來劃分樣本數(shù)據(jù)的合理鄰域。對(duì)于每個(gè)樣本xi,可以考察xi與其他樣本的距離特點(diǎn)。通過遍歷計(jì)算出樣本點(diǎn)xi和其余樣本的距離,當(dāng)某個(gè)點(diǎn)總是遠(yuǎn)離其余樣本,即不在xi的r 鄰域內(nèi),則xi視為異常值,這就是基于距離的異常值檢驗(yàn)方法的基本思路[5]。
臨近算法(KNN)就是最常見的基于距離的異常值檢驗(yàn)方法,圖3 是其檢驗(yàn)的結(jié)果示例,其中距離函數(shù)選擇歐式距離。
圖3 KNN 異常值統(tǒng)計(jì)
基于角度的離群點(diǎn)檢測是一種針對(duì)多維數(shù)據(jù)集的檢測方法。該方法類似于LOF 等局部離群點(diǎn)檢測方法,對(duì)于數(shù)據(jù)集中任意的三點(diǎn)形成角度譜相圖,然后通過設(shè)定表征離群程度的離群系數(shù),將數(shù)據(jù)對(duì)象排序輸出,最終得出離群點(diǎn)。由于高維數(shù)據(jù)的角度相比距離更加穩(wěn)定,因此主要應(yīng)用于高維數(shù)據(jù)的異常值檢驗(yàn)[6]。常見的方法有角度離群算法(ABOD),圖4 是其檢驗(yàn)的黏度和酸值之間的異常值檢測結(jié)果。
孤立森林法(Isolation Forest)是一個(gè)基于集成學(xué)習(xí)的快速異常檢測方法,適用于非線性、多維度的大數(shù)據(jù)樣本的異常處理。從統(tǒng)計(jì)學(xué)來看,在多維數(shù)據(jù)空間里,異常樣本值可定義為那些分布稀疏,且相比高密度群體較遠(yuǎn)的點(diǎn)。而往往異常值的稀疏特征可在通過遍歷維度的方式找出,這就是“孤立森林”法的前提假設(shè)[7]。
孤立森林的計(jì)算原理與隨機(jī)森林相似,它是基于多個(gè)決策樹集成建立的。其思路如下:對(duì)于一組樣本數(shù)據(jù),在這個(gè)樣本數(shù)據(jù)某個(gè)維度下的選擇一個(gè)值,對(duì)樣本群體進(jìn)行二叉劃分,將小于該值的樣本劃分到節(jié)點(diǎn)左邊,大于該值的樣本劃到右邊,這樣就得到了一個(gè)分裂條件和兩個(gè)數(shù)據(jù)樣本,然后分別在這兩個(gè)數(shù)據(jù)集上重復(fù)上面的過程,直到樣本無可再分,這樣就形成了一棵“樹”[8]。每一個(gè)節(jié)點(diǎn)就可以看作一個(gè)分枝,每一個(gè)數(shù)據(jù)就可以看作一片葉子(圖5)。終止條件通常有兩種,一種是數(shù)據(jù)分身不可再分,即該數(shù)據(jù)集中只剩下一個(gè)樣本,或全部樣本值相同;另一個(gè)是數(shù)的高度到達(dá)一定程度。
圖5 孤立森林法示意
把“樹”建立好之后,通過不同的樹集成形成孤立森林后,就可以對(duì)數(shù)據(jù)進(jìn)行分類了。其過程就是將樣本數(shù)據(jù)沿著不同樹的枝干分類,最終達(dá)到不同的節(jié)點(diǎn),并記錄這個(gè)過程中經(jīng)過的路徑長度,即從根節(jié)點(diǎn),穿過中間的節(jié)點(diǎn),最后到達(dá)葉子基點(diǎn),所走過的“枝”數(shù)量。在這種隨機(jī)分割的策略下,異常值通常具有較短的路徑。
孤立森林將異常數(shù)據(jù)判定為樹平均路徑較短的結(jié)果,并通過異常系數(shù)來評(píng)價(jià)一個(gè)數(shù)據(jù)樣本的異常程度,其結(jié)果介于在0和1 之間,異常值公式為:
其中,E(h(x))是某樹根節(jié)點(diǎn)到葉節(jié)點(diǎn)的路徑長度h(x)的平均值,而c(n)是在n 個(gè)決策樹h(x)的平均值??梢酝ㄟ^該公式對(duì)每個(gè)樣本進(jìn)行異常評(píng)分,數(shù)據(jù)遍歷的樹越多或路徑越長則得分越低,反之得分越高。
圖6 為通過孤立森林算法得出某齒輪油酸值和黏度的異常值結(jié)果。
圖6 孤立森林法異常檢驗(yàn)
在設(shè)備的狀態(tài)監(jiān)測過程中,由于缺乏可靠的歷史資料,往往無法確定共有多少故障類別,在僅有監(jiān)測數(shù)據(jù)的條件下,通過對(duì)數(shù)據(jù)特征的統(tǒng)計(jì)分析,可以將具有相近特征的數(shù)據(jù)組成的一個(gè)類別,而對(duì)不同特征的數(shù)據(jù)劃入不同的類別,即本著同類相近、異類相遠(yuǎn)的原則對(duì)數(shù)據(jù)進(jìn)行區(qū)分,首先形成多個(gè)不同類別的特征集,而后通過計(jì)算特征集合內(nèi)各點(diǎn)和中心的距離,以此來完成異常值的區(qū)分[9]。下面以Kmeans 算法為例,介紹聚類分析算法在異常值檢測中的應(yīng)用。
Kmeans 算法的核心思想是將所有樣本數(shù)據(jù)到劃分到不同數(shù)據(jù)簇當(dāng)中,使得樣本到聚類中心的距離平方和最小[10]。設(shè)樣本模式集為X={Xi,i=1,2,3,…,N},其中Xi為n 維向量,Xi={ Xik,k=1,2,3,…,n},聚類過程就是要找到劃分簇集ω={ω1,ω2,…ωC},使得聚類準(zhǔn)則函數(shù)J 到最小。
當(dāng)各類中心明確時(shí),類別的劃分按照最鄰近法則確定。即如果滿足,則說明樣品Xi屬于類j。當(dāng)獲得多個(gè)不同簇后,計(jì)算每個(gè)點(diǎn)到簇中心的距離值,將距離跟設(shè)置的閾值相比較,如果其大于閾值則認(rèn)為是異常,否則正常。
圖7 是通過Kmeans 算法得出的酸值和水含量含量的聚類分析結(jié)果,從聚類結(jié)果可以知道數(shù)據(jù)的大致分類情況,這對(duì)于診斷工程師具有一定輔助診斷和數(shù)據(jù)探索的作用。
圖7 Kmeans 算法異常值檢驗(yàn)
Tkinter 是基于python 語言開發(fā)的窗口視窗設(shè)計(jì)模塊,具有標(biāo)準(zhǔn)GUI(Graphics User Interface,圖形用戶界面)工具接口。作為python 語言內(nèi)置的GUI 開發(fā)工具,可快速、高效地創(chuàng)建GUI程序。Tkinter 能夠滿足多數(shù)小型GUI 程序的需求。其開發(fā)的程序在Windows、Linus 等操作系統(tǒng)上均可運(yùn)行,具有較高的兼容性[11]。其中,數(shù)據(jù)庫來源于Oracle 油液監(jiān)測數(shù)據(jù)庫,分析維度為油液監(jiān)測數(shù)據(jù)的各項(xiàng)理化指標(biāo),如黏度、水分、溫度等;異常值比例默認(rèn)為0.3%,分析結(jié)果均顯示在右側(cè)(圖8)。
圖8 基于Tkinter 開發(fā)的界面效果
油液監(jiān)測數(shù)據(jù)包含了設(shè)備故障狀態(tài)的重要特征,作為設(shè)備是否檢修與維護(hù)等操作的重要依據(jù),如何感知多維、非高斯油液數(shù)據(jù)的狀態(tài),尤其是異常狀態(tài)是挖掘數(shù)據(jù)和異常檢驗(yàn)的難點(diǎn),本文主要介紹直方圖(HBOS)、LOF、KNN、ABOD、Kmeans、Isolation Forest(孤立森林)等多個(gè)算法的原理,并采用python Tkinter 開發(fā)異常檢驗(yàn)界面,實(shí)現(xiàn)對(duì)油液監(jiān)測數(shù)據(jù)的自動(dòng)化探索和異常感知。