許志城 印四華 朱成就
1(廣東工業大學計算機學院 廣東 廣州 510006) 2(廣東工業大學機電工程學院 廣東 廣州 510006)
我國是鋁型材生產、出口和消費大國。2015年我國鋁型材加工材產量達到26 000 kt/a,鋁合金擠壓材產量達到14 000 kt/a[1],居世界前列。進一步的數據統計顯示,2017年中國擠壓鋁材產量繼續攀升[2],達到了19 500 kt/a,占全球總產量的55%,擁有各種擠壓力的現代化油壓機約1 850臺,約占全球總臺數的70%。鋁材生產與消費規模在不斷擴大,對鋁型材生產過程的進一步分析,已經成為促進鋁材生產進一步發展的迫切需求。
傳感器設備具有價格低廉以及非侵入性的特性,促使物聯網技術正越來越多地被應用到工業大數據領域中。由于生產流程復雜,工業設備上的傳感器數量眾多且取樣頻率高,數據累積速度極快。產生的數據具有時間序列排布、數據維度高且存在大量無標簽數據、機理模型復雜等特點,并且特殊工況的發生常常會帶來較大的經濟損失[3]。擠壓機是鋁型材生產線上的核心設備,在發展過程中其結構日趨于大型化、復雜化及自動化,若能對生產過程中出現的異常及時進行檢測與分析,將會提高整個生產過程的效率,從而帶來較大的應用價值。
異常檢測一直以來都是數據挖掘領域的研究熱點,被廣泛應用于設備狀態監測、網絡入侵檢測以及金融欺詐檢測等領域。目前,面向工業生產的異常檢測方法的研究主要集中在利用不同的異常檢測方法解決不同工業生產環境下的特定問題上。為了避免發電廠汽輪機健康監測系統由于噪聲問題出現不必要的假警報與故障誤診,Ajami等[4]應用主成分分析法(PCA)排除了次要的影響因素,提升了故障診斷的正確性和有效性;Kim等[5]結合無標簽傳感設備與邊緣計算的場景提出了一種壓縮卷積變分自編碼器方法(SCVAE),用來解決無標簽傳感設備在小型生產工廠中的異常檢測問題;在分切機運行質量管理與質量控制研究中,Kanawaday等[6]利用差分整合移動平均自回歸(ARIMA)模型對分切機可能產生的錯誤和質量缺陷進行預測,優化了整個生產過程;針對擠壓機設備異常原因復雜、檢測方法時效性不足等問題,楊慧芳[7]結合專家知識提出了一種基于貝葉斯網絡的鋁型材擠壓過程異常檢測方法,極大地縮短了網絡構建周期,提高了檢測的效率。
深度結合專家知識、利用復雜的數學模型進行計算以及從整體數據的角度進行統計學分析,上述方法在一定程度上解決了工業場景中常見的各種問題。但在實際場景中,工業生產數據更多的是以流數據的形式表現的。流數據通常數量巨大、生成速度快,而且其分布可能會隨著時間的推移而發生變化,即概念漂移現象[8]。因此面向流數據的異常檢測模型必須及時更新,適應可能發生變化的數據,保證模型的有效性。
在眾多機器學習算法中,集成學習算法具有易于更新、適應性強、性能較好的優點,是用于流數據處理最廣泛的技術之一。孤立森林[9]是集成學習算法中的一類典型的無監督異常檢測算法。該算法將異常數據定義為容易被孤立的離群點,即遠離于高密度數據群體的孤立的點。其算法思想為,使用超平面劃分的方式隨機選擇數據空間的某維度進行劃分子空間,迭代地對子空間進行劃分構造出子樹,反復構造出多個子樹形成孤立森林。在劃分過程中,越是稀疏的數據點越早被劃分開來,在子樹中的深度也就越小,在孤立森林中的平均深度也越小。
孤立森林算法有效地解決了高維度數據集異常檢測中的2個問題[10]:① 不需要計算數據點之間的距離,算法的時間復雜度為線性,不隨維度的增加而增加;② 采用集成學習的策略,對大型數據集的檢測性能好,子樹越多,孤立森林的算法性能越穩定。同時,由于子樹之間相互獨立,子樹的構造與使用不會受到其他樹的影響,算法還可以部署在大型分布式系統上進行分布式并行計算。
基于以上分析,為了解決擠壓機流數據中存在的噪聲問題以及概念漂移問題,本文提出了一種基于孤立森林算法的擠壓機流數據異常檢測方法,所提出的算法主要用來檢測擠壓機在運行中可能存在的短時間狀態異常,即異常檢測中的序列異常。實驗結果表明,本文所提出的算法不僅可以實時地檢測出擠壓機在運行中存在的狀態異常,還具有較高的準確性。
本文所研究的對象為華南某大型鋁型材生產企業擠壓車間型號為SY-3600Ton的臥式液壓直接傳動型鋁型材擠壓機,該類型擠壓機是目前鋁型材生產企業廣泛使用的一種中型擠壓機,其基本結構如圖1所示。

