楊繼聰,周偉,王林琳
(湖北工業大學機械工程學院,湖北武漢 430068)
2019年3月,一架客機波音737Max因傳感器故障引起飛機失控,導致了機毀人亡的悲劇。同年4月,甘肅某風電場在進行維護保養時,風電機組發生倒塌事故,造成重大人員傷亡和巨額財產損失。這些由于設備故障而引起的重大事故,時刻提醒著人們對裝備健康進行狀態監測和故障預測極為重要。
彭飛和張堯基于物聯網和數據驅動對交通軌道軸承進行了故障診斷。劉冰冰等提出了一種基于隨機森林的故障預警模型,對風電變頻器進行了研究。郇雙宇等針對混合動力鏟運機的故障預測,提出了一種把最小二乘支持向量機和隱馬爾科夫模型相結合改進的故障預測方法。黃新波等提出了一種基于時間序列和支持向量機的預測模型,對變壓器進行了故障預測。滕偉等人提出了一種改進粒子濾波的方法,對重型燃氣輪機的跳機故障進行了預測。
上述研究都是針對單一裝備使用特定算法進行故障預測,其中最大的限制是缺乏合適的用戶界面來根據不同的設備自定義設計合適的實驗模型,暴露出模型構建難、復用性差等問題。
相對于單一算法進行故障預測,機器學習算法更加全面。張星星等將機器學習應用于對滾動軸承進行故障分類和診斷。針對實驗建模難和參數配置繁瑣的問題,將實驗步驟可視化顯得十分重要。趙玲玲等提出了一種基于Spark的可視化流程式機器學習方法。
本文作者提出一種不需要修改源代碼,根據具體的業務需求來自定義算法模型的系統架構。將工作流技術進行改進,應用于故障預測實驗。將實驗的每一個步驟抽象成一個組件,通過將組件以可視化的方式、拖拉拽的形式來進行算法建模,導入數據源調整某些初始參數就能夠適應用戶需求的變化。該系統已成功應用于國內某鑄造車間表干爐設備的故障預測。
工作流是在將輸出結果呈現給用戶之前如何處理和格式化輸入數據的說明。工作流提供了一種直觀的能力,可以從算法概念躍進到物理機器上實際實現,又不會失去對需要完成事務的控制,提供了決定“如何”執行的自由。工作流可以抽象為具有任務節點(即活動)和流程(即任務節點之間的轉換)的網絡。黃達毅討論了基于工作流應用程序的優勢,如靈活性、集成性和可重用性。所有工作流管理系統都具有以下特征:
(1)使用建模工具或語言將應用程序從復雜的過程定義中分離出來;
(2)有一個核心引擎,可以自動驅動有向無環圖形(DAG),而無需用戶考慮其復雜性;
(3)具有可擴展的接口。
本文作者在傳統工作流的基礎上提出了錨點的概念,通過錨點來對工作流輸入輸出數據的個數和類型進行定義,嚴格控制任務節點之間數據傳遞的規范和輸入輸出錨點之間對應關系以保證工作流的順利執行。不同的角色在系統中有不同的責任,開發人員致力于開發一個可擴展的框架,包括故障預測實驗建模和工作流流程調度。部署工程師專注于利用組件組合管理進行實驗建模,并設置組件參數。用戶可以自定義實驗模型或對已有模型進行調參。
由于故障預測系統的復雜性,很難在單一模型中討論所有信息,因此提出用實驗模型庫、資源庫和工具庫3個庫組成系統模型。對系統進行形式化定義并對系統的運行流程進行描述。系統架構如圖1所示。

