Machine-Learning

預測性維護模型,可在故障發生之前識別故障跡象

  • February 15, 2017

情況

我正在解決一個問題,我正在使用傳感器數據在故障發生之前預測機器故障,我需要一些關於探索哪些方法的建議。

具體來說,我想在故障實際發生之前確定即將發生故障的跡象。理想情況下,這將有足夠的提前期,以便我們可以在導致故障之前修復發生的任何事情。

問題

我遇到的概念障礙是我知道我可以將各種分類模型(邏輯回歸、決策樹、最近鄰等)擬合到數據中,以識別當時給定特定參數的故障概率。但是,我無法弄清楚如何識別即將發生的故障的跡象,並有足夠的時間來實際做一些事情。

可能的方法

我對生存分析很熟悉,但鑑於我沒有來自多台機器的數據,而且在維修後機器並沒有恢復到 100%,我覺得這不一定適合。

我還考慮過花時間發生故障,將其向後移動 1 小時,然後看看我能預測到這一點有多準確。如果可以的話,將目標向後移動一小時,看看我可以自信地預測多長時間。但我不確定這樣做是否合適。

可用數據

我擁有的數據是在 1 年期間從一台機器記錄的。每兩分鐘記錄大約 60 個傳感器。這些傳感器測量變量,例如組成機器的不同組件的溫度(包括恆溫器設置與實際溫度)、機器運行的速度、整個機器的蒸汽壓力、風扇速度、機器是否正在運行, 等等。

除了傳感器讀數之外,我還豐富了數據集以包括機器未運行的原因(例如:換班、預防性維護、故障)。我在這篇文章的底部包含了一個關於數據外觀的精簡示例。我已經更改了示例以捕獲在整個數據集中捕獲的一些變化。實際上,當機器停止運行時,它會停機 2 分鐘到 2 天,具體取決於原因。此外,變量不一定會像下面的示例中那樣快速變化,但我想提供一些變化。

+-----------------+----------+-------------+------------+------------+-------+-------+-----+--------------------------+------------+
|    Datetime     | CircFan  | CircFanAct  | EntrySpeed | ExhaustFan | Speed | Temp1 | Run |          Reason          | TimeBtwRun |
+-----------------+----------+-------------+------------+------------+-------+-------+-----+--------------------------+------------+
| 2009-10-19 0:00 |      100 |         600 |        461 |         40 |    45 |  1126 |   1 |                          | NA         |
| 2009-10-19 0:02 |      100 |         600 |          0 |         39 |    45 |  1120 |   0 | shift change             | 0:00       |
| 2009-10-19 0:04 |      100 |         600 |          0 |         39 |    45 |  1118 |   0 | shift change             | 0:02       |
| 2009-10-19 0:06 |       95 |         600 |        461 |         39 |    45 |  1119 |   1 |                          | 0:00       |
| 2009-10-19 0:08 |       95 |         599 |        461 |         40 |    45 |  1120 |   1 |                          | 0:02       |
| 2009-10-19 0:10 |       95 |         598 |        461 |         40 |    45 |  1120 |   1 |                          | 0:04       |
| 2009-10-19 0:12 |       95 |         597 |        461 |         40 |    45 |  1130 |   1 |                          | 0:06       |
| 2009-10-19 0:14 |      100 |         597 |          0 |         40 |    45 |   699 |   0 | failure                  | 0:00       |
| 2009-10-19 0:16 |      100 |         597 |          0 |         40 |    45 |   659 |   0 | failure                  | 0:02       |
| 2009-10-19 0:18 |      100 |         597 |          0 |         40 |    45 |   640 |   0 | failure                  | 0:04       |
| 2009-10-19 0:20 |      100 |         600 |        461 |         40 |    45 |  1145 |   1 |                          | 0:00       |
| 2009-10-19 0:22 |      100 |         600 |        461 |         40 |    45 |  1144 |   1 |                          | 0:02       |
| 2009-10-19 0:24 |       80 |         600 |        461 |         40 |    45 |  1138 |   1 |                          | 0:04       |
| 2009-10-19 0:26 |       80 |         600 |        461 |         41 |    45 |  1133 |   1 |                          | 0:06       |
| 2009-10-19 0:28 |       80 |         600 |        461 |         41 |    45 |  1134 |   1 |                          | 0:08       |
| 2009-10-19 0:30 |      100 |         600 |        461 |         41 |    45 |  1134 |   1 |                          | 0:10       |
| 2009-10-19 0:31 |      100 |         600 |        461 |         41 |    45 |  1133 |   1 |                          | 0:11       |
| 2009-10-19 0:34 |      100 |         600 |        461 |         40 |    45 |  1140 |   1 |                          | 0:13       |
| 2009-10-19 0:36 |      100 |         600 |        100 |         40 |    45 |   788 |   0 | preventative maintenance | 0:00       |
| 2009-10-19 0:38 |      100 |         600 |        100 |         40 |    45 |   769 |   0 | preventative maintenance | 0:02       |
+-----------------+----------+-------------+------------+------------+-------+-------+-----+--------------------------+------------+

這是一個問得很好而且很有趣的問題。

我有一些疑問 :

  • 您是否已經對您的目標的可行性有所了解?(預計會出現一些故障)您是否確定了預示失敗的變量?
  • 失敗前的典型時間是多少?

我認為研究此類問題的自然方法是使用生存分析。熟悉它會加分!

我會做什麼(儘管我不知道您的問題的所有特殊性):

  • 計算您感興趣的時間變量 () 和事件變量的發生 () :在這一步中,您可以:

    • 將故障時間視為事件
    • 將預防性維護時間視為刪失變量
    • 跳過輪班時間以計算故障時間和審查
  • 在此數據上擬合 Cox 模型:

    • 備註:您有時間更改協變量(此地址有一個關於如何在 Cox 模型中處理時間相關協變量的小插圖:https ://cran.r-project.org/web/packages/survival/vignettes/timedep.pdf )
    • 這一步可能並不容易(我不知道我不是時間相關協變量的專家)。例如,我認為您可能會遇到麻煩,因為您的數據中可能有太多變化點(協變量之一發生變化的時間)
  • 然後,要使用您的模型(看看您是否可以預測將來會發生故障(之前有足夠的時間)),您應該使用您的 Cox 模型:

    • Cox 模型將為您提供風險率的估計值。因此,使用模型可以做的最簡單的事情是在機器運行時計算在線預測,並在危險率超過閾值時決定停止機器)

儘管研究問題的自然方法是使用生存分析,但您可以使用分類方法,尤其是在失敗前的時間很短的情況下(這樣您就可以分析過去的數據,並且不會受到審查的干擾)。在這種情況下,我認為整體方法會非常相似。

給我們一些關於您的問題的反饋!

引用自:https://stats.stackexchange.com/questions/262102

comments powered by Disqus