利用时间序列报警数据预测设备故障

数据挖掘 时间序列 随机森林 数据清理 预言
2022-03-09 08:56:39

我正在尝试根据警报数据预测机器故障。

情况:

每年大约有 4000 次机器故障。这些标记很差(它是手动输入的,并且对于同一故障可以有多个名称)。该数据集按以下方式由时间戳、故障名称和故障描述组成。

timestamp, name, description
01/01/2020 - 08:10, Motor Failure, Motor failed due to overheating 

此外,每年大约有 100 万个警报显示可能存在的问题(系统中有 8000 个可能的警报,但激活的 100 万个警报中只有约 1200 个)。警报会在故障点触发,但在很大比例的情况下,有多个相关警报会在手前数周激活,但由于剪切数而无法采取行动。该数据集由时间戳、警报 ID 和警报描述组成,如下所示。

timestamp, alarm id, description
01/01/2020 - 08:10, MFHeatHiHi, Motor temperature critical

请原谅我的无知,因为我是数据科学的新手。我正在尝试找出最好的方法来清理/修改数据,然后在哪些方向上创建预测。如果我以错误的方式进行操作,或者对从哪里开始有错误的想法,请告诉我。

  1. 为相同的事件更新 4000 个具有相同名称的故障(我估计其中大约有 600 个离散故障)。或者我将它们都称为“故障”并仅针对一个变量测试警报,并使用警报描述给我可能导致失败的问题。

  2. 将警报分解到发生故障的时间窗口(可能为 30 天或更短)。然后使用警报 id - 描述作为列,以出现次数作为值。

例如:

Failure timestamp, MFHeatHiHi - Motor temperature critical, FanHeatHiHi - Fan temperature critical,
01/01/2020 - 08:10,                4,                                        3,

然后我想用 R 使用随机森林。

这是正确的方法吗,如果我只使一个变量失败,是删除警报的时间分量并转换为警报数量是正确的方法吗?这是否意味着我需要 8000 列可能的警报。

我很确定我有错误的方法,所以非常感谢一些指导,所以我正朝着正确的方向前进。

谢谢你的帮助,

1个回答

我认为您所描述的将称为异常检测。我建议尝试不同的方法。有几个标准的解决方案来处理这个话题,这里有几个。

要解决的主要问题是:

  1. 设置一个好的阈值来平衡误报和错过的事件。选择模型将影响此设置(请参阅下面的 2 个典型模型)

  2. 正确的标签/响应:如果您有足够多的正确标记的警报示例,您可以查看聚类方法来确定未标记或错误标记示例的正确标签。这将为您提供更大的数据集以用于训练。

  3. 选择型号:

    模型 1:手动 - 使用协方差矩阵
    警报设置进行多变量以减少误报:您可以使用欧几里得(用于球形分布)或更好的 Mahalanobis(用于椭圆形分布)距离和距质心的 Sigma 阈值来确定什么是机器的正常读数,然后设置正常与异常的截止值。

    模型 2:神经网络 - 自动编码
    器 对正常数据进行训练(过滤掉警报数据)并测试新数据,查看模型输出中重构误差的概率分布(高 MAE),并根据输出选择阈值

在线参考(可能需要帐号才能访问):
https ://towardsdatascience.com/how-to-use-machine-learning-for-anomaly-detection-and-condition-monitoring-6742f82900d7