圖1 擠壓機基本結構圖
鋁型材擠壓機主要由三部分組成[11],分別為電氣控制系統、機械系統和液壓系統。機械系統包括擠壓機底座、張力柱、擠壓桿、剪刀機和滑動模座等單元;液壓系統包括油泵站、柱塞泵、液壓控制閥、主缸、副缸、閥板和液壓油管等;電氣系統主要由顯示屏幕、PLC可編程序控制器、操作臺、上位工業控制機和供電柜等組成。在擠壓工藝流程中,各個系統間產生的電能、機械能和液壓能相互轉換,共同完成工作。
擠壓機目前的運作方式為半自動化運作,需要人工使用PLC操作臺進行操作。完整的鋁型材擠壓工藝流程包括預熱、擠壓、壓余、矯直、鋸切、冷加工以及人工時效等步驟。擠壓機負責鋁材初期的塑性加工過程,參與了預熱、擠壓和壓余三個階段,其中包含了很多影響擠壓產品質量的相關因素[12],如圖2所示。在預熱階段,擠壓機開始擠壓前,需要利用多個加熱子系統先對鋁棒、模具以及盛錠筒進行加熱,使溫度達到工藝要求;在擠壓階段,為了保證擠壓產品質量與最大化模具使用壽命,需要控制擠壓速度,同時使用氮氣控制模具的溫度,使鋁棒在擠壓桿推力的作用下從擠壓筒另一端的模具孔流出,得到與擠壓模具孔形狀尺寸相同的產品;在壓余階段,即擠壓的最后階段,使擠壓墊片與模子保持一定距離,擠壓筒外層金屬向擠壓墊再向模子流出,會形成“擠壓縮尾”,需要擠壓機利用剪刀機將含有雜質的縮尾進行剪切。擠壓機的生產過程中各個子系統之間相互配合,其同一時刻的運行狀態表示了擠壓系統當前的運行狀態。

圖2 擠壓機擠壓過程相關影響因素
在實際生產中,擠壓機設備不僅存在擠壓桿變形、傾斜等人為可觀察到的異常,還存在許多難以直接觀察到的異常,如液壓系統中的管道和擠壓泵零件故障。若沒有及時處理異常,極易引起其他相關異常。傳感器設備在使用過程中,由于電流電壓不穩定、通信異常等因素會導致部分采集點數據偏離于真實值,產生許多噪聲,影響數據的質量。此外,設備部件的老化與更換、工況變化、擠壓工藝改進以及氣候狀況等因素還會使得設備運行狀態所隱含的概念發生改變,發生概念漂移現象。這些因素都嚴重影響了當前擠壓機異常檢測技術的有效性。因此,如何利用擠壓機各個子系統的數據及時發現異常,同時克服噪聲和概念漂移帶來的檢測困難是本文需要解決的關鍵問題。
為了檢測擠壓機在運行中可能存在的短時間狀態異常,本文提出了一種基于孤立森林算法的擠壓機流數據異常檢測方法-多特征半空間孤立森林算法,簡稱MHSIF算法。本文所提模型進行異常檢測的過程如圖3所示。算法開始時,使用原始數據初始化模型。模型在初始化后在新的檢測周期讀入擠壓機流數據進行實時異常檢測;當周期結束后,若異常率大于閾值,表示存在概念漂移,則使用當前周期數據更新模型,保證模型的有效性。

