检测时间序列数据出现偏差的时间

数据挖掘 机器学习 Python 深度学习 时间序列 异常检测
2022-03-04 07:54:22

我研究多元时间序列数据。我每次操作机器时都会生成传感器数据。数据集由 machine_ID(相同型号的机器)、操作小时数、来自各种传感器的测量值组成。机器在运行若干小时后开始退化。我想找出在发生阶跃变化之后性能开始下降的几个小时。

我想最好使用机器学习方法来做到这一点,并想绘制标记偏差的图表。哪些机器学习技术可以用于这种方法。

这是从运行到失败的值“传感器 2”的图

数据快照

我已经进行了探索性数据分析,在那里我可以找到发生偏差的点。现在,我想通过运行模型来检测阶跃变化的发生来确认这一点。在上图中,下降从 100 开始,然后逐渐下降。现在,有什么办法可以通过模型找到这品脱。

我非常感谢任何处理此问题的链接或建议。

提前致谢。

3个回答

AnomalyDetection是一个开源的 R 包,用于检测异常,从统计的角度来看,在存在季节性和潜在趋势的情况下是稳健的。

可以在此处找到介绍该软件包的博文,并且可以在此处找到更正式的论文

您可以将该过程建模为Weibull 分布,这在生存分析和可靠性工程中很常见。已经有使用它来监控系统“健康”的工作,例子在这里这里

我会尝试使用谷歌的 CausalImpact 包。您的用例并不完全是因果推理,但 CausalImpact 依赖于贝叶斯结构时间序列模型(使用 bsts 包),并且有一些很好的默认值,可以让您无需立即深入研究 bsts。

基本上,您将模型拟合到数据的第一部分,然后预测其余部分。您会看到模型偏离预测的位置。使用贝叶斯模型意味着您可以获得误差范围 - 因此您可以对偏差有一定程度的信心。在您的情况下,您可以将“干预”点设置为要将建模数据与预测数据分开的任何时间戳。然后将预测与实际数据进行比较(查找“临近预报”)。

这是一个入门教程,这是一个介绍性视频。