哪种无监督学习技术可用于时间序列中的异常检测?

人工智能 神经网络 机器学习 无监督学习 时间序列 异常检测
2021-11-15 00:33:03

我已经开始在 Python 中进行异常检测。我的数据集是时间序列数据集。一些传感器正在收集数据,这些传感器记录和收集半导体制造机器上的数据。

我的数据集如下所示:

ContextID   Time_ms Ar_Flow_sccm    BacksGas_Flow_sccm
7289973 09:12:48.502    49.56054688 1.953125
7289973 09:12:48.603    49.56054688 2.05078125
7289973 09:12:48.934    99.85351563 2.05078125
7289973 09:12:49.924    351.3183594 2.05078125
7289973 09:12:50.924    382.8125    1.953125
7289973 09:12:51.924    382.8125    1.7578125
7289973 09:12:52.934    382.8125    1.7578125
7289999 09:15:36.434    50.04882813 1.7578125
7289999 09:15:36.654    50.04882813 1.7578125
7289999 09:15:36.820    50.04882813 1.66015625
7289999 09:15:37.904    333.2519531 1.85546875
7289999 09:15:38.924    377.1972656 1.953125
7289999 09:15:39.994    377.1972656 1.7578125
7289999 09:15:41.94     388.671875  1.85546875
7289999 09:15:42.136    388.671875  1.85546875
7290025 09:18:00.429    381.5917969 1.85546875
7290025 09:18:01.448    381.5917969 1.85546875
7290025 09:18:02.488    381.5917969 1.953125
7290025 09:18:03.549    381.5917969 14.453125
7290025 09:18:04.589    381.5917969 46.77734375

我要做的是对每个参数列分别应用一些无监督学习技术,并找出其中可能存在的任何异常。ContextID更像是一个产品编号

我想知道哪些无监督学习技术可以用于手头的这类任务,因为这个问题有点独特:

  1. 它具有时间价值。
  2. 由于它具有时间值,因此每个产品将具有许多(相似或不同)值,如上面的数据集中所示。
1个回答

因此,如果我理解正确:您及时获得来自 2 个传感器的数据:Ar 流量和 BackGas 流量(SCCM,那是什么?)您拥有多个产品的数据。

1 - 由于它的维度相对较低,您可以尝试将原始数据与 K-Means 或自组织图一起使用。

2 - 如果您及时搜索异常,您可以尝试使用特征工程来处理流量变化:

  • i) 取2个时间点并“推导”(A点-B点)/(A点-B点)
  • ii) 取 A 的结果并作为二阶导数重复该过程,尝试对许多级别的“导数”
  • iii) 用于聚合过程中传感器故障检测的机器学习应用。在:Simpósio Brasileiro de Telecomunicações e Processamento de Sinais。

3 - 您可能想要查看其他与时间序列相关的研究,甚至是回归和分类,因为它们可能会为您提供有关相关特征或方法的想法:

  • i) 时间相关分类的集成方法 (10.1109/ICMLA.2018.00164)
  • ii) 高炉氧气炉数据驱动终点预测的多元时间序列 (DOI: 10.1109/ICMLA.2018.00231)

4 - 请注意,异常是异常值,因此分析远离您当时可能设计的任何特征的平均值的数据。基于 RBF 内核的模型可能会获取一些信息。

5 - 由于您不知道集群的数量,您可以尝试分层集群。

6 - 不要忘记与您所在领域的人讨论对此的期望。

如果你能详细说明你正在寻找的异常类型,我可能会提出更好的想法。这是非常一般的提示。

我可能误解了您想要集群的内容:

7 - 如果您想检测以下异常:

  • i)上面的产品行为提示主要是针对它的,您可以在短时间内使用所有 23 个功能并像这样进行集群:
    For each product in dataset {

      samples = {} # empty set

      For each time interval in product {

        features in interval add to samples

      }

      perform clustering method using samples

    }

该算法将有助于对产品行为异常的时间段进行聚类

  • ii)然后对于类似的传感器行为,您可以尝试提示 8

  • iii)产品本身为每个产品创建一个包含所有可用信息的特征向量,然后对其进行聚类。由于它由可变时间间隔和每个产品的 23 个特征(加上时间)组成,您可能需要使用一些降维(PCA 应该可以正常工作,因为它为您提供了更大方差的方向并且您正在寻找它) . 使用回归器对产品行为和聚类进行建模,这可能都是有用的(及时为每个产品创建一个回归器以对其行为进行建模,然后将回归器的权重聚类为产品表示)

8 - 假设您想识别传感器行为,将传感器输出建模为函数f(时间,外变量)并对其进行回归(尝试线性,然后尝试非线性)可能会有所帮助。回归器在预测答案时表现不佳的时间点可能表明该行为是异常的