圖3 基于孤立森林算法的流數據異常檢測過程
流數據可以認為是隨時間變化不斷增長的數據。通過提取數據子序列的特征來表示設備的狀態,不僅可以充分利用時間序列數據連續相關的特性,還能在一定程度上避免點數據噪聲對設備狀態異常檢測的影響。
定義1(多維流數據) 記一組n維時間序列流數據X=


均值是數據中心位置的一種度量,反映總體數據的一般水平,其計算式為:
(1)
方差反映了數據的變異程度,可以衡量一組數據離散程度,其計算式為:
(2)
偏度是統計數據分布偏斜方向和程度的度量。偏度小于0,表示當前數據分布為左偏態;反之,表示當前數據分布為右偏態。偏度的絕對值越高,表示數據分布的偏離程度越高,其計算式為:
(3)
峰度是描述總體序列中數據分布形態陡緩程度的統計量。峰度越大表示序列分布越陡峭,峰度越小表示序列數據分布越平坦,其計算式為:
(4)

Tan等[14]在孤立森林算法的基礎上結合Ting等[15]的質量評估方法提出了半空間孤立森林(HS-Trees)算法。HS-Trees模型子樹的建立過程主要分為子樹構造與節點質量計算兩個階段。在子樹的構造階段,得到數據各維度的取值邊界,隨機選擇某一維度,以該維度的中點作為劃分點切割子空間。更新子空間的維度信息,再次對各子空間進行劃分,迭代劃分過程得到半空間樹,如算法1所示。
算法1HS-Trees子樹構建算法-BuildTree
輸入:minArr & maxArr-每一維度中最大最小值組成的數
組,k-當前節點深度
輸出:HS-Tree-子樹的根節點
1. if k==最大深度then
2. return當前節點;
3. else
4. 隨機選擇某一維度q;
5. p←(maxArr[q]+minArr[q])/2;
6. temp←maxArr[q];maxArr[q]←p;
7. Left←BuildHS-Tree(minArr,maxArr,k+1);
8. maxArr[q]←temp;min[q]←p;
9. Right←BuildHS-Tree(minArr,maxArr,k+1);
10. return Node(Left,Right,p,q);
//返回切割維度為q,
//切割值為q以Left為左子樹,Right為右子樹的節點
11. end if
在節點質量計算階段,記錄子樹各節點中一個檢測周期內數據點經過的次數,將其作為對應節點的質量。子樹建立完成后,使用評分函數計算新數據點的異常值,其表達式為:
(5)
式中:node表示在樹T中x經過的所有節點;node.mass表示節點的質量,h為對應節點在樹中的深度。
在HS-Trees算法中,稱各子樹異常值的均值為該數據點的異常值。異常值越小表示該數據點是異常數據的可能性越大,且異常值的大小隨子樹數量的增多趨于穩定。
與一般孤立森林算法的不同之處在于,HS-Trees算法中使用數據的維度屬性構建子樹結構,模型的結構在新的數據分布中仍具有適用性。同時,算法利用了質量評估方法計算數據的異常值,因此檢測器可以快速適應并學習數據流中的變化而無需改變模型的基本結構,只需在新的檢測周期中更新節點質量即可達更新模型。但是在對HS-Trees算法的分析中發現算法存在以下兩個問題:① HS-Trees算法中判斷出異常的方法為,在完成一個檢測周期后對數據點的異常值進行排序,異常值最小的前n個數據點被認為是異常數據。異常結果的反饋存在延遲,并且檢測效果嚴重依賴于對異常率的判斷。在異常率大小存在波動的場景中容易出現錯判,漏判的情況。② HS-Trees算法中,隨著檢測周期的切換,都會做一次節點權值更新,存在可能的重復的模型更新操作。
結合HS-Trees算法效率高、時間復雜度低的特點與時間序列數據連續相關的特性,本文針對擠壓機流數據提出了一種多特征半空間孤立森林異常檢測算法。本文算法以多維流數據子序列的統計向量作為基本檢測單元,在算法開始階段需要先對多維流數據子序列進行切割。經由統計特征提取算法轉換成多種統計特征值后,再由對應的MHSIF異常檢測模型計算出對應統計特征向量的異常值,其檢測過程如圖4所示。

