【阅读论文】Anomaly Detection in Univariate Time-series: A Survey on the State-of-the-Art

摘要

  长期以来,时间序列数据的异常检测一直是一个重要的研究领域。关于异常检测方法的研讨会工作一直集中在统计方法上。近年来,已经开发了越来越多的机器学习算法来检测时间序列上的异常。随后,研究人员试图使用(深度)神经网络来改进这些技术。鉴于异常检测方法的数量不断增加,研究主体缺乏对统计、机器学习和深度学习方法的广泛比较评估。本文研究了这三类中的20种单变量异常检测方法。评估是在公开可用的数据集上进行的,这些数据集是时间序列异常检测的基准。通过分析每种方法的准确性以及算法的计算时间,我们对这些异常检测方法的性能有了全面的了解,同时也对哪种方法适用于特定类型的数据有了一些一般的概念。

一、引言

  检测异常一直是一个研究课题。在数字化的世界里,传输的数据量超过了人类手动研究的能力。因此,自动化数据分析成为必要。最重要的数据分析任务之一是检测数据中的异常。异常是偏离整个数据集正态分布的数据点,异常检测是发现它们的技术。
  异常的影响取决于领域。在网络活动的数据集中,异常可能意味着入侵攻击。金融交易中的异常可能暗示金融欺诈,医学图像中的异常也可能是由疾病引起的。异常检测的其他目标是工业损坏检测、数据泄漏预防、识别安全漏洞或军事监视。
异常检测方法是特定于类型数据的。例如,用于检测图像中异常的算法与用于数据流的方法不同。本文主要研究时间序列数据中的异常检测方法。时间序列上的异常检测一直是人们感兴趣的话题。1979年,Tukey[88]提出了一种检测时间序列异常的统计方法。Chang等人[18]提出使用似然比检验(LRT)来检测时间序列上的异常。
  近几十年来,随着计算能力的不断增长,机器学习方法在分类和模式检测等数据科学任务中越来越受欢迎。因此,许多研究人员开始使用这些机器学习方法来检测时间序列中的异常。例如,可以使用诸如k-Means之类的聚类方法来检测时间序列数据中的异常点。
  在过去的十年里,深度学习方法在计算机视觉任务方面取得了巨大进展。这一成功促使研究人员利用这些方法来检测异常。各种深度学习方法,如多层感知器(MLP)、卷积神经网络(CNNs)和长短期记忆(LSTM)被提出作为异常检测技术。虽然现在有各种各样的异常检测方法,但要跟踪所有的技术变得越来越困难。事实上,目前尚不清楚统计方法、机器学习方法或深度学习方法这三类检测方法中哪一类更适合检测时间序列数据上的异常。据我们所知,没有研究比较这三类方法的准确性和性能。
  本文对每一类的多种方法进行了定量比较。我们选择了广泛的方法来涵盖每个类的良好性能技术。这项工作的主要贡献之一是它专注于时间序列数据。为了提供可靠的比较,在多个时间序列数据集上对这些方法进行了评估。
本文的结构如下:

  1. 基础知识:在本节中,定义了时间序列异常检测的主要概念,这些概念是本主题的基础。这些概念对于理解以下部分中的算法至关重要。
  2. 时间序列的异常检测方法选择:本节介绍了三大类的不同异常检测算法。
  3. 方法:在首先介绍相关和类似工作的同时,我们解释了不同方法的评估是如何进行的。
  4. 实验:作为评估的前一步,本节通过列出所用算法的所有超参数来列出实验的设置。
  5. 结果:本节对评估结果进行了说明和讨论。
  6. 结论:最后一部分对论文进行了总结,同时也对未来的工作进行了展望。

二、基础

在本节中,我们定义了异常检测过程中的基本概念。

2.1 异常和异常值

  对于异常值和异常值的区别,没有达成一致意见。一方面,以下引文主要用于证明异常值和异常值的相等性:

“在数据挖掘和统计文献中,异常值也被称为异常、不一致、偏差或异常。”–Aggarwal[2]

  另一方面,有一些定义将异常值视为一个更广泛的概念,除异常值外,还包括噪声[80]。其他人认为异常值是数据中的损坏,而异常值是不规则点,但具有特定的模式[35]。
当我们在本文中评估时间序列时,我们认为异常值和异常值这两个术语可以互换。
  重点是为异常的概念提供一个正式的定义。这是至关重要的,因为不同的异常定义意味着不同的检测方法。因此,有必要通过定义来明确异常的主要特征,并突出边界。最常见的异常定义如下:

“异常是数据中的模式,不符合定义良好的正常行为概念。”- Chandola等[17]

按照时间顺序,最早的定义之一是由Grubbs[34]给出的。他在1969年将异常值定义为:

一个离群观测值,或“离群值”,是一个似乎明显偏离它所发生的样本的其他成员。

Ord[69]使用了以下定义:

一个观测值(或观测值的子集)似乎与那组数据的其余部分不一致。

最后Hawkins[39]对异常值的定义如下:

“异常值是一种观测结果,它与其他观测结果相差甚远,以至于引起人们怀疑它是由不同的机制产生的。”

所有这些定义都突出了异常的两个主要特征:

  • 异常的分布明显偏离数据的一般分布。
  • 数据集的绝大部分由正常数据点组成。这些异常只占数据集的很小一部分。

这两个方面是异常检测方法发展的基础。特别是第二个属性阻止我们使用依赖于平衡数据集的常见分类方法,并使我们能够使用像自动编码器这样的方法作为半监督方法来检测异常,这将在以下部分进行解释。因此,本文对异常值和离群值的定义如下:
定义2.1. 异常是明显偏离一般数据分布的观测值或一系列观测值。异常集只占数据集的很小一部分。
  区分异常和噪声也很重要。噪声可以是错误标记的示例(类噪声)或数据属性中的错误(属性噪声)[80],这些都不是数据分析师感兴趣的[2]。例如,在一组医学图像中,一个异常可能显示一个肿瘤,噪声只是亮度和颜色信息的随机变化,这是不需要的。因此,分析人员对噪声不感兴趣,而对异常感兴趣。
  虽然这里强调了异常和噪声之间的区别,但在某种数据中区分它们仍然是一项困难的任务。如图1和图2所示:
在这里插入图片描述
  在这两张图中,数据分布是相同的。在图1中,用红色标记的异常点似乎很明显,因为它与其他点有很大的偏差。但在图2中,很难将异常点与稀疏空间中的其他点区分开来。这个例子表明,区分异常和噪声的难度取决于数据集。因此,有必要对数据集进行深入的了解。
  异常情况也应与新颖情况区分开来[17,74]。新颖性模式是尚未在数据中观察到的数据点。与异常的区别在于,新奇事物在被检测到一次后就被认为是正常的。例如,在实现新协议之后到服务器的新通信模式。然而,由于大多数用于新颖性检测的方法也用于异常检测,反之亦然,因此在本文中我们对它们一视同仁。

2.2 异常类型

异常可能以不同的形式出现。通常存在三种不同类型的异常:

  1. 点异常:如果一个点与其他数据有显著偏差,则视为点异常。例如,与其他交易不同的大额信贷交易是一种点异常。因此,如果点 X t X_{t} Xt的值与区间[ X t − k X_{t−k} Xtk X t + k X_{t+k} Xt+k]中的所有点显著不同,则点 X t X_{t} Xt被认为是点异常, k ∈ R k∈R kR并且 k k k足够大。
  2. 集体异常:在某些情况下,单个点不是异常,但一系列点被标记为异常。例如,一位银行客户一周中每天从她的银行账户中提取500美元。尽管偶尔提取500美元对客户来说是正常的,但连续提取是一种反常的行为。
  3. 上下文异常:某些点在特定上下文中可能是正常的,而在另一个上下文中被检测为异常:日温度为35◦ 德国夏季的气温是正常的,而冬季相同的温度则被视为异常。
    先验地知道数据可能包含哪种异常,有助于数据分析师选择适当的检测方法。一些能够检测点异常的方法无法完全识别集体或上下文异常。

2.3 随机过程和时间序列

  本文分析的数据是时间序列。因此,提供它的定义是至关重要的。首先,必须定义另一个术语,它与时间序列同时发生:随机过程。Wei[91]提供了一个全面的定义:

  定义2.2. 随机过程是一组时间索引随机变量 Z ( ω , t ) Z(ω,t) Zωt,其中 ω ω ω属于样本空间, t t t属于索引集。

  因此,如果 t t t是固定的,那么 Z Z Z是样本空间上的随机变量。
  时间序列是一个特定随机过程的实现。时间序列的一个形式上不同的定义如下:

  定义2.3. 时间序列是一系列随时间连续测量的观测结果。通常,观测是在等距的时间间隔内进行的: T = ( t d 0 d , t d 1 d , … , t t d ), d ∈ N + , T ∈ N T=(td^d_{0},td^d_{1},…,t^d_{t}),d∈N_{+},T∈N T=td0dtd1dttd),dN+TN ,其中d定义了时间序列的维数

  时间序列可以是来自一个源,即一个传感器的观测序列。在这种情况下, d = 1 d=1 d=1,并且级数是单变量的。如果我们从多个传感器收集信息, d > 1 d>1 d>1,我们就有了一个多变量时间序列。在本文中,我们只考虑离散的时间序列,因此 t ∈ N t∈N tN,在相等的时间间隔内感知。
单变量时间序列的例子是现金交易或天气历史。图3显示了五年内观察到的资产股票市场价值的样本时间序列的时间图。
在这里插入图片描述
  多元时间序列的一个例子是从安装在汽车中的几个传感器收集的数据。
  时间序列和其他数据集之间的一个主要区别是,观测结果不仅取决于分量 d d d,还取决于时间特征 n n n。因此,时间序列分析和使用的统计方法与用于随机变量的方法大多不同,后者假设随机变量的独立性和常方差。
  对于数据分析师来说,时间序列在经济、医疗保健和医学研究、贸易、工程和地球物理学等各个领域都很重要。这些数据用于预测和异常检测。

2.4 时间序列模式

  时间序列有一些重要的财产,我们将对其进行简要定义。它们对以后使用的统计异常检测方法具有重要意义。