圖1 系統架構
實驗模型庫是該系統最重要的庫。每一個故障預測實驗都可以配置全局屬性,每一個實驗對應一個實驗流程定義,所有不同的流程定義組成了故障預測的實驗模型庫。每一個實驗流程定義都由一系列組件和描述它們之間邏輯關系的有向弧所組成。一個故障預測實驗流程定義是由一個DAG來描述的,DAG還包括一些典型的邏輯節點,如分叉/連接邏輯。
對于每一個組件,有4種描述:屬性定義、行為腳本、資源映射和錨點。
(1)屬性定義。每個活動的屬性定義分為靜態和非靜態的。前者是指在實驗流程中不會改變的屬性,在系統中,這類屬性被定義為特征值、目標值等;后者是指那些在運行時值會動態改變的屬性,這類屬性被定義為實際開始時間、完成時間和執行狀態等。
(2)行為腳本指組件被調用后產生的活動。提供一些資源(如數據預處理和算法資源)具體操作的入口,通過shell、sql、python等腳本來對相應的資源進行操作。
(3)資源映射指流程中每個活動的資源分配。資源映射在連接實驗模型庫和工具庫中起著重要的作用。資源映射為計劃和調度提供了資源訪問的方法,這種映射是訪問數據源、算法和評估等資源的橋梁。這些資源模型將在資源庫中討論。
(4)錨點鑲嵌在組件上下兩端,用于連接有向弧,作為組件的輸入和輸出接口。每個組件除了根據DAG有向圖順序執行外,還存在數據傳輸。上一個組件向下一個組件傳遞數據,用輸出錨點表示,鑲嵌在組件的下端;下一個組件接收上一個組件傳遞的數據,用輸入錨點表示,鑲嵌在組件的上端。錨點的數量決定了組件可輸入輸出數據集的個數,錨點的類型決定了組件可輸入輸出數據集的內容形式。
故障預測系統資源管理是一個真正復雜的過程。資源庫總體上可分為以下幾種:
(1)數據源資源。儲存故障預測實驗所需數據,通過自定義創建表生成數據源資源,可分為3個步驟:①創建表,分為可視化和sql命令創建(類似于數據庫可視化工具Navicat);②導入數據,選擇文件導入數據,支持.txt和.csv的文件格式;③生成數據源資源,導入數據成功匹配對應表字段類型和字段個數即可成功生成數據源資源。
(2)數據預處理資源。提供一些對數據進行處理的方法,處理后輸出目標數據。真實場景中的數據往往是混亂和雜亂無章的(數據缺失、重復、值為空等),對挖掘出數據中的有效信息造成了困擾,因此需要采取一些數據處理方法提高數據的質量。目前系統提供了類型轉換、拆分、歸一化、缺失值填充、標準化等方法。
(3)算法資源。通過shell、sql、python等腳本可選擇性調用不同的算法庫。這些算法庫包含了二分類、多分類、聚類、回歸等常見算法,通過輸入符合算法模型要求的數據后可成功運行。以多分類中的邏輯回歸多分類算法為例,輸入目標數據源,對它進行字段設置,如選擇特征列、標簽列,配置完成即可運行,最后輸出預測結果。
(4)評估資源。提供對實驗模型輸出的預測結果表進行評估的方法。有二分類評估、回歸模型評估、聚類模型評估、混淆矩陣及多分類評估等方法。涉及到的評價指標如表1所示,涉及的曲線有ROC-AUC曲線、PRC曲線和KS曲線等。

表1 評價指標
表1中:為異常樣本數;為正常樣本數;為被正確檢測為異常的樣本數;被正確檢測為正常樣本數;被錯誤檢測為異常的樣本數;被錯誤檢測為正常的樣本數;為觀察到的符合比例;為由隨機產生的符合比例。
(5)實驗模型資源。每一個實驗模型都會進行保存。每份資源有部署狀態和非部署狀態兩種,在部署狀態下,可通過遠程調用接口來進行故障預測實驗訓練;在非部署狀態下可對實驗模型進行調參優化。
(6)模板資源提供了一些SQL和算法腳本的基本使用模板,以及針對組件錨點與有向弧之間一一對應動態模板的定義。
工具庫提供了整個系統完美運行所需要的工具。這些工具的功能如下:
(1)實驗建模是一個可以直觀繪制出DAG模型的可視化建模工具,這個工具使得實驗建模更容易理解。通過圖形元素組成真實的實驗過程,如串行過程、并行過程和復雜過程。表2所示為實驗建模管理中的主要圖形元素。表3所示為不同實驗流程結構的不同建模過程。
(2)流程調度是一個軟件程序。它包含DAG模型的調度信息,例如何時開始執行給定的流程步驟以及要使用的資源,根據資源映射和當前的實際能力提供準確的資源。然而,關于調度器如何使用現有算法的問題不在文中討論范圍之內。
(3)引擎是工作流領域的核心部分,它驅動實驗模型執行的整個過程。通過ECA機制,可以在實驗模型執行過程中實現數據收集和狀態反饋的功能。

表2 圖形元素

表3 各流程結構建模過程
實驗模型、資源和工具是組成此系統的基本元素,也是系統運作流程中數據的載體。為更清楚地描述系統整體架構,對整個系統做如下定義:
定義1:系統框架定義
架構F=(Models,Resources,Tools)其中:
(1)Modles={modle|modle=(Element,Transit),=1,2,…,}是所有故障預測實驗模型的集合;Element={element∈element∪element∪element∪element,,=1,2,…,}是所有組件的集合;Transit={transit|=1,2,…,}是所有有向弧的集合;
(2)Resources={resource|=1,2,…,}是系統提供所有資源的集合;
(3)Tools={tool|=1,2,…,}是系統提供所有工具的集合。
定義2:數據對象定義
(1)組件Desp(element)={ID,Name,Property,Resource_id,Anchors,Script,Status},即每一個組件都具有獨一無二的ID、名稱、屬性、資源、錨點、執行腳本、當前狀態;
(2)錨點Desp(anchor)={ID,Type,Data},即每一個錨點都具有獨一無二的ID、類型、接口數據。
(3)有向弧Desp(transit)={ID,Anchor_start_id,Anchor_end_id,},即每一個有向弧都具有獨一無二的ID、起始錨點、終止錨點;
(4)資源Desp(resource)={ID,Name,Type,Script,Params},即每一個資源都具有獨一無二的ID、名稱、類型、腳本、參數。
通過闡述實驗模型從構建到完成部署的過程來說明故障預測系統的運行流程,并對其中的步驟進行描述。系統運行流程如圖2所示。