圖4 MHSIF算法異常檢測過程
具體而言,多特征半空間孤立森林算法有3個重要組成部分,分別為統計特征值的提取、MHSIF模型的構建和使用MHSIF模型異常檢測過程。
多維流數據統計特征值的提取過程如算法2所示,算法輸出的結果為經過對應統計特征公式計算轉換后的特征向量集合。具體的算法的處理過程為:① 通過統計特征名稱得到預先定義好的統計特征計算函數;② 按照預先設置好的子序列長度截取多維流數據子序列,并使用統計特征計算函數計算出子序列的統計特征向量;③ 合并并輸出多維流數據各個統計特征值計算結果。算法2計算了多維流數據子序列的不同統計特征值,并以集合的方式將計算結果輸出供異常檢測算法使用。
算法2統計特征值提取算法-TransData
輸入:data-多維流數據,sub_size-子序列長度,columns-維度列名,feature_list-統計特征名稱集合
輸出:result-經對應函數集合轉換后的統計特征向量集合
1. result←{};
//定義變量,保存統計特征提取結果
2. for feature_name in feature_list do
3. func←get_func(feature_name);
//通過統計特征名
//feature_name取出預先定義好的lambda函數
4. result_temp←{};
//定義臨時變量,保存對應統計
//特征提取結果
5. for i←1 to len(data)/sub_size do
6. data_feature←get_feature(data,i,func,sub_size);
//使用lambda函數func計算數據流data的子序列統計特征值
7. result_temp←result_temp∪data_feature
8. end
9. result←result∪result_temp;
10. end
11. return result;
在HS-Trees算法的基礎上,本文提出了MHSIF模型的構建方法,如算法3所示。為了在多個角度描述擠壓機流數據的設備狀態,MHSIF算法利用單個檢測周期內多維流數據子序列的多種特征向量數據構建了一個多特征HS-Trees集合,本文將其稱為MHSIF模型。由2.2節可知,MHSHF模型中子樹的結構只需要構建一次即可,模型在檢測過程中的更新主要是對樹節點的質量進行重新計算。
算法3MHSIF模型構建算法-BuildMSHIF
輸入:data-單周期歷史特征向量數據集,tree_num-單個特征森林中子樹的數量,feature_list-統計特征名稱集合
輸出:trees_list-特征向量子樹集合
1. trees_list←{};
//定義變量,保存特征向量子樹集合
2. for feature in feature_list do
3. max,min←get_side(data[feature]);
//取得每一維度最值組成的數組
4. for i←1 to tree_num do
5. t←BuildTree(max,min,0);
//構建HS-Tree子樹
6. update_mass(t,data[feature]);
//計算節點質量
7. trees_list[feature]←trees_list[feature]∪ t;
//合并對應特征的半空間孤立森林子樹
8. end
9. end
10. return trees_list;
基于HS-Trees算法的MHSIF異常檢測模型需要解決一個關鍵問題,即HS-Trees算法檢測異常存在反饋延遲問題。HS-Trees算法的反饋延遲問題的根源在于,在不同長度的檢測周期中評分函數值域會發生改變,從而無法通過同一閾值對異常數據進行劃分。為了使模型可以在不同長度的樣本中具有通用性,文獻[9]利用二叉樹的特性對典型孤立森林的評分函數進行歸一化。本文參照文獻[9]中典型孤立森林評分函數的歸一化公式對HS-Trees評分函數做了進一步改進,對計算出來的異常值進行歸一化,使算法可以利用閾值判斷實時反饋異常檢測的結果。
設有任一統計特征向量x,對應的特征值森林T,T的檢測周期為n,子樹的最大深度為max_depth,則特征向量x在T中的異常值歸一化計算公式如式(6)所示。
(6)

