1. 程式人生 > >機器學習中,什麼是預測性維護,常見技術有哪些

機器學習中,什麼是預測性維護,常見技術有哪些

本文要點:

  • 學習預測性維護系統(PMS),監控未來的系統故障並提前安排維護時間表
  • 探討如何構建機器學習模型進行系統的預測性維護
  • 瞭解機器學習的處理步驟,如選擇模型以及用Auto-Encoder技術去除感測器噪聲
  • 瞭解如何訓練機器學習模型,並在WSO2複雜事件處理器產品中執行模型
  • 應用例子,在NASA引擎故障資料集上用迴歸模型來預測剩餘使用壽命(RUL)

在日常生活中,我們依賴於很多系統和機器。我們要開車出門、乘坐電梯或者搭乘飛機。渦輪能產生電,醫院裡的機器能讓我們活著。這些系統會發生故障。有些故障只是給人的生活帶來不方便,而有些故障則生死攸關。

當風險很高的時候,我們要對系統進行常規性維護。譬如,車每幾個月保養一次,飛機每天保養一次。但是,如同我們在此文後面所討論的那樣,這些方法導致資源的浪費。

預測性維護能預測故障,採取行動來維修、更換系統,甚至計劃何時出現故障。它能極大地節省開銷、帶來高的可預測性和增強系統的可用性。

預測性維護有兩種形式來節省開銷:

  • 避免或最小化故障停機時間。它會避免出現對故障停機不滿意的客戶,省錢,有時候還能挽救生命。
  • 優化週期性的維護操作。

為了瞭解這些,我們來看看出租車公司。如果一輛計程車壞了,該公司需要安慰不滿意的顧客並派出替換的車輛,而該計程車和司機在維修期間都將閒著。故障的代價要遠高於表面上的代價。

解決這個問題的一種方法是,做一個消極者,在出現故障之前就更換不可靠的元件。譬如,進行常規的維護操作,如更換機油或輪胎。儘管常規維護比出現故障好,但是我們會在系統真正需要維護之前就進行維護。因此,這不是一個最佳的解決辦法。比如,每跑3000英里就換一次機油,不一定能有效地使用機油。如果我們能更準確地預測故障,那麼該計程車可以跑幾百英里而不用換油。

預測性維護避免了兩種極端,最大化地利用資源。它將檢測異常和故障模式,早早地給出警報。這些警報能促使人們更有效地維護這些元件。

在這篇文章中,我們將探討如何構建一個用於預測性維護的機器學習模型。下一章節討論機器學習技術,隨後討論例子中的NASA資料集。第四和第五章節討論如何訓練機器學習模型。“用WSO2 CEP執行模型”這一章節涵蓋了如何將模型應用於實際資料流上。

用於預測性維護的機器學習技術

為了進行預測性維護,首先,我們向系統中加入了感測器,用於監控和收集系統執行的資料。預測性維護所需要的資料是時間序列資料。資料包括時間戳、在該時間戳所收集的感測器讀數以及裝置號。預測性維護的目的是,在時間“t”,使用截至到該時間的資料來預測裝置在近期是否會發生故障。

預測性維護可通過以下兩種方法之一來實現:

  • 分類方法 – 預測在接下來的n步中是否有可能發生故障。
  • 迴歸方法 – 預測在下次故障發生之前的剩餘時間。我們稱之為剩餘使用壽命(RUL)。

前一種方法只能提供一個由布林值表示的答案,但是能從很少的資料上獲得很高的準確率。後一種方法可以提供關於故障發生時間的更多的資訊,但也需要更多的資料。我們將在NASA引擎故障資料集上嘗試這兩種方法。

Turbofan引擎退化資料集

Turbofan引擎是一種現代的汽油渦輪引擎,NASA空間探索局用的就是這種引擎。NASA生成了下面的資料集來預測Turbofan引擎執行一段時間後的故障。可以從PCoE資料集獲得該資料集。

資料集包括每個引擎的時間序列。所有的引擎都是同一型別,但在製造過程中,每個引擎的初期的磨損程度和差異是不同的,這一點使用者是不知道的。有三種可選的配置,可用於改變每個引擎的效能。每個引擎有21個感測器,當引擎執行時,感測器收集與引擎狀態相關的測量資料。收集到的資料中有一些感測器噪聲。

