本文要点:
- 学习预测性维护系统(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:用于模型选择的预测性维护管道
该查询取走送到“数据输入”流的事件,并运用机器学习模型。运用机器学习模型包括下面几个步骤:
- 用“第3阶段:特征工程”章节中所描述的预处理步骤对事件数据进行预处理,并生成特征集
- 用生成的特征集来评估机器学习模型。
- 返回结果
结论
预测性维护的主要目的是预测设备可能发生故障的时间。然后采取相关行动来预防这些故障。预测性维护系统(PMS)监控未来的故障并提前安排维护时间。
这些能降低一些成本。
- 减少维护频率。
- 最小化花在某个被维护的设备上的时间,更充分地利用时间。
- 最小化维护费用。
本文探讨了预测性维护的不同方法,使用了不同的回归和分类算法。而且,本文一步步地展示了调整这些模型的技术。我们的最终解决方案在预测剩余使用寿命上的RMSE值是18.77,在预测后N(30)步内可能出现故障上的准确率是94%。