圖2 系統運行流程
本文作者基于國內某發動機制造廠商的鑄造車間進行研究。通過長時間觀察和了解,發現該鑄造車間設備的正常運行是通過維修人員定時檢修或故障后維修的方式保證的,這種傳統的維修方式造成了大量人力和物力的浪費。在如今智能化的大環境下,有必要建立一個故障預測系統去提高該車間在設備維護方面的水平。
表干爐設備是通過循環風機將燃燒室中的熱氣送入爐內,再對運行在錕道上的浸涂砂芯進行射流烘干的。一般反映表干爐設備是否能正常工作的參數有4個,如表4所示。

表4 影響參數
從現場了解到,該車間會根據這4個因素,按照某些評估方法對表干爐設備每周進行1次健康狀態評估,并會給該設備的健康狀態進行等級劃分,如表5所示。結合在該車間現場采集表干爐設備的歷史數據,從中選取近3年數據作為訓練樣本(150組進行健康狀態評估過的數據)。

表5 設備健康等級
表干爐設備的故障預測實驗建模分為以下幾個步驟:(1)通過導入文本數據的方式導入表干爐數據源,使原始數據成為單一的數據源組件,拖到畫布中進行實驗建模;(2)健康等級轉換組件調用數據預處理資源中類型轉換方法,使用SQL腳本對原始數據進行類型轉換,將健康等級轉換為數字表示;(3)特征值歸一化組件調用數據預處理資源中的歸一化方法選擇訓練特征列(此處的特征列為表4中的4個參數)進行歸一化處理;(4)訓練拆分組件調用數據預處理資源中的拆分方法對處理后的數據按0.8的比例來拆分為訓練數據和預測數據,訓練數據作為回歸算法訓練錨點輸入,預測數據輸出到故障預測組件的第2個輸入錨點;(5)回歸算法訓練組件屬性定義選擇訓練特征列和目標列,調用算法資源中的邏輯回歸多分類方法對拆分后的訓練數據進行回歸訓練,將訓練結果輸入故障預測組件第1個輸入錨點;(6)故障預測組件調用算法資源中的預測資源,字段設置選擇特征列,將結果輸入到預測結果評估組件調用評估資源即可進行預測結果評估,設置原分類結果列和預測分類結果列后點擊模型運行,運行成功與否組件右邊會有狀態展現,成功即可查看預測結果。系統界面如圖3所示。

圖3 系統界面
表6所示為預測結果(此處僅展現了10條數據),每一條數據由其原結果和進行預測后的評價屬性值組成(輸出結果、輸出分數、輸出詳細)。表6中清晰、直觀地給出了預測結果。

表6 預測結果
模型評估報告分為混淆矩陣、比例矩陣、統計信息、總覽四部分,分別如圖4、圖5、表7、表8所示。總覽通過精度、Kappa系數和宏平均(MacroAveraged)對所有類別進行總體分析,而統計信息是對每個類別分別進行指標分析。混淆矩陣和比例矩陣通過矩陣圖像來反映分類結果的精準。由表8所示的模型評估報告總覽可以看到精確率達到了93.33%,驗證了該模型故障預測的可行性。

圖4 混淆矩陣 圖5 比例矩陣

表7 統計信息

表8 模型評估報告總覽
將該模型進行部署,通過Postman調用生成的接口進行測試,輸入生成的Token和需要預測的數據:
[{″main_tmpt″:213,″:3.5,″air_volume″:34}]
得到如下形式的預測結果:[{″ifhealth″:3}]。
本文作者采用基于改進工作流的可視化建模思想設計構建了故障預測系統。系統整個架構分為3個模塊,對實驗模型庫進行了介紹,重點對組件的組成進行了詳細描述,提出了錨點的概念;對系統的資源做出了介紹,將系統的資源劃分為幾個部分以降低復雜度,對每一部分的資源進行了詳細描述;介紹工具庫,著重對可視化建模的圖形結構和流程形式進行了討論;對系統進行形式化定義,描述系統的數據資源與模塊的相互作用關系,并對系統的運行流程進行了詳細描述。通過對表干爐設備進行故障預測實驗及分析,證實了該系統架構設計的可行性。