[譯]機器學習技術用于預測性維護

英文原文鏈接:https://www.infoq.com/articles/machine-learning-techniques-predictive-maintenance
作者:Srinath Perera,Rosha Alwis 審閱:Srini Penchikala

關鍵摘要

  • 了解預測性維護系統(PMS),以便監控日后的系統故障并提前安排維護工作
  • 探討如何構建機器學習模型來預測系統維護
  • 機器學習過程和步驟,如模型選擇和使用自動編碼器消除傳感器噪聲
  • 如何訓練機器學習模型,并使用WSO2 CEP產品運行模型
  • 使用NASA發動機故障數據集和回歸模型預測剩余使用壽命(RUL)的示例應用程序

我們每天依賴許多系統和機器。我們開車去旅游,乘電梯上下樓,坐飛機出行;電力經由渦輪機傳送,醫院的機器維持著病人的生命。而這些系統都有可能故障。有的故障只是帶來不便,而有的故障則關乎生死。
當風險較高時,我們會定期對系統進行維護。例如,汽車會每隔幾個月進行一次維護,而飛機則要每天維護。但是,正如本文稍后將會詳細討論的,這些方法會導致資源浪費。
預測性維護對故障進行預測,采取的措施可能包括糾正措施、系統置換,甚至是計劃故障。這樣可以節省大量成本,提高可預測性并提升系統的可用性。

預測性維護節省成本有以下兩種形式:

  • 避免或盡量減少停機時間。這將避免不愉快的客戶、省錢,有時甚至能挽救生命。
  • 優化定期維護操作。

為了理解這個過程,我們可以設想一個出租車公司。如果一輛出租車出現故障,出租車公司需要安撫一個生氣的客戶,更換故障部件,而且出租車和司機在維修期間都無法提供服務。這個故障造成的損失遠大于故障本身的花費。
解決這個問題的其中一種方法是更悲觀一些,在故障出現以前就早早地把可能會故障的部件更換掉。例如,通過定期維護操作來解決這個問題,比如定期更換發動機機油或者定期更換輪胎。雖然定期維護比發生故障好,但我們可能會在需要維護之前就進行維護。因此這不是最佳解決方案。例如,每3000英里就更換汽車的機油可能導致機油沒有被充分使用。如果我們能夠更好地預測故障,那么這輛出租車在更換機油之前可能還可以再多行駛幾百英里。
預測性維護避免了極端情況并能最大限度地利用資源。預測性維護將檢測異常和故障模式,并提供預警。這些警告可以使這些部件得到有效的維護。
在這篇文章中,我們將探討如何構建一個機器學習模型進行預測性維護。下一節將討論機器學習技術,接著討論我們將用作示例的NASA數據集。第四節和第五節將討論如何訓練機器學習模型。“使用WSO2 CEP運行模型”這一節會介紹如何將模型與現實世界的數據流一起使用。

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

要進行預測性維護,我們首先向系統添加傳感器,以監控和收集有關其操作的數據。用于預測性維護的數據是時間序列數據。數據包括時間戳,與時間戳同時收集的一組傳感器讀數以及設備標識符。預測性維護的目標是在“t”時刻,通過到“t”時刻為止的數據,預測設備是否在不久的將來會出現故障。

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

前一種方法僅提供一個布爾值答案,但可以使用較少的數據提供更高的準確性。后者需要更多的數據,盡管它可以提供有關何時發生故障的更多信息。我們將使用NASA發動機故障數據集來探討這兩種方法。

Turbofan發動機老化數據集

Turbofan發動機是NASA太空探測機構使用的現代燃氣渦輪發動機。NASA創建了以下數據集,以預測Turbofan發動機隨時間推移可能出現的故障。這些數據集可以在PCoE數據集中找到。
數據集中包括每臺發動機的時間序列。所有的發動機都是相同類型的,但是每臺發動機一開始會有不同程度的初始磨損和制造過程帶來的變量,這些對用戶來說是未知的。有三個可選設置項可以用來改變每臺發動機的性能。每臺發動機都有21個傳感器在運行時收集與發動機狀態相關的不同測量參數。收集的數據會被傳感器噪聲污染。
隨著時間的推移,每臺發動機都會發生故障,這可以通過傳感器讀數看出來。時間序列在故障前一段時間結束。記錄的數據包括(發動機)編號、時間戳、三個設置項和21個傳感器的讀數。
如下圖1和圖2所示為數據的子集。