逐漸地,每個引擎會有一些不足,這些可以從感測器讀數中發現。時間序列在發生故障前的某個時間結束。資料包括引擎單元號、時間戳、三種配置以及21個感測器讀取的資料。

下面圖1和圖2顯示了資料的子集。

大資料

圖1:資料子集

大資料

圖2:資料子集的前幾列

該實驗的目的是預測下一次故障發生的時間。

用迴歸來預測剩餘使用壽命(RUL)

預測RUL的目標是減小實際RUL值與預測RUL值之間的誤差。我們用均方根誤差作為衡量值,因為它會嚴厲地懲罰大的誤差,迫使演算法預測結果接近實際RUL。

大資料

第一階段:下面的管道描述了預測過程。作為第一個階段,我們執行管道中的幾個突出的步驟,大致瞭解下可行性。我們沒有執行特徵工程,而是在原始資料上執行演算法。

第1階段:選擇模型

下面的圖3顯示了預測性維護的模型選擇管道。這裡只用到了深顏色的管道步驟。

大資料

圖3:用於模型選擇的預測性維護管道

我們用到了scikit learn和H2O中的很多回歸演算法。關於深度學習,我們用到了H2O中的深度學習演算法,它既可以用於分類應用,也可以用於迴歸應用。該演算法基於多層結構的前饋神經網路,用後向傳播的隨機梯度下降法來訓練神經網路。

下面圖4顯示了結果。模型可以產生25-35的均方根誤差,也就是說,RUL將有約25-35時間步長的誤差。

大資料

圖4:模型選擇的均方根誤差

下面的幾個步驟,我們將集中在深度學習模型上。

第2階段:用Auto-Encoder去除感測器噪聲

下圖5顯示了帶去噪功能的預測性維護管道。這裡只用到了深顏色的管道步驟。

大資料

圖5:用於模型選擇的預測性維護管道