2.4.1 趋势

  如果时间序列的平均μ不是恒定的,而是随着时间的推移而增加或减少,那么它就有一个趋势。趋势可以是线性的,也可以是非线性的。从2005年到2008年,图3中的时间序列呈正趋势,之后呈负趋势。

2.4.2 季节性

  季节性是波动的周期性重现。时间序列被称为季节性的,因为季节性因素,如一年中的时间或一周中的某一天,或其他相似之处都在影响它。因此,它总是有一个固定的时间段,仅限于一年。图4显示了一个季节性的时间序列。这是2000年至2019年间美国20个主要城市的月度房屋销售指数[86]。
在这里插入图片描述

2.4.3 周期

  循环时间序列受时间因素的影响,其中周期不是固定的,持续时间在一年以上,例如十年。图4中的时间序列也有一个大约12年的周期。

2.4.4 水平

  时间序列水平等于序列的平均值。如果一个时间序列有一个趋势,那么人们常说这个水平在变化。

2.4.5 静态性

  直观地说,平稳时间序列是在每个时间间隔上具有相同特征的时间序列。形式上,我们可以将其表达如下[43]:
定义2.4. X t Xt Xt是一个平稳的时间序列,如果 ∀ s ∈ R : ( x t , … , x t + s ) ∀s∈R: (x_{t},…,x_{t+s}) sR:xtxt+s的分布是相等的。
上述定义意味着静止时间序列 x 1 , . . . , x T x_{1},...,x_{T} x1,...,xT 将具有以下特性:

  1. 恒定平均值,因此在时间序列中不存在趋势。
  2. 时间序列具有恒定的方差
  3. 随着时间的推移,存在恒定的自相关
  4. 时间序列没有季节性,即没有周期性波动。

2.4.6 白噪声

  白噪声 ϵ t \epsilon{t} ϵt是一个随机过程,它与固定分布随时间不相关,固定分布具有恒定平均值 μ = 0 μ=0 μ=0和恒定有限方差 σ σ σ。因此,白噪声是静止的。白噪声的一个重要特征是其自相关函数(ACF)和偏自相关(PACF)函数是零,这意味着两个时间戳之间没有相关性。通常,在许多理论模型中,假设白噪声是高斯的: ϵ ~ N ( 0 , σ ) \epsilon~N(0,σ) ϵN0σ

2.5 异常检测

  在对异常和时间序列有了一般定义后,我们将定义异常检测的含义和存在的方法。
在文献中,使用了与异常检测具有相同或相似含义的不同术语:*事件检测、新颖性检测、(罕见)事件检测、异常发现、变化点检测、故障检测、入侵检测或误用检测[36]。*不同的术语反映了相同的目标:检测明显偏离数据集总体分布的罕见数据点。偏差量通常被视为异常强度的衡量标准,或概率性的异常可能性,称为异常得分。因此,在形式上,异常检测可以定义为一个函数 φ φ φ
φ : R n → R φ ( x ) ↦ γ \begin{equation} φ : \mathbb{R} ^n → \mathbb{R} \\ φ(x) \mapsto γ \end{equation} φ:RnRφ(x)γ
  其中 γ γ γ 是异常分数, x ∈ X ⊆ R n x∈X⊆R^n xXRn,X是数据集。
  为了将连续值 γ γ γ转换为二进制标签——正常与异常——定义了阈值 δ ∈ R δ∈R δR,其中异常分数大于δ的所有点都标记为异常。因此,设 φ s c o r e : = φ φscore:=φ φscore:=φ,则二进制标记异常检测方法 φ b i n a r y φbinary φbinary可以定义为:
φ b i n a r y : R n → { n o r m a l , a n o m a l y } φ b i n a r y ( x ) ↦ { a n o m a l y , if  φ s c o r e ( x ) > δ n o r m a l , otherwise  (2) \begin{align*} φbinary : \mathbb{R} ^n →\{normal, anomaly \}\\ φbinary (x) \mapsto \begin{cases} anomaly,& \text{if } φscore(x) > δ \\ normal, & \text{otherwise } \end{cases} \end{align*} \tag{2} φbinary:Rn{ normal,anomaly}φbinary(x){ anomaly,normal,if φscore(x)>δotherwise (2)

  使用 φ b i n a r y φ_{binary} φbinary 的异常检测并不是一种简单的二进制分类。如定义2.1所述,异常在数据集中只占很小的一部分。数据集的异常部分通常小于1%。因此,如果所有数据点都被标记为正常,通常的二进制分类器将达到99%以上的准确率,这使得异常检测成为一项更困难的任务。然而,为了在异常检测中获得令人满意的结果,必须根据检测数据的财产选择适当的异常检测方法。以下财产对于选择适当的方法很重要:

  1. 时间与非时间数据:非时间数据可以是医学图像、蛋白质序列等。时间数据包括时间序列,也包括时间戳不相等的数据。
  2. 单变量与多变量数据:单变量数据只包含一个维度,例如股价,而多变量数据包含多个维度。多元数据的实例是由多个传感器观测到的图像或时间序列。
  3. 标记或未标记的数据:如果数据集中的每个元素都存在注释,则对数据集进行标记,从而确定它是正常数据点还是异常数据点。具有正常点和异常点的标记数据集是监督异常检测方法的对象。数据集可能是完全标记的,但仅由法线点组成。然后,可以通过半监督方法对其进行分析。最后,未标记的数据是无监督异常检测方法的对象。
  4. 数据集中的异常类型:第2.2节介绍了不同的异常类型。这些信息会影响异常方法的选择。点异常是通过罕见分类的方法来检测的。为了检测集体异常,这些方法专注于数据中的异常形状,同时寻找偏差。这有助于发现上下文异常。
    在本文中,我们关注的是单变量时间数据,特别是包含标记的正常点和异常点的时间序列。因此,我们将在这里介绍这类方法的一般概念。

2.5.1 时间序列异常检测

  对非时间数据(如空间数据)的异常检测不同于对时间序列的异常检测。例如,检测空间数据中异常的主要方法之一是通过测量异常点与其余数据的偏差。另一种方法是对整个数据集进行聚类,并将所有点标记为位于密度较低区域的异常。关于空间数据的主要假设是数据点彼此独立。
  这与时间序列数据不同。这里,数据点不是完全独立的,但假设序列中的最新数据点影响它们随后的时间戳。接下来,序列的值会平滑地变化或显示出规则的模式。因此,序列中的突然变化将被视为异常。为了显示这种行为,请考虑以下示例,该示例演示了一个时间序列,列出了每10分钟记录一次的发动机温度:30◦, 31◦, 33◦, 32◦, 34◦, 35◦, 35◦, 85◦, 87◦, 88◦, 89◦, 89◦。如果将这些点视为独立的点,大多数方法将不会识别任何异常行为,而是检测两个均匀分布的聚类。但在时间序列中,从35◦C到85◦C的突然变化应该被检测为异常。时间戳之间的依赖性还导致时间序列中的异常通常是上下文或集体的。
  Aggarwal[2]将时间序列异常检测方法分为两大类:

  1. 基于时间序列的预测的异常检测
  2. 基于时间序列异常形状的异常检测

  大多数关于时间序列的统计异常检测方法都是基于时间序列预测的。另一方面,有几种机器学习方法,它们试图使用时间序列上的聚类方法来检测异常。所选择的方法取决于时间序列是单变量还是多变量。由于本文的重点是单变量时间序列,我们将对其特征进行概述。

2.5.2 单变量时间序列的异常检测

  时间序列中的异常检测与时间序列分析和预测方法密切相关。为了检测单变量时间序列中的异常,将预测模型拟合到训练数据中。然后,使用测试数据进行预测。为了对测试数据进行预测,通常使用滑动窗口。滑动窗口是时间序列的子序列,它作为模型的输入,使其能够预测下一个时间戳的值。形式上,设 w w w为滑动窗口的宽度,假设我们想预测 x i x_{i} xi ψ ψ ψ是预测模型。为了预测 x i x_{i} xi,使用以下函数和输入数据:
ψ : R n → R x ^ i = ψ ( ( x i − w , . . . , x i − 1 ) ) (3) ψ : \mathbb{R} ^n →\mathbb{R} \\ \hat x_{i} =ψ((x_{i−w}, ..., x_{i−1})) \tag{3} ψ:RnRx^i=ψ((xiw,...,xi1))(3)
异常评分可以通过测量预测值xi与实际值xi之间的距离来计算:
e i = d ( x i , x ^ i ) (4) e_{i} = d(x_{i}, \hat x_{i}) \tag{4} ei=d(xi,x^i)(4)
  其中 d d d 是距离函数。在单变量时间序列中,通常使用欧几里得距离。偏差 e i e_{i} ei——也称为误差值——与异常值成正比。如果异常分数高于阈值 δ ∈ R δ∈\mathbb{R} δR,则将其标记为异常。
  如前所述,还有一些方法试图通过使用机器学习方法寻找不寻常的形状来检测时间序列中的异常。例如,Zhang等[98]使用一类支持向量机(One-Class Support Vector Machines)来检测时间序列中的异常。因此,与空间数据相反,定义宽度为 w w w 的滑动窗口。然后,对于每个时间戳 x i x_{i} xi,前面的 w w w 时间戳将使用一些聚类或密度方法进行分析。这些方法是基于这样的假设,即上下文或集体异常将显示出可以通过这些聚类或密度方法检测到的偏离形状。我们将在第3节中回到这个问题。

2.5.3 有监督、半监督、无监督异常检测方法

  如果时间序列数据集被标记,以便对于每个时间戳都知道它是否是异常,并且数据集包含正常和异常时间戳,那么可以使用监督异常检测方法。监督异常检测方法能够检测出 δ ∈ R δ∈R δR 的合适值,从而将所有时间戳 x i x_{i} xi 归类为异常,如果对应的异常评分为 φ ( x ^ i ) > δ φ(\hat x_{i}) > δ φ(x^i)>δ
  如果数据集仅由正常点组成,且不存在异常,则可以使用半监督方法。然后训练一个模型,它适合时间序列的分布,并检测任何偏离该分布的新点作为异常。单类SVN、自编码器或GANs是用于这类数据的常用方法。
  最后,无监督异常检测方法假设时间序列数据是未标记的。大多数无监督异常检测方法试图通过分析所有$e_{i},i∈{1,…,N} $ 的分布来确定 δ δ δ,并使用 τ − τ- τ百分位数作为 δ ∈ R δ∈R δR。一种广泛的方法是设置 δ = 3 σ δ=3σ δ=3σ,其中 σ σ σ e i , i ∈ { 1 , … , N } e_{i},i∈\{1,…,N} eii{ 1N分布的标准差。
  在本文中,我们将重点研究监督异常检测方法,并在实验中使用标记数据集对其进行评估。

2.5.4 统计 vs. 机器学习 vs. 深度学习时间序列异常检测方法

  Munir等人[63]将异常值检测方法分类为概率模型、统计模型、线性模型、基于邻近度的模型和高维异常值检测,同时参考Aggarwal的书[2]。
我们认为,所有对时间序列数据的异常检测方法可以分为三大类:

  1. 统计方法
  2. 经典的机器学习方法
  3. 使用神经网络的方法(深度学习)

  这种分类是目标驱动的,因为我们想检查它们的行为是否不同。一些研究融合了机器学习方法中的第二类和第三类[59]。使用神经网络的第三类的边界相当清晰,因为它只包含使用某种神经网络的方法。在第3节中,我们将定义什么是神经网络。相比之下,统计方法和机器学习方法之间的界限是模糊的。通常,统计方法假设数据是由特定的统计模型生成的[13]。另一方面,机器学习方法将数据生成过程视为一个黑匣子,并试图只从数据中学习。机器学习方法基于隐含的假设,即只要机器学习方法能够产生准确的预测,底层数据生成过程就不相关[71]。因此,机器学习方法依赖于数据建模。Breiman[13]将这两种方法视为两种不同的文化,并建议使用机器学习方法。关于这些方法中哪一种表现更好,目前仍存在争论。在本文中,我们希望对它们中的每一个进行定量评估,以使这一主题更加清晰。

三 、时间序列异常检测方法的选择

  本节将介绍各种异常检测方法。我们将这些方法分为三类:统计方法、经典机器学习方法和使用神经网络的异常检测方法。

3.1 利用统计方法进行异常检测

  作为统计方法,我们选择了一些经过充分研究的回归模型,如AR, MA, ARMA, ARIMA和一些在Makridakis竞赛(也称为m竞赛)中表现良好的模型,以及一些最近发表的论文。虽然M-Competitions比较统计预测方法,但时间序列上的异常检测方法与预测方法密切相关。在这方面,它们为时间序列分析中有效的统计算法提供了很好的参考。

  1. 自回归模型(AR)
    单变量时间序列最基本的随机模型之一是自回归模型(AR)。AR是线性模型,其中随机过程(因变量)的当前值 X t X_{t} Xt基于长度为 p p p 的先前值(自变量)的有限集合和误差值 ϵ \epsilon ϵ
    在这里插入图片描述
      方程5中前窗长度为 p p p 的AR模型也称为 p p p 阶AR过程或 A R ( p ) AR(p) AR(p)。误差值 ϵ t \epsilon _{t} ϵt被认为是不相关的,并且具有恒定均值为零和恒定方差 σ σ σ。在该模型中, ϵ \epsilon ϵ用来确定异常分值。
      系数 a 1 , … , a p a_{1},…,a_{p} a1ap c c c的值可以通过使用训练数据并用最小二乘回归求解相应的线性方程来近似。之后,可以计算每个 X t X_{t} Xt ϵ t \epsilon_{t} ϵt,它表示异常分数。因此,异常分数等于预测值和观测值之间的差[51]。
      AR模型假定数据是平稳的。因此,重要的是分析数据并在必要时对其进行转换。
  2. 移动平均模型(MA)
      AR模型将 X t X_{t} Xt视为时间序列 { x t , x t − 1 , . . . , x t − p } \{x_{t},x_{t−1},...,x_{t−p}\} { xtxt1...xtp}的最后p个观测值的线性变换,而 移动平均模型(MA) 将当前观测值 X t X_{t} Xt视为最后 q q q个预测误差 { ϵ t , ϵ t − 1 , . . . , ϵ t − p } \{\epsilon_{t},\epsilon_{t−1},...,\epsilon_{t−p}\} { ϵtϵt1...ϵtp}的线性组合:
    在这里插入图片描述
      公式6中具有长度为 q q q 的先前窗口的MA模型也称为 q q q 阶MA过程或MA(q)。 μ μ μ 是时间序列的平均值,系数 { a 0 , … , a q } \{a_{0},…,a_{q}\} { a0aq} 是从数据中学习的。与AR相比,学习MA中的系数更为复杂。虽然在AR模型中,前面的值 { x t , x t − 1 , . . . , x t − p } \{x_{t},x_{t−1},...,x_{t−p}\} { xtxt1...xtp}是已知的,但在MA模型中, { ϵ t , ϵ t − 1 , . . . , ϵ t − p } \{\epsilon_{t},\epsilon_{t−1},...,\epsilon_{t−p}\} { ϵtϵt1...ϵtp}的值在一开始是未知的。在对模型进行拟合后,误差就知道了。因此,它们是按顺序优化的。因此,MA模型不存在闭合解,并且使用迭代非线性估计算法来求解MA模型[77]。在对模型进行拟合后,我们使用偏差来检测异常,就像在AR模型中一样。
  3. 自回归滑动平均模型(ARMA)
      另一种是AR和MA相结合的模型,在实际应用中常用于单变量时间序列。ARMA(p,q)模型的时间序列取决于最后的p个观测值和q个误差:
    在这里插入图片描述  如果{XT}是平稳的,则{XT}是ARMA(p,q)过程。
    与AR和MA相比,ARMA模型在实际应用中使用的变量更少。然而,主要的挑战是为p和q选择合适的值。这两个值越大,模型越有可能过度拟合,导致异常检测过程中出现过多的假阴性。另一方面,如果选择的数据点太小,模型将不能很好地拟合,并且会出现太多的假阳性,即数据点被检测为异常,尽管它们不是异常。在这两种情况下,模型都无法正确检测异常。
    有几种方法可以拟合模型并为p和q找到合适的值:
    (a) 使用相关图:首先,如有必要,必须对数据进行变换,使其成为静止的。每个ARMA模型都有其特定的自相关和偏自相关图形,它们可以在相关图中可视化。AR和MA也是如此。由此计算出时间序列的自相关函数(ACF)和部分自相关函数(PACF)。然后,将发现ARMA(p,q)的ACF和PACF相关图中的哪些p和哪些q与我们的相似。这是一个迭代过程,其中评估p和q的不同值。
    (b) Leave-One-Out Cross-Validation(分析交叉验证):另一种建议的方法是使用观测数据,通过使用留一法交叉验证分配p和q的不同组合来最小化误差值[2]。
    © Box-Jenkins方法[11]:由George Box和Gwilym Jenkins提出的Box-Jenkins方法提出了一种迭代方法:
    1. 识别:通过设置p和q值,利用数据信息选择最能代表数据的模型。此外,评估数据是否是固定的,如果不是,则对其进行转换。为此,ACF和PACF图很有帮助。
    2. 估计:将模型与数据进行拟合,以估计参数ai和bi。
    3. 诊断检查:用数据检查拟合的模型,以评估其性能,以及是否发现任何不足之处。如果结果不充分,我们将返回步骤1。
      这些方法不仅用于ARMA模型,而且是所有统计方法的通用方法。
  4. ARIMA Model
      数据集的主要问题之一是它们可能是非平稳的。平稳性是ARMA等模型的前提条件。ARMA模型是ARMA模型的推广。除了p和q参数外,它还由d参数定义,该参数定义时间序列的差分次数。对于d=1,时间序列 { x 0 , . . . , x t } \{x_{0},...,x_{t}\} { x0...xt}的差别如下:
    在这里插入图片描述
      通过绘制一些数据来最好地显示差异的效果。图5显示了第2.3节中2005至2008年的库存数据。数据显示出积极的趋势。因此,我们这里没有固定的数据。然而,图6显示了相同股票在三年内的每日变化,并且数据现在是固定的:
    在这里插入图片描述在这里插入图片描述图6绘制了图5的连续数据点之间的差异
      差值消除了时间序列中的趋势,导致了恒定平均值。如果趋势是非线性的,则必须多次求差,因此,d>1。
    差值也被用来删除季节。季节差异如下:
    在这里插入图片描述
    其中n是季节的持续时间
      在对ARIMA模型进行拟合后,通过评估预测点与观测点的偏差来检测异常。
  5. 简单指数平滑(SES)[15]
      在以前的模型中,预测是一个线性优化问题,而SES使用一种非线性方法,采用以前的时间序列数据进行预测,为观测值分配指数权重:

      因此, X t + 1 X_{t+1} Xt+1是前面数据点的加权组合。参数α定义权重递减的速率,该速率是指数。因此,它被称为指数平滑。α越小,越远的数据点被赋予的权重越大。
  6. 双指数和三指数平滑(DES、TES)[44]
      SES假设数据是固定的。可以将SES扩展为也处理非平稳数据,这称为双指数平滑。这里引入了一个额外的参数β来平滑序列中的趋势。如果数据还包含季节性,则使用三重指数平滑。此扩展还包含一个参数γ,用于控制季节性的影响。
  7. 使用预测可信区间(PCI)的时间序列离群值检测[96]
      该方法使用经过非线性加权的先前数据序列来预测下一个数据点。然后,通过使用阈值,他们将数据点分类为异常或正常。
    因此,为了计算 X t X_{t} Xt,它使用序列的过去观测点的窗口:
    在这里插入图片描述
    其中 w t − j w_{t-j} wtj X t − j X_{t-j} Xtj的权重,并且它与 X t X_{t} Xt X t − j X_{t-j} Xtj之间的距离的倒数成比例。这使时间较近的点 X t X_{t} Xt具有更大的权重。如果异常检测是离线完成的,则可以计算出一个双侧窗口:
    在这里插入图片描述
    然后,该方法计算异常检测的上下界:
    在这里插入图片描述
      这里,系数 t α , 2 k − 1 t_{α,2k−1} tα,2k1是具有2k−1个自由度的学生t分布的第p个百分位数,s是模型残差的标准差,k是用于计算s的窗口大小。如果α超出边界,则标记为异常。
      因此,该方法有一些超参数:α用于计算PCI的合理范围,k作为窗口大小。在这里,分析师再次面临着通过正确调整这些参数来克服过度拟合和拟合不足的挑战。
      作者将该方法应用于水文时间序列数据。在他们相应的实验中,他们推荐了区间[0.85,0.99]中的ARMA值和区间[3,15]中的k值。
      这种方法是对以前方法的简化,因为这些系数不能用AR、MA、α或其他自回归方法等模型来拟合。它也不像ES方法那样使用指数权重。然而,它被列入了本文件的评价,因为它是2014年发表的一种较新的方法。然而,这种方法是统计学方法还是最大似然方法还有待商榷。

3.2 使用经典机器学习方法进行异常检测

  机器学习算法试图检测时间序列数据集中的异常,而不假设特定的生成模型。它们是基于这样一个事实,即不需要知道数据的潜在过程,就能够进行时间序列预测和时间序列异常检测。因此,这些方法远远超出了统计领域(Breiman[13])。许多研究人员认为,如果一种方法在实践中有效地执行,那么模型的理论基础可以忽略不计(Januschowski等人。[47]))。在此背景下,我们介绍了几种基于经典机器学习算法的单变量异常检测方法。随后,将这些算法的性能与到目前为止介绍的统计方法以及3.3节中的深度学习方法进行了比较。

  1. K-均值聚类-子序列时间序列聚类(STSC)
      用于异常检测的聚类算法之一是使用K-均值聚类[56]。这种方法也称为子序列时间序列聚类(STSC)[45]。为了使用K-均值作为时间序列数据的异常检测方法,使用了滑动窗口方法[95,28]。这意味着给定时间序列 X N = ( x 1 , x 2 , . . . , x N ) {X_{N}}=(x_{1},x_{2},...,x_{N}) XN=(x1x2...xN)和窗口长度w以及滑动长度γ,时间序列 X N {X_{N}} XN产生一组子序列 S ⊆ R ( N − w ) × w S⊆R^{(N−w)×w} SR(Nw)×w
    在这里插入图片描述
    在定义了期望的簇数k之后,对数据集S执行k-均值算法,直到它收敛,产生k个质心[12]。质心是特定簇中向量的平均值。K个质心的集合塑造了集合C。
    为了检测异常,计算每个子序列的∈S到其最近质心的距离,这导致序列E:
    在这里插入图片描述
    其中, i ∈ { 0 , . . . , ∣ S ∣ } i∈\{0,...,|S|\} i{ 0...S} e i e_{i} ei是:
    在这里插入图片描述
      其中d是距离函数。通常,欧几里德距离用于单变量数据。
      因此,序列E表示每个滑动窗口的误差值。通过定义阈值 δ ∈ R δ∈R δR,如果相应的误差值 e i > δ e_{i}>δ ei>δ,则窗口 s i ∈ S s_{i}∈S siS是异常。
      这种方法的主要挑战是指定一个合适的值k。这种方法的复杂度是O(kN rw),其中k是集群的数量,r是迭代到收敛的次数,N是对象的数量(这里N = |S|), w是滑动窗口的长度[49]。
      注意:Keogh和Lin[49]在他们的工作中证明了使用时间序列的子序列进行聚类算法是没有意义的。他们表明,K-means算法在同一数据集上的几次运行所发现的聚类中心并不比随机游走数据集的聚类中心更相似。这意味着在被要求在数据集上表示质心后,他们可以只表示随机游走的质心,没有人能够区分它们。他们还尝试了其他算法,如层次聚类,这是一种与K-means相比的确定性方法,但得到了相同的结果。在几个数据集上也证明了这一点,这进一步证实了他们的说法,即使用时间序列数据的子序列进行聚类技术是没有意义的。他们还尝试了不同的距离测量方法,比如曼哈顿距离、L∞距离和马氏距离。此外,通过在著名的圆柱体,贝尔和Funnell (CBF)数据集上使用k = 3和w = 128的k - means,他们表明所得到的质心是窦波,这与CBF数据集中的实例完全不同。一些作者试图从数学上分析这种行为[45,30,67],并且已经有很多人尝试解决这些问题,或者至少展示与STSC适用的时间序列模式[20,75]。但这些问题基本上仍未得到解决[102]。
      我们将在评估中使用STSC,因为它仍然是基本的聚类方法之一,并用作比较工件。
  2. 基于密度的带噪声应用空间聚类
      另一种基于聚类的异常检测方法是基于密度的应用噪声空间聚类算法(DBSCAN)[25]。与STSC或CBLOF[41]等其他聚类方法相比,它还分析了数据中的密度。
    该方法将数据点分为三个不同的类别:

    为了对点进行分类,用户必须指定两个参数: ϵ \epsilon ϵ是用于声明被分析点的邻居的距离, μ μ μ是每个正常聚类必须具有的最小点数。要对一个点进行分类,首先必须确定每个点的 ϵ \epsilon ϵ-邻域。因此,对于数据集D where D = { x i ∣ x i ∈ R , i ∈ { 1 , … , n } } D =\{x_{i}|x_{i}∈R, i∈\{1,…, n\}\} D={ xixiR,i{ 1n}} x i x_{i} xi ϵ \epsilon ϵ-邻域为:

      Çelik等[103]在单变量时间序列数据集上使用DBSCAN进行异常检测,该数据集包含33年的日平均温度观测数据。他们首先将数据集分成包含一个月数据的序列。然后,使用数据序列的均值和方差对数据进行归一化。之后,在每个序列上运行DBSCAN,并如前所述检测异常。主要的挑战是为参数-Distance和μ选择适当的值作为每个聚类中的最小点数。
  3. 局部离群因子(LOF)
      另一种流行的聚类算法是局部离群因子(LOF)聚类。与DBSCAN相比,它不是基于密度,而是寻找最近的邻居(K-NN)[8],同时也关注局部异常值。LOF最初设计用于检测空间数据[14]上的异常。但Oehmcke等人[66]扩展了该方法,也将其用于时间序列数据。
    设D是一个数据集,x∈D,为了计算数据点x的LOF值,必须执行以下步骤:
    (a)计算x的k-距离 δk:
    设k∈N+, φ为距离函数,则δk = k-distance of x,如果:
    在这里插入图片描述
    x∈D, y是x的第k个近邻
    则x的k-距离邻域为:
    在这里插入图片描述x的可达距离RD定义为:
    在这里插入图片描述
    (b)计算x的局部可达密度(LRD):
    在这里插入图片描述
    © 最后可计算x的局部离群因子:
    在这里插入图片描述
      Oehmcke等[66]使用长度为w的滑动窗口将长度为w的序列分类为异常。因此,给定一个时间序列Xt,它被分成训练集a和测试集b。使用窗口长度w,每个集合被转换如下:
    在这里插入图片描述
    A(w, t)是一个长度为w的时间序列集合。
    在这里插入图片描述
    B(w, t)是我们要分析的序列。
      为了确定 B ( w , t ) B(w, t) B(w,t)是否是异常,我们计算 B ( w , t ) B(w, t) B(w,t)的异常分数 φ φ φ,如果 φ > δ φ > δ φ>δ其中 δ ∈ R δ∈R δR是一个阈值,那么我们将 B ( w , t ) B(w, t) B(w,t)标记为异常。
       B ( w , t ) B(w, t) B(w,t)的异常值 φ φ φ表示 B ( w , t ) B(w, t) B(w,t) A ( w , t ) A(w, t) A(w,t)中的集合有多大不同。这是通过计算 { { B ( w , t ) } ∪ A ( w , t ) } \{\{B(w, t)\}∪A(w, t)\} { { B(w,t)}A(w,t)}的LOF值来实现的。如果LOF ( B ( w , t ) ) > δ (B(w, t)) > δ (B(w,t))>δ,则该序列被标记为异常。
    这种方法的主要挑战如下:
  • 为k个最近的邻居确定一个合适的值k来计算LOF值。一般情况下,我们认为可以利用先验知识来确定k的合适值。本文作者建议使用集成策略来计算k[31]。
  • 将时间序列连接到一个向量中并计算与其他向量的距离将删除时间序列的有序信息。在这里,时间数据被转换为空间数据,其中每个维度都同等重要。但在时间序列中,有序序列包含了重要的信息,这在一些统计方法中被使用,如指数平滑。
  • 确定一个合适的距离函数φ。虽然Goldstein和Uchida建议使用欧几里得距离,但在许多情况下,欧几里得距离并不合适,特别是在考虑多维空间中变量之间的关系时。
  • LOF值只依赖于直接邻居,这也使得它更适合检测局部异常。
  • LOF算法的另一个缺点是复杂度为 O ( n 2 ) O(n^2) O(n2),而DBSCAN的复杂度为 O ( n ⋅ l o g n ) O(n·log n) O(nlogn)
  1. 孤立森林 Isolation Forest
      使用滑动窗口的隔离森林是检测时间序列异常的机器学习方法之一。隔离森林,又称森林,由Liu等人介绍。[53]。它构建了隔离树(itree)的集合,这是隔离数据点的二叉树。由于异常点比非异常点更有可能被隔离,因此它们更有可能更接近iTree[54]的根。图7显示了如何在示例数据结构上生成iTree。两次分区后检测到异常,第四个分区后检测到第一个正常点:
    在这里插入图片描述
      因此,该方法将路径长度较短的点视为极有可能是异常的候选点。使用隔离森林的异常检测过程通常分两个步骤执行:
    (a)训练:为给定的训练集创建n个itree。
    (b)评价:将测试实例遍历隔离树,确定异常评分。
      有一些方法扩展了forest来检测时间序列上的异常。检测单变量数据异常的一种主要方法是按照窗口长度w定义的序列分析数据集。因此,令 { X T } = ( x 1 , x 2 , … , x T ) \{X_{T}\} = (x_{1}, x_{2},…, x_{T}) { XT}=(x1,x2xT)为单变量时间序列,w为窗口长度, W ⊆ R p × w W⊆R^{p×w} WRp×w。然后:
    在这里插入图片描述
      之后,计算每个序列上的异常分数,该分数与实例的平均路径长度成正比。使用监督学习,阈值可以在训练集上计算,并用于以后的测试集。
      Ding和Fei[24]扩展了这个概念来计算异常分数S(x, p),其中x是数据点,w是窗口的大小:
    在这里插入图片描述
      其中,hi(x)表示第i个iTree的长度,E(h(x))是来自iTrees集合的h(x)的平均值,c(p)是给定w和L的h(x的平均值(iTrees的数量)。
    孤立离林算法的主要挑战是以下参数:
  • 窗口长度w:如果长度太短,那么将没有足够的数据来构建适当的模型。另一方面,如果长度太长,则会将较旧且有时不太相关的数据视为与较新的数据点一样多。Ding和Fei[24]在他们的实验结果中表明,不同数据集的固定滑动窗口会导致较差的性能。
  • iForest中的iTree数:iTree数越高,平均值越接近预期值。缺点是iTrees的数量越高,计算时间就会增加[54]。对于w作为窗口长度和L作为iTrees的数量,iForest的时间复杂度为 O ( L ⋅ w 2 ) O(L·w^2) OLw2,空间复杂度为 O ( L ⋅ w ) O(L·w) OLw
  • 污染:iForest的许多实现,例如sklearn中的实现,都有一个污染参数,其中设置了数据集中异常的比例。这也标志着异常的阈值。此参数的分配不当可能会导致更高的假阳性或假阴性率。
  1. 单类支持向量机 One-Class Support Vector Machines(OC-SVM)
      最初的支持向量机算法是Vapnik和Chervonenkis[89]在1963年发明的一种线性监督方法。Boser等人通过引入核技巧对算法进行了扩展,使得支持向量机能够进行非线性分类。此后,一种利用支持向量机检测新奇事物的新方法被引入,称为单类支持向量机(OC-SVM)[82]。OC-SVM是一种半监督方法,其中训练集只包含一类:正常数据。将模型拟合到训练集中后,对测试数据进行与正常数据相似或不相似的分类,使其能够检测异常。
      原始的OC-SVM方法能够检测一组向量中的异常,而不是时间序列中的异常。大多数论文建议将时间序列投影到向量集中。Ma和Perkins[55]提出使用时延嵌入过程将时间序列展开到相空间中(Packard等人[70])。Zhang等人[98],[78]建议创建时间序列数据集长度为w的窗口,这样对于给定的时间序列 { X T } = ( x 1 , x 2 , … , x T ) \{X_{T}\} = (x_{1}, x_{2},…, x_{T}) { XT}=(x1,x2xT),窗口长度为w和 W ⊆ R p × w W⊆R^{p×w} WRp×w,数据集首先转换为:
    在这里插入图片描述
    然后,函数p将时间序列投影到二维空间中:
    在这里插入图片描述
      虽然在OC-SVM中,结果对具有大值的时间序列点有偏差,但建议对数据进行归一化。

  2. 极限梯度升压 Extreme Gradient boosting(XGBoost、XGB)
      一种在Kaggle和KDDCup比赛中表现出色的机器学习技术是极限梯度增强(XGBoost)。XGBoost的主要优势之一是其可扩展性[21]。XGBoost是使用Friedman等人[29]引入的二阶方法从Tree Boost算法中导出的。设D是维数为m的n个例子的数据集: D = { ( x i , y i ) ∣ x i ∈ R m , y ∈ R , i ∈ { 1 , … , n } } D=\{(x_{i},y_{i})|x_{i}∈R^m,y∈R,i∈\{1,…,n\}\} D={ xiyixiRmyRi{ 1n}}。然后,树增强使用一系列连续的树模型对xi进行预测:
    在这里插入图片描述
    其中F是回归树的空间。相应的损失函数为:
    在这里插入图片描述24
      其中T是每棵树中的叶子数量,w是叶子权重。
    公式24中的损失函数包含用欧几里德空间中的传统优化方法不可能优化的函数。为了绕过这一障碍,模型以一种相加的方式进行训练,并使用损失函数的泰勒近似使其在欧几里德空间中可优化。
    在这里插入图片描述
    在这里插入图片描述
      陈天琦等人在他们关于XGBoost[21]的主要论文中提供了更多细节。
      因此,本文采用XGBoost作为回归模型对时间序列进行预测。为了检测单变量时间序列中的异常,我们将该算法扩展到计算预测误差。基于训练数据,我们可以计算误差分布的百分位数,并将其标记为∈R的阈值来检测异常。

3.3 基于神经网络的异常检测

  由于神经网络在目标检测、分类和分割等计算机视觉任务或类似任务中取得了巨大的成果,人们越来越有兴趣将其用于时间序列预测和时间序列分析。它们与经典的机器学习方法类似,因为它们不假设任何底层数据生成过程的知识。他们的受欢迎程度是基于他们的实证结果
  许多研究人员试图将神经网络的性能与ARIMA等经典方法进行比较。Sharda和Patil[85]使用前向神经网络和ARIMA模型比较了101个时间序列。唐和菲什威克[87]还比较了神经网络和ARIMA模型,重点放在16个不同复杂性的时间序列上。将神经网络用于时间序列预测,为使用神经网络检测时间序列中的异常铺平了道路。在这一部分中,我们选择了近年来最流行的方法。

  1. 多层感知器 Multiple Layer Perceptron (MLP)
    最基本的人工神经网络架构(ANN)是多层感知器(MLP)[38],它是一种完全连接的前馈神经网络。根据Hyndman和Athanasopoulos[43]的说法,用于时间序列预测的神经网络是神经网络自回归模型(NNAR模型)。它们通过滞后输入p和隐藏层k中的节点来表征NNAR模型:NNAR(p,k)。因此:
    在这里插入图片描述26
    在没有季节性限制的地方。因此,作为滞后输入的p也表示在时间序列上使用的滑动窗口的窗口大小w。窗口大小等于MLP输入层中神经元的数量(图8):
    在这里插入图片描述
      虽然Hyndman等人使用具有一个隐藏层的神经网络并扩展该层中神经元的数量,但增加隐藏层的数量也是可能的,有时也是优选的[5]。
      Haselsteiner和Pfurtscheller[37]使用两种不同的MLP拓扑进行时间序列分类,这是一个类似于异常检测的问题。一方面,他们使用具有滑动窗口的时间序列来实现MLP,另一方面,使用具有有限脉冲响应滤波器(FIR-MLP)的MLP[6]。
      在这项调查中,我们将通过在时间序列上滑动窗口来关注MLP。MLP网络用于进行预测。之后,考虑到与异常分数成比例的误差值,使用预测的误差来将数据点分类为正常或异常。
      因此,设 { X N } \{X_{N}\} { XN}是时间序列, x i ∈ { x n } x_{i}∈\{x_{n}\} xi{ xn},w是窗口长度,f是MLP的函数,则:
    在这里插入图片描述
      因此,时间序列窗口 ( x t − w , . . . , x t ) (x_{t−w},...,x_{t}) (xtw...xt)的标签是时间序列的下一个数据点: x t + 1 x_{t+1} xt+1。MLP和所有其他神经网络方法也可以用于预测一个以上的时间戳:
    在这里插入图片描述
    p w p_{w} pw是MLP预测的时间戳数,称为 预测窗口预测范围 [63]。
    然后使用MLP的预测来检测异常。设δ∈R为异常阈值,则xi+1标记为异常,如果:
    在这里插入图片描述
    时间序列数据的训练集可以用于检测δ的适当值。
    神经网络的主要挑战之一是超参数调整任务。MLP具有大量的超参数:
    (A)MLP的深度(网络的隐藏层的数量)
    (B)MLP的宽度(每层中的节点量)
    ©窗口的长度w
    (D)学习率
    (E)优化函数
    这些参数可以使用随机搜索或更高级的技术来优化[9]。
  2. 卷积神经网络(CNN)
      另一种用于时间序列数据异常检测的人工神经网络方法是深度卷积神经网络(CNN)。CNN主要用于计算机视觉中的目标检测、分类和分割[50,76,99]等任务。与层完全相连的MLP不同,CNN使用部分相连的卷积层,减少了参数的数量,使它们能够走得更深,训练得更快。与MLP不同,CNN关注的是数据中的局部模式。除了卷积层,CNN还使用池化层进行正则化,以避免过拟合。经常获得良好结果的池化操作之一是最大池化[92]。
      近年来,人们对使用细胞神经网络进行时间序列分析越来越感兴趣。Munir等人[63]使用一种称为基于深度学习的异常检测方法(DeepAnT)的CNN架构来预测时间序列,并根据预测误差检测异常。Zheng等人[100]使用类似的CNN架构对时间序列数据进行分类,这种方法也可以扩展到检测异常。
      使用细胞神经网络进行时间序列分析与使用细胞神经网进行图像分类不同。虽然图像分类细胞神经网络的输入是2D,但单变量时间序列细胞神经网络使用1D输入。因此,卷积层的核也是1D的。图9显示了DeepAnT中使用的架构:
    在这里插入图片描述
      输入层之后的第一层是1维卷积层,之后是最大合并层。如图9所示,DeepAnT使用两对卷积层和最大池层。但是,这可能会根据数据集的不同而不同。因此,神经网络特别是神经网络的主要超参数之一就是模型的结构。卷积层和最大池层的数量在本文所使用的体系结构中有所不同。数据集。我们将在第5节中分析这一点。
      在卷积和最大池层之后,使用完全连接到输出节点的致密层。如果预测窗口大于1,则输出节点的数量将相应增加。作为卷积层和致密层的激活函数,使用校正线性单元(RELU)[65]。Ioffe和Szegedy提出了另一种正则化技术,称为批量正规化[46]。计算机视觉实验表明,批归一化可以产生更高的学习率,作为丢弃层的替代,并且降低了仔细的参数初始化的重要性。因此,我们还实现了一种基于批处理归一化的CNN结构,用于单变量异常检测,以评估其异常检测性能。
    CNN模型用于进行预测的方式与MLP模型相同。为了检测异常,使用了相同的算法。
      设δ∈R为异常阈值,f由CNN模型实现的函数,则xi+1标记为异常,如果:
    在这里插入图片描述
    除了MLP也必须处理的超参数外,CNN预计如下:
    (a) CNN的体系结构,即使用批量归一化、丢弃或最大池化层
    (b)每个卷积层中的内核数量
    (c)内核的大小
    (d)卷积层的深度
  3. 残差神经网络 Residual Neural Network (Resnet)
      CNN模型的一个扩展是残差神经网络(ResNet)架构,该模型在过去几年中取得了良好的效果。ResNet引入了一种新的人工制品,称为He等人开发的残差块。[40]。剩余块使用跳过连接器将卷积块的输出与其输入相加。卷积块由几个卷积层、激活层和正则化伪像(如Max Pooling或Batch Normalization层)组成。
    为了形式化地表示残差块,设xi为输入,φ为卷积块,则残差块y的输出如下:
    在这里插入图片描述
    通常,也使用类似RelU激活函数的激活函数ψ:
    在这里插入图片描述
    图10显示了本文中使用的一个残差块:
    在这里插入图片描述
    图10:用于时间序列的残差块,包括两个卷积层的卷积块、一个ReLU和两个批量归一化层
      残差块被用来避免消失梯度问题,这种问题经常发生在更深的细胞神经网络中。Wang等人[90]使用ResNet对时间序列数据进行分类。它们使用具有64、128和128个滤波器的三个残差块。与图10中的残差块相比,它们使用了三个卷积层和带有ReLU激活函数的批量归一化层。我们尝试了不同数量的残差块,这将在第5节中详细解释。
      ResNet最适合处理大量数据。因此,如果数据的大小太有限,它可能会对时间序列数据进行过度拟合。但由于我们在计算机视觉任务中使用ResNet取得了良好的结果,因此在时间序列数据上评估该模型以检测异常也很有意义。
  4. WaveNet
      WaveNet由Oord等人开发。[68]作为一种深度生成模型,用于创建原始音频波形。特别是在前一个音频样本的条件下近似每个音频样本的预测分布的能力,使其成为时间序列预测的合适候选者。因此,WaveNet是一个概率模型,它试图近似波形x={x1,x2,…,xT}的联合概率:
    在这里插入图片描述
    这使得音频样本x依赖于之前的所有样本。
      为了实现这一点,WaveNet使用了一种特殊的卷积层:扩张卷积层。正常的卷积层使用滤波器。过滤器对与过滤器大小相同的数据进行卷积操作。图11显示了带有常规卷积层的CNN:
    在这里插入图片描述
    图11:具有规则卷积层的CNN,滤波器大小为2。
      相比之下,扩张卷积层对大于滤波器大小的数据进行卷积运算。这是通过使用跳过步骤跳过一些输入值来实现的。图12显示了一个带有delation卷积层的CNN:
    在这里插入图片描述
    图12:具有扩张卷积层的CNN,滤波器大小为2,并且改变跳过步骤(延迟)={1,2,4}
      膨胀卷积层的一大优点是,它将学习长期和短期依赖关系,而普通卷积层被设计用于提取局部模式。
      Borovykh等人[10]使用WaveNet的概念设计了用于时间序列预测的CNN。因此,为了预测时间戳xt∈{XN},使用宽度为w的时间戳序列作为函数f的输入,函数f由CNN表示:
    在这里插入图片描述
    卷积层的膨胀增加了2倍,如图12所示。因此,窗口宽度w可以比正常卷积层中使用的值大得多。
    在本文中,我们将扩展此方法以检测异常,其中我们使用与MLP和CNN相同的方法:
    设δ∈R为异常阈值,则 x t x_{t} xt标记为异常,如果:
    在这里插入图片描述
  5. 长短期存储器(LSTM)网络
      另一种为序列数据设计的人工神经网络是LSTM网络。LSTM网络属于递归神经网络(RNN)体系结构。与MLP和CNN不同,在MLP和CNN中,数据只是向前流动,因此也被称为前馈神经网络,RNN网络具有反馈连接,使它们能够将输出信息用于序列的下一个输入。形式上,前馈神经网络中神经元的输出如下:
    在这里插入图片描述
    其中 φ φ φ是非线性激活函数。相反,递归神经网络的神经元的输出如下:
    在这里插入图片描述
    简单RNN中的神经元被计算,如等式37所示。Hochreiter和Schmidhuber[42]开发了一种新版本的复发细胞,称为长短期记忆(LSTM)。图13显示了LSTM细胞的结构。
    在这里插入图片描述
      与简单的递归神经元不同,LSTM重用两个向量:ct和ht。ht添加了新的数据文本,使其成为短期记忆。另一方面,ct与新值相乘,使其成为长期记忆。这三个门调节数据的保存、遗忘和传递到输出端的数量。这种设计旨在识别重要的输入,并通过在输入门的输出上使用加法将其存储在长期状态下。此外,通过使用逻辑回归和逐元素乘法,它确定了长期记忆中的哪些元素应该被擦除。最后,输出门指定要输出新的长期存储器的哪一部分。
      虽然大多数神经网络架构,如MLP、CNN和简单RNN,都存在消失梯度问题,即反向传播步骤中的权重更新变得非常小,但LSTM细胞由于其门,特别是遗忘门,克服了这个问题。
      已经有不同的工作使用LSTM进行单变量和多变量时间序列分析。它的递归方式使它成为序列数据,尤其是时间序列的一种合适方法。此外,大多数LSTM方法不像MLP、CNN、ResNet等其他方法那样使用时间戳序列作为LSTM模型的输入,因为它的长短内存保留了最近时间戳的信息。因此,LSTM的输入仅由一个时间戳组成,这加速了学习过程。
    Chauhan和Vig[19]使用LSTM模型来预测健康心电图(ECG)信号。通过使用预测误差的概率分布,能够将时间戳标记为正常或异常。
    在这里插入图片描述
    图14:叠加LSTM:原始LSTM模型仅由一个LSTM层组成。堆叠式LSTM具有多个LSTM层
      Malhotra等人[60]使用由两个隐藏的LSTM层组成的堆叠LSTM(图14)模型来预测接下来的l个时间戳。因此,预测窗口 p w = l p_{w}=l pwl,其中 l > 1 l>1 l1。再次假设{XT}是一个具有和 x i ∈ { X T } x_{i}∈\{X_{T}\} xi{ XT}的单变量时间序列,那么:
    在这里插入图片描述
    在这里插入图片描述
    然后,计算每个预测的误差值:
    在这里插入图片描述
    之后,使用误差向量来拟合多元高斯分布 N = N ( μ , ∑ ) N=N(μ,∑) N=Nμ。通过使用最大似然估计(MLE),可以计算参数μ和∑,这使它能够给任何 e ( i ) e^{(i)} ei一个似然 p i p^i pi。最后给出一个异常阈值δ∈R:
    在这里插入图片描述
    与我们用于MLP和CNN的方法一样,我们可以使用训练集来计算δ的适当值。
  6. 门控循环单元(GRU)
      2014年,Cho等人。[22]提出了LSTM单元的简化版本:门控经常性单元(GRU)。GRU将输入和忘记门耦合到一个忘记门中。状态向量C和H被合并成一个向量H。此外,输出门被移除,并且完整的状态向量是每个时间戳的输出。图中显示了GRU的架构:
    在这里插入图片描述
      研究表明,GRUs的性能与LSTMs一样好,尽管由于其简化的结构[33]需要更少的计算量。
      GRUs也被用于时间序列数据的异常检测。Wu等[93]使用堆叠GRU模型检测在线时间序列数据上的异常。
      在这项工作中,我们还将评估一个GRU模型,以检测单变量时间序列中的异常。该模型将等于我们之前解释的时间序列数据异常检测的LSTM模型。唯一的区别是LSTM细胞将被GRU细胞所取代。
  7. Autoencoder
      检测异常的一种方法是降低数据的维数,并将其投射到更低的空间,即潜在空间,其中保留更多相关变量。关于数据分布的主要假设是,正常数据和异常数据在这个空间上有显著不同,这是异常的定义(定义2.1)所暗示的。然后,投影回原始空间,可以看到一些数据点的显著差异,这些数据点代表了异常数据实例。这使得自动编码器适用于异常检测。
      自编码器属于前馈神经网络家族,并经过优化以输出插入网络中的相同信息。挑战在于,隐藏层的前一半会降低数据集的维数,而后一半会将维数增加到原始值。这两个部分相应地被命名为编码和解码部分。形式上,设X为数据集,ψ为解码函数,φ为编码函数,f为自编码器对应的函数,则:
    在这里插入图片描述
    自编码器的优化函数试图最小化 X X X X ^ \hat X X^之间的偏差:
    在这里插入图片描述
    其中 θ φ θ_{φ} θφ θ ψ θ_{ψ} θψ为解码部分和编码部分的权重。图16以图形方式展示了自动编码器的概念:
    在这里插入图片描述
    图16:自动编码器:编码层φ将x的维度降低到z,而解码层ψ将数据投影回原始维度,从而生成 x ^ \hat x x^
      已经有不同的方法使用自动编码器来检测空间数据上的异常。周和Paffenroth[101]使用健壮的自动编码器来检测图像上的异常。Baur等人。[7]使用深度自动编码器检测2D脑部MR图像上的异常。
      Sakurada和Yairi[79]使用自编码器检测时间序列上的异常,并将其与线性和核主成分分析进行比较。它们实现了一个普通的自动编码器和一个去噪自动编码器。去噪自动编码器用一些噪声污染输入X,并试图重现无噪声的输入。在本文中,我们将实现常规自编码器来检测时间序列上的异常。因此,设 { X N } \{X_{N}\} { XN}是单变量时间序列,w是时间序列上滑动窗口的宽度,那么自编码器的输入将是一个向量   ( x i , x i + 1 , … , x i + w   ) T ∈ { X N } \ (x_{i}, x_{i+1},…, x_{i+w}\ )^T∈\{X_{N}\}  (xi,xi+1xi+w )T{ XN}。然后自动编码器将计算以下内容:
    在这里插入图片描述使用训练集,自动编码器尝试使用以下优化函数最小化错误:
    在这里插入图片描述
    然后,可以使用测试集检测异常。设 f ψ φ f_{ψφ} fψφ是经过训练的自动编码器,对于 x j ∈ { X T − E S T } x_{j}∈\{X_{T-EST}\} xj{ XTEST},我们首先进行预测:
    在这里插入图片描述
    然后计算预测xj的误差值ej:
    在这里插入图片描述
      最后但并非最不重要的是,当且仅当ej> δ时,具有异常阈值δ∈R,xj被标记为异常。如前面的方法中所描述的,训练数据被用来确定δ的适当值。
      自动编码器最适合于训练数据仅由正常点组成的半监督学习方法。这导致学习正常数据点的潜在空间,并在稍后将异常馈入模型时导致偏差。

四、方法

  在这一部分中,我们首先介绍了异常检测的相关工作。在此之后,提到了用于评估的不同数据集。此外,还对数据预处理任务进行了说明。最后,给出了应用的评价指标。

4.1 相关工作

  时间序列分析一直是一个重要的研究课题。在过去的几十年里,尽管不同的机器学习方法在各个领域取得了显著的进展,但在时间序列分析中,人们一直在努力从中受益。已经有很多发表的作品使用机器学习来进行更好的预测。马卡里达基斯竞赛,也被称为m竞赛,定期举行,以评估不同的预测方法。后来,有人试图比较性能最好的方法。Makridakis et al.[59]发表了一篇文章,他们比较了M-3比赛的最佳统计预测方法与不同的机器学习方法[57]。他们的论文侧重于单变量时间序列模型。
  也有不同的研究比较ML方法,但针对的是特定类型的数据。例如,AlmaguerAngeles等人[3]比较了22 ML算法在物联网数据集上检测异常。也有论文作者比较了他们的异常检测方法与不同的方法。Chakraborty等人[16]比较了他们的神经网络方法与ARMA模型。此外,也有研究比较异常检测方法,但只对单个数据集进行评估。Lazarevic等人比较了不同的聚类技术,如使用距离到第k个最近邻挖掘离群值,最近邻方法,基于马氏距离的离群值检测,LOF方法和SVM,但只使用一个数据集。Munir等人[64]在Yahoo Webscope数据集(时间序列异常检测数据集)上比较了他们的方法FuseAD与其他最先进的异常检测方法,如LOF、ifforest、c - svm、PCA、Twitter异常检测(TwitterAD)[73]和DeepAnT[63]。
  据我们所知,目前还没有将统计方法与经典机器学习方法和神经网络在单变量时间序列中检测异常进行比较的广泛研究。尽管时间序列中的异常检测正变得越来越重要。与我们的方法最相似的研究是Makridakis和Hibon[57]的工作,他们比较了使用统计方法和ML方法的单变量预测方法。
  在本文中,我们使用不同的单变量时间序列数据集来比较第3节中介绍的单变量方法。所有的方法都是有监督的,因此使用一部分数据集进行训练,另一部分进行测试。

4.2 数据集

  为了评估所介绍的单变量方法,选择了几个时间序列数据集。其中大多数是异常检测的基准。其中一个重要的标准是数据集确实应该是一个时间序列数据集。有不同的文章在时间序列上评估异常检测方法,同时选择非时间序列数据集,如森林覆盖类型(ForestCover)数据集。即使是KDD Cup '99数据集也很关键,因为它不是基于相等的时间间隔。因此,我们将只使用它的一小部分,以使其与时间序列要求兼容。
  因此,选择了几个由真实数据和合成数据组成的单变量数据集。此外,时间序列数据是首选的,在其他研究中也使用了时间序列数据,使我们能够在使用类似方法时将我们的结果与他们的结果进行比较。

4.2.1 UD1 -真正的雅虎服务网络流量

  该数据集由Yahoo发布[94],是包含Yahoo服务流量的单变量时间序列数据集。异常现象是由人类标记出来的。该数据集由67个不同的时间序列组成,每个时间序列包含大约1400个时间戳。时间戳每小时被观察一次。大多数时间序列是平稳的,平均每个时间序列由1420个时间戳组成,其中1.9%是异常的。

4.2.2 UD2 -合成雅虎服务网络流量

  Yahoo提供了另一个数据集[94],该数据集由100个包含异常的合成单变量时间序列数据组成。每个时间序列包含大约1421个时间戳。这些异常是随机插入的,因此代表点异常。平均而言,每个时间序列包含0.3%的异常。

4.2.3 UD3 -具有季节性的合成雅虎服务

  该数据集还包括100个合成单变量时间序列[94],每个序列包含大约1680个时间戳。与前一个数据集相比,这个数据集还包含季节性。异常被插入到随机点上,标记变化点。平均每个时间序列的异常率约为0.3%。

4.2.4 UD4 -具有变更点异常的合成雅虎服务

  该数据集还包含100个合成的单变量时间序列。每个时间序列大约有1680个时间戳。与前一个数据集的不同之处在于,该数据集还包含时间序列平均值变化的变化点异常。对于我们的评估,我们专注于主要的异常点,而忽略了异常类型之间的区分。平均而言,0.5%的数据集是异常的。

4.2.5 NYCT - NYC出租车数据集

  这是一个单变量时间序列数据集,包含了2014年7月1日至2015年1月31日期间纽约市(NYC)的出租车需求,并观察了每半小时记录的乘客数量,其中包含10320个时间戳。它来自Numenta异常基准测试(NAB),这是一个评估异常检测算法的基准测试,特别是在流数据上。它包含了五种集体异常,分别发生在纽约马拉松、感恩节、圣诞节、新年和暴风雪。

4.3 数据预处理

4.3.1 数据标准化

  在评估异常检测方法之前,在数据集上执行的主要数据预处理任务之一是标准化。如果数据集的均值μ为0,标准差σ为1,则数据集是标准化的。因此,设D为数据集,μ为D的均值,σ为标准差。然后,标准化D:
在这里插入图片描述
标准化不等于归一化,这里改变了D,这样:
在这里插入图片描述
  标准化对异常值很敏感。因此,将包含异常值的数据集规范化是不合适的。公式48中的标准化有助于许多ML方法更快地收敛。Shanker等人[84]已经表明,特别是在较小的数据集中,当数据标准化时,神经网络产生更好的结果。Ji et al.[48]在他们的论文中提到,标准化时间序列数据对于SVM方法是必要的。此外,本文中评估的其他方法,如DBSCAN, K-Means和K-NN也受益于标准化。

4.3.2 去季节性和去趋势

  大多数时间序列分析的统计方法假定均值和方差的平稳性。但对于机器学习方法和神经网络来说,这是一个有争议的要求。有些研究忽略了将时间序列转换为平稳序列的必要性。神经网络是通用函数逼近器,因此一些研究人员声称它们能够检测非平稳趋势。因此,Gorr[32]认为他们能够在时间序列数据集中检测非线性趋势和季节性。Sharda和Patil[85]通过经验证明,神经网络能够通过评估大约101个不同的时间序列来自动检测单变量时间序列中的季节性。也有其他工作取得了类似的结果[27,87]。
  也有研究得出了相互矛盾的结果。Faraway[26]将使用去趋势和去季节时间序列的模型与使用原始数据的网络进行了比较。结果表明,采用去趋势和去季节化数据的模型取得了较好的效果。Zhang和Qi[97]进行了一项实证研究,比较使用去趋势和去easonalizing的神经网络性能更好。特别是,他们发现两者的结合达到了最好的结果,结论是神经网络不能有效地检测季节和趋势变化。因此,为了在比较不同方法时获得更精确的结果,我们使用原始时间序列数据集(标准化除外)与去趋势和去季节化时间序列相比,分析了方法的性能。

4.4 评价指标

4.1.1 F-Score

  为了比较不同的异常检测方法,可以考虑几个指标。在类似的方法中使用的一个指标是F-Score:
在这里插入图片描述
  Munir等人[63]使用该指标来评估不同时间序列上的异常检测方法。Maya等人[62]除了召回率和精确度外,还使用F-Measure。

4.4.2 曲线下面积(AUC)

  另一个常用的度量是接收器工作特性曲线ROC-Curve,以及相关的度量曲线下面积(AUC),即ROC-Curve下的面积。这一措施非常有帮助,特别是对于异常检测。ROC曲线说明了基于不同阈值的真阳性率和假阳性率之间的相关性。真阳性率(TPR)定义如下:
  设P为正标记值,例如实际异常的时间戳,N为负标记值,例如实际正常的时间戳,TP为真阳性分类,即异常且已被算法检测为异常的时间戳,FP为假阳性,即正常但已被错误标记为异常的时间戳,则TPR为:
在这里插入图片描述
而FPR为:
在这里插入图片描述
  为了计算ROC曲线,我们使用不同的δ∈R作为异常检测方法的阈值,导致每个δ有不同的TPR和FPR对。最后可以绘制这些值,显示从原点开始到点(1,1)结束的曲线。相关度量AUC是曲线下的面积。在异常检测中,AUC表示测量算法为时间序列中的随机异常点分配比随机正常点更高的异常分数的概率。这使得AUC适合于比较不同的异常检测方法。其他几篇论文[79,61,4,52]也使用ROC曲线和AUC值来比较不同的异常方法。例如,Goldstein和Uchida[31]使用这一度量来比较不同的机器学习异常检测方法。
  简言之,AUC值将是本文第6节实验中使用的主要指标。

4.4.3 计算时间比较

  评估不同方法的另一个因素是一种方法用于分析数据的计算时间。算法需要预测时间戳是否异常的时间对该方法的成功起着至关重要的作用。在许多用例中,推理时间是至关重要的。例如,为了检测在线异常,如果新的数据点迅速出现,该方法必须能够快速响应。
  为了测量计算时间,根据算法的性质,可以采用不同的方法。例如,Maya等人[62]分别计算了用于训练和推理的时间。Goldstein和Uchida[31]计算了无监督异常检测方法分析数据集所需的时间。
  本文中测量时间性能的方法与上述论文中使用的方法不同。这是基于这样一个事实,即这些论文比较了类似的检测方法。例如,Goldstein和Uchida[31]只是比较了机器学习方法,尤其是聚类和密度方法。此外,Maya等人[62]比较了深度学习方法,从而可以分别测量训练和推理阶段。当将LSTM等深度学习方法与LOF等经典机器学习方法进行比较时,这是不可能的。虽然LSTM在训练中大多需要大量的时间,但它的推理时间非常快。这与LOF等聚类方法完全不同。
  因此,主要基于总的训练和预测时间来比较算法的时间性能。这将为相互比较这些方法提供一个相对值。

五、实验

在本节中,列出了实验的设置。这对于评估不同方法的结果是必要的。

5.1 数据集

数据集分为训练集和测试集,其中30%用于训练,70%用作测试数据。如果测试数据不包含任何异常点,则时间序列将被忽略并排除在评估之外。此外,数据在被第4节中解释的方法使用之前是标准化的。测试数据构成了方法评估的来源。AUC值是根据测试数据计算的,而训练数据仅用于训练。对于一些深度学习方法,使用10%的训练数据作为验证集来优化超参数。

5.2 实验设置

评估的主要要求是实现每种异常检测方法的最佳训练模型。这需要优化除了可训练参数之外的模型的超参数。因此,使用了一个验证集。这样可以防止训练过程中的过度拟合。
除此之外,特别是对于基于预测模型的异常检测方法,在预测模型上执行超参数调整。优化后的预测模型将在以后的异常检测中取得更好的效果。为了评估预测模型,创建了一个朴素模型。在一些文献中,这种幼稚的模型也被称为持久模型。时间序列预测中的朴素模型是指模型的输出ˆxt等于输入的模型:
在这里插入图片描述
初始模型的精度形成了目标模型的下界。在此之后,目标模型的均方误差(MSE)应该低于naive模型。因此,本文建议采用以下指标来评价预测模型的预测性能:
在这里插入图片描述
其中NMM代表朴素模型度量。根据经验,我们已经注意到,当NMM较低时,模型通常具有较高的auc值。当数据集未标记或训练集中的异常率极低时,这特别有用。因此,对模型的超参数进行调优,使NMM值最小,使其严格小于1。

5.2.1涉及的软硬件

5.2.1.1软件

算法是用python实现的。对于统计方法,主要使用了statmodels模块[83],而一些自定义算法(如PCI)则从头开始实现。经典的机器学习方法大多是使用Scikit-learn (Sklearn)实现的[72],对于深度学习方法,已经使用了tensorflow[1]和keras库[23]。

5.2.1.2硬件

模型的训练和测试在表1所示的硬件上进行:
在这里插入图片描述
所有的计算都是在单个进程和单个线程上执行的

5.2.2 超参数调优

下面,我们将描述用于计算的一般超参数和特定超参数以及各自的方法。

5.2.2.1通用超参数

有些超参数是通用的,依赖于数据集,除非为特定的方法显式列出了另一个值。表2列出了这些超参数:
在这里插入图片描述

5.2.2.2 统计方法

表3列出了统计方法的超参数:
在这里插入图片描述

5.2.2.3 机器学习方法

表4列出了机器学习方法的超参数:
在这里插入图片描述

5.2.2.4 深度学习方法

表5列出了深度学习方法的超参数:

在这里插入图片描述
在这里插入图片描述

六、结果

在本节中,将介绍不同方法的结果。已经执行了第3节中使用第5节中列出的超参数的方法。下面的部分分别列出了auc值和计算时间。

6.1 AUC-Values

表6列出了通过单变量方法在不同数据集上获得的AUC-Value。在每个数据集上分别计算AUC-Value:
在这里插入图片描述
表6突出显示了最佳结果。为了更好地说明结果,计算每种算法的所有数据集UD1-UD4的平均AUC-Value,并将其绘制为图17中的排序序列:
在这里插入图片描述
图17显示,统计模型取得了最好的结果,而深度学习方法普遍表现不佳。五个表现最好的算法中有四个是统计算法,而四个表现最差的算法是深度学习方法。大多数机器学习方法都位于中心。只有PCI是统计方法中的一个例外,它达到了非常低的auc值。
然而,令人惊讶的是,深度学习方法在NYCT数据集上表现得更好,而统计方法实现了非常低的AUC-Value。图18显示了不同方法在NYCT数据集上的行为:
在这里插入图片描述
统计方法表现不佳的主要原因是,NYC 时间序列包含上下文异常(深度学习方法好),而UD1、UD2、UD3和UD4中的异常要么是点异常,要么是集体异常(统计方法好)。其中大多数都不包含任何上下文异常。异常点的值与其他正常点的值明显不同。但在NYCT数据集中,异常点的值与正常点的值相似。由于它们的上下文信息,它们是异常的。我们观察到统计模型过度拟合这些数据,使它们无法检测到异常。另一方面,深度学习方法提供了一种更灵活的方法,通过调整宽范围的超参数,使其能够实现高AUC值,从而根据异常类型优化模型。

6.2 计算时间

在包含367个时间序列的数据集UD1-UD4上测量每种算法的计算时间,这些时间序列列在下表的第一行中。然后计算在单个时间序列上训练和检测异常所需的平均时间,并在第二行中列出。时间以秒为单位。
在这里插入图片描述
从表7的结果可以看出,自回归模型AR和MA是速度最快的算法,而通常深度学习方法的计算时间非常长。但并不是所有的统计方法都能从较低的运行时中受益。SES和ES比许多机器学习方法需要更多的时间。深度学习方法的训练阶段比较耗时,计算时间比较长。特别是LSTM和GRU是表的底部。
一些论文认为,深度学习方法将大部分计算时间投入到训练阶段,并且深度学习方法的推理时间比其他机器学习方法快得多。但这种说法并不总是正确的,表8包含了在NYCT数据集上测量的训练和推断时间,表明:
在这里插入图片描述
训练时间表示我们将模型拟合到包含30% NYCT数据集的训练集上所测量的计算时间。推理时间为测量时间,模型需要标记代表测试集的NYCT数据集的其余部分。
大多数深度学习方法的推理时间都很短。但是从表中的测量值可以看出,像LSTM和GRU这样的循环神经网络也有非常巨大的推理时间,超过了几乎所有机器学习方法的推理时间。因此,虽然LSTM模型在NYCT数据集上取得了最好的结果,但其推理时间仍然很关键。

6.3 计算时间vs AUC-Value

  一个有趣的关系是一种方法可以达到的精度与它所需的计算时间的比较。图19显示了不同的方法在数据集UD1-UD4上的AUC-Value和计算时间方面的表现。性能最好的算法位于图的右下角,具有较高的auc值和较低的计算时间。从图中可以看出,AR和MA两种统计方法的效果最好。另一方面,大多数深度学习方法都表现出较低的AUC-Value。带有残块的CNN的性能比其他任何方法都差,同时具有较低的时间性能和较低的AUC-Value。
在这里插入图片描述

6.4 调查结果

  对单变量时间序列数据的评估表明,尽管机器学习方法和深度神经网络取得了进步,但依赖于生成过程的统计方法通常表现最好。除了这些方法比其他方法更准确地检测异常之外,它们还执行得更快,训练和预测持续时间非常低。此外,与深度学习方法相比,统计方法的优化要容易得多,因为统计算法的超参数数量很低。结果还强调了这样一个事实,即在时间序列异常检测中,机器学习方法通常比深度学习方法表现更好,尽管其中一些方法的计算时间是至关重要的。例如,隔离森林具有非常高的auc值,但需要比AR和MA模型多1000倍的训练和推理时间。尽管在我们的实验中选择的树的数量是相当适中的。但与此同时,实验也表明,统计方法在处理上下文异常时存在困难。在这种情况下,神经网络方法和一些机器学习方法可以实现明显更高的auc值。这一发现很重要,因为对预测单变量时间序列的统计方法和机器学习方法进行的类似比较得出的结论是,统计方法在准确性和所有预测领域都主导了机器学习和深度学习方法,他们研究了[59]。因此,这些发现表明了单变量时间序列数据异常检测与单变量预测的不同之处。

七、结论和未来工作

  在本文中,使用各种最先进的算法对统计和经典机器学习以及深度学习方法进行了比较。总体而言,我们使用由368个单变量时间序列数据集组成的五个单变量时序数据集,评估了20种单变量异常检测方法,为研究界提供了关于这三类异常检测方法性能的可靠贡献。
  实验表明,统计方法在单变量时间序列上通过检测点异常和集合异常表现最佳。与其他两个类相比,它们需要更少的计算时间。尽管深度学习方法在过去几年得到了人工智能界的极大关注,但我们的研究结果表明,它们通常无法在仅由点异常和集体异常组成的单变量时间序列基准上达到统计方法的精度值。只有当单变量数据集主要由上下文异常组成时,神经网络才能优于统计方法。尽管与统计方法相比,仍然存在较高的计算时间,但一些深度学习方法可以通过实现更高的auc率来超越它们。
  本文的研究重点是单变量时间序列。然而,许多真实数据集由多元数据组成。因此,多变量时间序列上的异常检测将是未来研究的重点。此外,一个相关的领域,也是目前感兴趣的,是在线异常检测。本文主要研究静态数据的异常检测,但可以扩展到流数据的异常检测。
  在本文中,我们对一般时间序列数据集上的异常检测方法进行了评估,结果表明,数据的性质会影响算法的性能。因此,通过评估不同领域特定数据集上的方法来扩展本文的实验将是未来的工作方向。最后,可以做一些尝试来扩展本文的结果。然而,据我们所知,这是第一次尝试在时间序列数据上提供不同异常检测技术的广泛评估。我们希望本文和相应的实验可以帮助其他研究者在分析时间序列时选择合适的异常检测方法。
  
  

LaTeX-Math 手册

$$X_{t}$$
X t X_{t} Xt
$X_{t}$
X t X_{t} Xt

猜你喜欢

转载自blog.csdn.net/weixin_46112690/article/details/129826528