圖1:數據子集
圖2:數據子集的前幾列

這個實驗的目的是預測下一次故障何時發生。

使用回歸模型預測剩余使用壽命(RUL)

預測RUL時,目標是減少實際RUL與預測的RUL之間的誤差。我們將使用均方根誤差,因為它會嚴厲地懲罰大誤差,這將使算法預測的RUL盡可能接近實際RUL。

階段1:以下流程圖展示了預測的過程。作為深入了解的第一步,我們只運行了其中高亮顯示的步驟。我們在原始數據上運行算法,沒有執行任何特征工程。

階段1:模型選擇

下圖3顯示了包含模型選擇的預測性維護流程圖。這里僅用到了流程圖中深色標記的步驟。


圖3:包含模型選擇的預測性維護流程圖

我們使用了scikit learnH2O中的一系列回歸算法。對于深度學習,我們使用了H2O的深度學習算法,這個算法在分類和回歸方法中都可以使用。它基于使用反向傳播隨機梯度下降算法訓練的多層前饋神經網絡。
結果如下圖4所示。不同預測模型可以得到約25-35的均方根誤差(RMSE),這意味著預測RUL與實際RUL將有大約25-35個時間步長的誤差。

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

下一步我們將重點關注H2O深度學習模型。

階段2:使用自動編碼器消除傳感器噪聲

下圖5顯示了包含噪聲消除的預測性維護流程圖。這里僅用到了流程圖中深色標記的步驟。

圖5:包含噪聲消除的預測性維護流程圖

傳感器讀數通常會有噪聲。發行版隨附的ReadMe文件證實了這一點。因此,我們使用自動編碼器去除噪聲。自動編碼器是一種簡單的神經網絡,它使用同一套數據集同時作為網絡的輸入和輸出進行訓練,其中網絡中的參數比數據集中的維數少。這與主成分分析(PCA)(http://setosa.io/ev/principal-component-analysis/)工作原理非常相似,其中數據以其主要維度表示。由于噪聲的維度比常規數據高得多;這個過程減少了噪聲。
我們使用具有三個隱藏層的H2O自動編碼器和以下標準來消除噪聲。
消除噪聲將均方根誤差減少了2個時間步長。
表1:未消除噪聲和消除噪聲后的均方根誤差

階段3:特征工程

下圖6顯示了包含特征工程的預測性維護流程圖。這里僅用到了流程圖中深色標記的步驟。

圖6:包含特征工程的預測性維護流程圖

在這一步中,我們嘗試了許多特征,并保留了最具預測性的特征子集。我們的數據集是一個時間序列數據集,因此讀數是自相關的。所以“t”時刻的預測可能會受到“t”之前的某個時間窗口的影響。我們使用的大多數特征都是基于這些時間窗口的。
如第3節所述,數據集包括21個傳感器的讀數。我們可以從數據集提供的ReadMe文件中找到有關讀數的更多詳細信息。經過測試,我們僅使用傳感器2、3、4、6、7、8、9、11、12、13、14、15、17、20和21的數據。對于選擇的每個傳感器,我們通過應用移動標準差(窗口大小為5),移動k-closest平均值(窗口大小為5)以及具有窗口大?。ù翱诖笮?0)的概率分布來生成特征。
我們嘗試了但在最終解決方案中未使用的其他特征包括:移動平均值、自相關、直方圖、移動熵和移動加權平均值。
通過特征選擇將均方根誤差減少了1個時間步長。
表2:未包含特征工程和包含特征工程的均方根誤差

階段4:使用網格搜索優化超參數

下圖7顯示了包含超參數優化的預測性維護流程圖。這里僅用到了流程圖中深色標記的步驟。


圖7:包含參數優化的預測性維護流程圖

超參數控制了算法的行為。在最后階段,我們優化了以下超參數:epochs、distribution、activation和hidden layer size。你可以從H2O文檔中找到每個參數的詳細說明。我們使用網格搜索(Grid Search)尋找最佳參數,下表總結了結果。


表3:使用不同超參數的均方根誤差

如結果所示,超參數調整將均方根誤差減少了大約3個時間步長。在殘差直方圖中,可以看到殘差收斂到了“0”。預測過早和預測過晚的頻率被最小化了。


圖8:殘差直方圖

建立在后續N個步驟中預測故障的模型