一般而言,感測器讀數含有噪聲。軟體中自帶的ReadMe檔案證實了這一點。因此,我們用autoencoder來去除噪聲。Autoencoder是一種簡單的神經網路,它用同一個資料集作為網路的輸入和輸出來訓練模型,網路的引數個數少於資料集的維度。這與主成分分析(PCA)(http://setosa.io/ev/principal-component-analysis/)非常類似,在PCA中,資料被表示為它的幾個主要維度。由於噪聲的維度要遠高於常規資料,該過程能降低噪聲。

我們用到了有三個隱藏層的H2O Auto-encoder和下面的標準來去除噪聲。

去除噪聲後,均方根誤差降低了2。

大資料

表1:去除噪聲前後的均方根誤差

第3階段:特徵工程

下面的圖6顯示了預測性維護的特徵工程管道。這裡只用到了深顏色的步驟。

大資料

圖6:用於模型選擇的預測性維護管道

在這一步,我們嘗試了很多特徵,保留了最有預測能力的特徵子集。我們用到的資料集是時間序列資料集,因此感測器讀數是自相關的。因此,在時間“t”時的預測很有可能受到“t”之前的某些時間窗的影響。我們用到的大多數特徵都是基於這些時間窗的。

在第三章節中,我們討論了資料集含有21個感測器的讀數。更多的細節資訊可參看與資料集一起提供的ReadMe檔案。經過一些實驗之後,我們只用到了感測器2、3、4、6、7、8、9、11、12、13、14、15、17、20和21。對於每一個被選中的感測器,我們通過運用以下方法來生成特徵:滑動標準差(視窗大小是5)、滑動k-最近平均值(視窗大小是5)以及視窗內的概率分佈(視窗大小是10)。

我們試過其他某些特徵但最終沒有使用它們,包括:滑動平均值、自相關、直方圖、滑動熵和滑動加權平均值。

這些特徵使得均方根誤差降低了1。

大資料

表2:特徵選擇前後的均方根誤差

第4階段:用網格搜尋來優化超引數

圖7顯示了帶超引數優化的預測性維護管道。這裡只用到了深顏色的管道步驟。

大資料

圖7:用於模型選擇的預測性維護管道

超引數控制演算法的行為特點。在最後一步,我們優化了如下的超引數:迭代次數、分佈、啟用函式以及隱藏層的個數。每個引數的詳細描述可以參看H2O文件。我們用網格搜尋找到最好的引數,結果如下表所示。

大資料

Table 3:不同超引數下的均方根誤差

如結果所描述的,超引數優化將均方根誤差減小了3。在剩餘誤差直方圖(圖8)中,可以看見誤差收斂到“0”。過早預測和過遲預測的頻率都被最小化了。

大資料

圖8:用於模型選擇的預測性維護管道

構建模型來預測後N步的故障

在這個方法中,我們將預測某機器是否會在接下來的30次迴圈中發生故障,而不是預測它的剩餘壽命長短。我們將有故障的狀態看作正面的(P),沒有故障的狀態看作正常的(N)。我們執行一個深度學習分類模型,用到了同樣的特徵工程和去噪過程。圖9給出了結果。

混淆矩陣

大資料

圖9:用於模型選擇的預測性維護管道

準確率(accuracy)描述了有多大比列的測試資料被正確地預測了。它給出了準確預測的測試案例的個數與測試案例總個數的比列。

大資料

如果類的分佈不均衡,那麼僅僅考慮準確率會誤導人。在資料集中,當同一個類被過分表示時,就會出現不均衡的類分佈。這種情況下,有些模型可能有很高的準確率但很差的預測效能。

為了避免這個問題,我們用查準率(precision)和查全率(recall)作為衡量標準。查全率是被正確預測的正面類的個數與所有實際為正面類的資料的個數的比例。

大資料

查準率被定義為一個模型能預測正面類的能力。它是被正確預測的正面類的個數與所有被預測為正面類的資料的個數的比列。

大資料

F1分數用於衡量測試的準確率。查準率和查全率都被用於該分數的計算中。

大資料

關於準確率、查全率、查準率和F1分數,最好是值接近1,訓練的模型才有很好的效能。

用WSO2 CEP執行模型

在處理儲存在磁碟上的資料時,我們用批處理的形式來構建模型。然而,為了運用模型,我們需要在執行時向模型輸入可用的資料。資料的處理被稱為“流處理”。我們用流處理引擎WSO2 CEP來運用模型。

我們用H2O來構建模型。H2O能將模型匯出為兩種格式中的一種:POJO(簡單Java物件)或MOJO(優化的模型物件)。前者需要被編譯而後者可以直接使用。我們用了CEP中的MOJO模型。

為了評估模型,我們用到了WSO2 CEP中的一個擴充套件。WSO2使用一種類似於SQL的查詢語言來處理資料流中的資料。

如圖10所示,一個複雜的事件處理系統接收事件流資料,並用一種類SQL查詢來評估它們。比如,一個給定的查詢可以計算一個一分鐘滑動視窗的stockQuotes流,將其與一分鐘視窗的Tweets流連線,併發送一個事件到PredictedStockQuotes流。

大資料

圖10:用於模型選擇的預測性維護管道

用CEP評估模型的查詢例子如下面所示。

from data_input#h2opojo:predict('ccpp/DRF_model_python_1479702792496_1')

select T, V, AP, RH, prediction

insert into data_output

下面的圖11顯示了整個管道,包括訓練步驟和評估步驟。

大資料

圖11:用於模型選擇的預測性維護管道

該查詢取走送到“資料輸入”流的事件,並運用機器學習模型。運用機器學習模型包括下面幾個步驟:

  1. 用“第3階段:特徵工程”章節中所描述的預處理步驟對事件資料進行預處理,並生成特徵集
  2. 用生成的特徵集來評估機器學習模型。
  3. 返回結果

結論

預測性維護的主要目的是預測裝置可能發生故障的時間。然後採取相關行動來預防這些故障。預測性維護系統(PMS)監控未來的故障並提前安排維護時間。

這些能降低一些成本。

  • 減少維護頻率。
  • 最小化花在某個被維護的裝置上的時間,更充分地利用時間。
  • 最小化維護費用。

本文探討了預測性維護的不同方法,使用了不同的迴歸和分類演算法。而且,本文一步步地展示了調整這些模型的技術。我們的最終解決方案在預測剩餘使用壽命上的RMSE值是18.77,在預測後N(30)步內可能出現故障上的準確率是94%。