H(k)=ln(k)+ξξ=0.577 215 664 9
E(score(x,t))表示特征向量x在特征值森林中的平均異常分數;c(n)表示在特征值森林中查找失敗的平均異常值;H(k)為調和數公式,ξ為歐拉常數。對歸一化后的異常值,本文的判斷異常數據的標準為:① 若特征向量的異常值小于或接近0.5,則認為其是正常實例的可能性較大;② 若特征向量的異常值遠大于0.5,則認為其是異常的可能性很大。
流數據經算法3轉換成特征向量后,即可使用MHSIF模型進行異常檢測,其檢測過程如算法4所示。利用MHSIF模型可以計算出同一數據序列不同特征向量的異常值,并且實時地記錄與反饋數據序列的檢測結果。具體的算法的處理過程為:① 在開始檢測前,判斷當前是否進入新的檢測周期;進入新的檢測周期前,若前一檢測周期異常率高于閾值則認為模型出現概念漂移,使用前一周期數據更新模型節點質量并重置記錄模型狀態的相關變量;② 分別用對應的特征森林計算不同類別特征的平均異常值;計算出平均異常值后,使用式(6)進行歸一化;③ 若某特征歸一化后的異常值超過閾值則認為該特征可能存在異常;若數據序列中出現異常的特征數超過兩種則認為該數據序列為異常數據序列。
算法4MHSIF異常檢測算法-Predict
輸入:trans_data-特征向量數據集,feature_list-統計特征名稱集合,trees_list-特征向量對應的子樹集合,threshold_outlier-異常值閾值,detecion_size-檢測周期長度
輸出:result-異常值計算結果
1. result←{};
//定義變量,保存異常值結果
2. for i←1 to len(trans_data) do
3. if當前檢測數>=detection_size then
4. if異常率>=threshold_outlier then
5. 使用當前周期數據更新模型節點質量;
6. end if
7. cur_data←{};
//清空當前周期數據
8. 當前檢測數及異常數歸零;
9. end if
10. for feature in feature_list do
11. s←0;
12. for tree in trees_list[feature] do
13. s←s+score(trans_data[i],tree);
//計算特征向量在各子樹的異常值
14. end
15 s←balance_score(s/trees_num);
//使用平衡函數歸一化異常值的均值
16. result[feature]←result[feature] ∪s;
17. end
18. if scores中異常的特征數超過兩種 then
19. 當前異常數加1;
20. end if
21. cur_data←cur_data∪trans_data[i];
//記錄當前周期數據點
22. end
23. return result
本文的實驗所使用的環境為Intel(R) Core(TM) i5- 7300HQ @ 2.5 GHz,16 GB RAM,Windows 10 64位系統,算法采用Python 3.7實現。
本文采用異常檢測領域中最常用的三個指標,正確率、查全率以及精確率,對模型的異常檢測性能進行驗證。其中,正確率表示模型判斷正確的數量占總數據的比例;查全率表示被正確檢測出來的異常數目占實際異??倲档谋壤?;精確率表示被正確檢測出來的異常數目占被檢測為異常的總數的比例。
為了評估MHSIF算法的有效性及檢測效果,本文設計了兩個實驗:① 驗證改進后的HS-Trees模型是否能在原始環境中有效地區分異常數據,解決原算法中異常結果反饋存在延遲的問題;② 驗證異常檢測算法在擠壓機流數據的背景下的檢測效果。實驗使用文獻[14]中HS-Trees模型設置的相關參數,將檢測周期設置為250,森林子樹數目為25,子樹的最大深度設為15。
3.2.1實驗一
實驗一使用KDDCup99數據庫中的HTTP與SMTP入侵檢測數據集進行實驗,文獻[14]用其作為實驗數據集用來驗證HS-Trees模型的有效性。將HS-Trees算法中的評分函數替換為異常值歸一化公式,即式(6),將判斷異常的閾值設置為0.6。取數據集中各1 000條數據作為測試數據,使用替換評分函數后的HS-Trees算法對數據進行異常檢測。
使用改進后的HS-Trees算法對HTTP測試數據集進行異常檢測。計算后的異常值分布散點圖和概率密度分布圖如圖5和圖6所示。由圖可知,算法成功將模型計算的異常值范圍限制在0到1之間,并且標簽為正常的數據的異常值主要集中在區間[0,0.5]內,標簽為異常的數據的異常值主要集中在區間(0.5,1]內,表明使用本文所提的判斷異常數據的標準可以有效地將異常數據識別出來。