這種方法不再提供剩余的生命周期數,而是要預測機器是否會在接下來的30個周期內故障。我們會將故障視為正(positive,P),而無故障視為常態(normal,N)。我們使用相同的特征工程和噪聲消除過程來運行深度學習分類模型。結果如圖9所示。

混淆矩陣

圖9:混淆矩陣

準確率描述了預測正確的測試用例所占的百分數。它給出了預測正確的測試用例數與所有測試用例數的比例。



如果類不平衡,只考慮準確率將會產生誤導。當數據集中同一類別數據量太多以致不成比例時,就會發生類不平衡。發生類不平衡時,一些模型可能具有高準確率,但預測性能差。
為了避免這個問題,我們使用精確率和召回率。召回率指的是預測為正值的樣本數和應該被預測為正值的樣本數之間的比例。


精確率被定義為模型預測正值的能力。它指的是預測為正值且實際也是正值的樣本數和所有被預測為正值的樣本數之間的比例。


F1分數是衡量準確率的指標。計算F1分數時需要兼顧精確率和召回率。


對于準確率、召回率、精確率和F1分數,它們的值越接近1越好。

使用WSO2 CEP運行模型

我們在批處理模式下構建模型,處理存儲在磁盤中的數據。但是,要應用模型,我們需要在數據可用時將數據提供給運行中的模型。我們將數據的處理過程稱作“流處理”。我們使用流處理引擎WSO2 CEP來應用該模型。
我們使用H2O構建了模型。H2O可以以兩種格式之一導出模型:POJO(簡單的Java對象)或MOJO(模型對象,經過優化)。前者需要編譯,后者可以直接使用。我們使用了CEP的MOJO模型。
為了評估模型,我們使用了WSO2 CEP中的擴展。WSO2使用SQL查詢語言處理數據流中的數據。
如圖10所示,復雜事件處理系統接收數據作為事件流,并通過一組SQL查詢進行評估。例如,通過給定的查詢語句可以計算一分鐘窗口內的stockQuotes流,并在給定條件下將其與一分鐘窗口內的Tweets流合并,然后將事件發送到PredictedStockQuotes流。

圖10:WSO2 CEP流處理過程

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

from data_input #h2opojo:predict('ccpp/DRF_model_python_1479702792496_1')
select T, V, AP, RH, prediction
insert into data_output 

下圖11顯示了包括訓練步驟以及評估步驟的整體流程圖。


圖11:整體流程圖

通過查詢將事件發送到“data input”流,并應用機器學習模型。應用機器學習模型包括以下步驟:

  1. 將“階段3:特征工程”一節中描述的預處理步驟應用于事件中的值并創建特征
  2. 使用生成的特征評估機器學習模型
  3. 返回結果

小結

預測性維護的主要目標是預測何時會發生設備故障。然后通過采取相關措施防止故障發生。預測性維護系統(PMS)監控未來可能發生的故障,并提前安排維護工作。
這將帶來以下幾項成本節?。?/p>

  • 降低維護頻率。
  • 最大限度地減少維護特定設備所花費的時間,并使時間利用效率更高。
  • 最大限度的減少維護成本。

本文探討了進行預測性維護的不同方法,包括不同的回歸和分類算法。此外,本文還介紹了許多用于調整模型的技術。我們的最終解決方案預測RUL(剩余使用壽命)得到的均方根誤差(RMSE)為18.77,而預測在后續N(30)個步驟中出現故障的概率則達到了94%的準確率。
以上技術需要大量的訓練數據,包括足夠多的故障場景。由于故障很少見,數據收集可能要花很長時間。這一點仍然是應用預測性維護的一大障礙。

參考資料

  1. Deep Learning with H2O
  2. PCoE Datasets
  3. A Simulation Study of Turbofan Engine Deterioration Estimation Using Kalman Filtering Techniques
  4. Predictive maintenance

關于作者

Srinath Perera是一名科學家、軟件架構師,也是分布式系統的程序員。他是Apache Axis2項目的共同創始人,也是Apache Software基金會的成員。他是WSO2復雜事件處理引擎的聯合架構師。Srinath撰寫了兩本關于MapReduce的書籍和許多技術文章。2009年他在美國印第安納大學獲得博士學位。
Roshan Alwin是莫拉圖瓦大學計算機科學與工程系的班級代表(CSE 13)。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容