【问题标题】:multivariate time series anomaly detection多元时间序列异常检测
【发布时间】:2021-02-19 13:18:22
【问题描述】:

我有一个时间序列数据,看起来像下面的示例数据。如您所见,我有四个事件以及每个事件在不同时间之间发生的总数。

一小时后,我将获得每个事件的新发生次数,因此我想根据其历史水平判断该事件的发生次数是否异常。 我认为如果我为每个事件建立四个不同的回归很容易,但在现实生活中我可能有很多事件,这会降低效率,所以我想知道解决这个问题的最佳方法是什么?我应该尝试的任何模型?我阅读了有关 KNN 的信息,但不需要分类标签,而我的情况却没有?

【问题讨论】:

    标签: python machine-learning statistics time-series anomaly-detection


    【解决方案1】:

    这是时间序列数据的示例,您可以尝试以下步骤(按此顺序):

    • 绘制数据以获得直观的理解
    • 使用简单的 z-score 异常检测
    • 使用滚动均值和滚动标准异常检测
    • 基于 ARMA 的模型
    • STL(季节性分解黄土)
    • 基于 LTSM 的深度学习模型

    我假设此 TS 数据是单变量的,因为不清楚这些事件是否相关(您没有提供名称或上下文)。如果它们是相关的,您可以查看它们的相关程度(相关性和整合),并对相关性进行一些异常检测。

    【讨论】:

    • 谢谢回复,这些事件不相关;对于这些方法,我是为每个事件运行还是可以一起测试所有事件,然后判断在某个时间范围内哪个事件有异常?
    • 您有以下可能性(1):如果特征不相关,那么您将它们作为独立的时间序列进行分析,(2)它们是单向相关的,您需要使用具有外生变量的模型(SARIMAX )。并且(3)如果它们是双向因果关系 - 那么您将需要 VAR 模型。您首先需要确定它们是否相关:使用 grangercausalitytests 和 coint_johansen 检验进行协整以查看它们是否相关。在此处查看更多信息:stats.stackexchange.com/questions/122803/…
    【解决方案2】:

    在多变量时间序列异常检测问题中,您必须考虑两件事:

    1. 每个时间序列内的时间依赖性。一般来说,您可以使用一些预测方法,例如 AR、ARMA、ARIMA 来预测您的时间序列。在此基础上,您可以将其实际值与预测值进行比较,看看是否异常。
    2. 所有时间序列之间的空间依赖性。在一个固定的时间点,比如t,您可以使用传统的异常检测方法,例如 KNN、GMM、k-means、KDE、PCA 等基于方法来执行异常检测。

    最具挑战性的是同时考虑时间依赖性和空间依赖性。据了解,现有的传统基于机器学习的方法都无法完成这项工作。相比之下,一些基于深度学习的方法(如[1][2])被提出来完成这项工作。

    【讨论】:

      猜你喜欢
      • 2013-03-31
      • 2015-07-23
      • 2019-10-13
      • 2022-01-11
      • 2018-07-11
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多