圖5 HTTP測試數據異常值分布散點圖

圖6 HTTP測試集異常值概率密度分布圖
由表1可知,新的異常數據判斷策略有效地檢測出了HTTP數據集和SMTP數據集中的異常。使用異常值歸一化公式計算異常值可以在保證算法檢測性能不降低的前提下解決原算法中異常結果反饋存在延遲的問題。

表1 改進HS-Trees算法異常檢測算法結果
3.2.2實驗二
實驗二使用的數據來源于華南某大型鋁型材生產企業能源管理系統的數據庫,本文選擇擠壓車間中型號為SY-3600Ton的擠壓機設備在2018年1月至3月采集的生產數據。其中數據為每10秒采集一次的流數據,包含了擠壓機、棒爐、冷床、模具爐以及風冷電柜等采集點的用電量、電流和電壓數據。
在實驗前,先對數據進行降采樣,取得數據間時間間隔為1分鐘的時序數據集,其中,將電量等累計數據進行偏移量計算,得到固定時間間隔的電量偏移量集合,其余數據進行時間間隔等距采樣。設當周期內異常率超過3%時認為模型存在概念漂移,以是否更新模型作為變量條件,子序列長度設置為6,使用MHSIF算法進行實驗。
由圖7可知,隨著檢測周期的切換,擠壓機流數據會發生概念漂移現象,沒有采用更新策略的MHSIF模型的查全率在逐步降低。

圖7 不同更新策略下MSHIF算法查全率對比圖
由表2可知,與采用不更新策略的模型相比,采用更新策略的MHSIF算法在正確率、查全率以及精確率三個方面都有較大的優勢。本文所提出的基于孤立森林算法的擠壓機流數據異常檢測算法可以有效地檢測擠壓機在運行中可能存在的設備狀態異常。

表2 MHSIF算法異常檢測算法結果
為了檢測出擠壓機在運行中可能存在的設備狀態異常,本文提出了基于孤立森林算法的擠壓機流數據異常檢測方法。針對數據集中存在噪聲無法正確反映設備狀態的問題,算法抽取數據的序列特征用來表示設備在某一時間段的狀態,避免了噪聲數據對異常檢測效果的影響。同時,本文在半空間孤立森林(HS-Trees)算法[14]的基礎上做了改進,解決了原算法中存在的結果反饋延遲問題,使其能更好地適應流數據應用場景。實驗顯示,本文所提出的算法不僅可以實時地檢測出擠壓機在運行中存在的狀態異常,還具有較高的準確性。