• Revisiting Time Series Outlier Detection: Definitions and Benchmarks


    本文是对《Revisiting Time Series Outlier Detection: Definitions and Benchmarks》文章的翻译。


    摘要

    时间序列离群点检测在过去十年中得到了广泛的研究,提出了许多先进的算法。尽管做出了这些努力,但很少有研究调查我们应该如何对现有算法进行基准测试。特别是,使用合成数据集进行评估已成为文献中的常见做法,因此,有一个通用的综合标准来对算法进行基准测试至关重要。这是一项非常重要的任务,因为现有的合成方法在不同的应用中非常不同,并且离群值定义通常是不明确的。为了弥补这一差距,我们提出了一种行为驱动的时间序列离群分类法,并将离群分类为具有明确上下文定义的点和模式离群。按照新的分类法,我们提出了一个通用的综合标准,并相应地生成了35个综合数据集。我们进一步确定了来自不同领域的4个多元现实世界数据集,并在合成数据集和现实世界数据集中对9个算法进行了基准测试。令人惊讶的是,我们观察到一些经典算法可以优于许多最近的深度学习方法。数据集、预处理和合成脚本以及算法实现在GitHub中可以看到。

    1 引言

    在这里插入图片描述
    在这里插入图片描述
    时间序列数据中检测异常值在各个领域具有广泛的应用,如制造商、边缘设备和HVAC系统。已经提出了许多用于时间序列离群点检测的算法,包括基于预测的模型,如自回归和循环神经网络,多数建模方法,如孤立森林和自编码器,以及不一致分析方法,如子序列聚类和矩阵轮廓。
    尽管在推进算法设计方面做出了这些努力,但很少有研究调查我们应该如何对现有算法进行基准测试。虽然一些真实世界的数据集可以用于基准测试,但它们往往表现出不同类型的离群值的混合,这使得理解算法的优缺点具有挑战性。例如,在纽约市出租车数据集(图1左侧)中,以灰色突出显示的子序列是一个异常值,因为它具有明显较小的值并形成下坡,而大多数子序列是上坡;而蓝色标记的子序列是异常值,因为其谷较宽。简单地获得该数据集的总体性能将无助于解释算法可以或不能处理哪些类型的异常值。此外,标记数据集通常既费时又昂贵。在实践中,正如[13]中指出的,现实世界的数据集可能会被错误地标记为缺陷。因此,研究人员经常求助于合成数据集,因为他们可以方便地隔离离群值类型,以清楚地解释算法的行为。
    然而,由于离群值定义的模糊性,正确生成时间序列数据的合成数据集并非易事。文献中的合成方法可能非常不同,因为它高度依赖于离群值的定义。这一研究领域的大多数论文只是遵循并扩展了非序列数据中的离群值定义,并将其分类为点离群值、上下文离群值和集合离群值,如图3所示。不幸的是,这种分类通常仍然依赖于点之间的相似性,并且没有对时间序列数据中一般的时间结构建模。因此,由于上下文的模糊性,定义可能不明确。例如,在图1中,以灰色、蓝色和绿色标记的异常值具有非常不同的行为,分别具有不寻常的形状、较低的季节性和下降趋势。然而,根据现有分类法,这三个离群值都将被视为集体离群值。基于此,由于上下文的模糊性,合成这些异常值将是一个挑战。
    之前的一些工作已经讨论了如何生成合成数据集。例如,研究人员合成了具有异常个体点的时间序列数据,以模拟电力负荷监测、边缘设备故障和服务器入侵监测等领域的故障或入侵。同时,之前的工作尝试将点的合成集合注入正弦波,以模拟发电厂和心电图监测等应用中的异常事件和行为。虽然这些研究揭示了如何合成数据,但它们的离群值定义仅关注其特定应用,因此合成离群值通常仅针对目标域设计。因此,由于我们没有一个通用的合成标准,因此如何合成离群值以对算法进行基准测试仍不清楚。
    为了弥补这一差距,我们旨在更深入地研究时间序列数据中的异常值定义,并对合成方法和现有算法进行基准测试。特别是,我们将研究以下问题:1)我们是否可以开发一种能够更好地对异常值(如图1所示的季节性、shapelet和趋势异常值)进行分类的分类法,以指导合成数据集的设计?2) 我们如何有效地合成不同类型的异常值,以更好地了解不同算法的性能。通过回答这些问题,我们做出了以下贡献:
    •我们提出了时间序列异常值的行为驱动分类法,如图2b所示。它通过经验观察和频谱分析来查看时间序列数据,并根据清晰的上下文定义将异常值分为点型和模式型异常值。
    •遵循行为驱动分类法,我们基于新定义提出了一个通用综合标准。我们还为基准测试生成了35个合成数据集。
    •除合成数据集外,我们还确定了四个多元真实世界数据集,涵盖不同应用领域的点和模式异常值。
    •我们在合成数据集和真实数据集上进行了大量实验,以测试9种算法,包括基于预测的模型、多数建模方法和不一致分析方法。我们惊奇地观察到,对于所有类型的异常值,一些经典算法可以优于许多最近的深度学习方法。我们还有趣地观察到,一些算法能够检测某些类型的模式异常值,即使它们是针对点异常值设计的。为了希望这些见解能够激励未来的工作,我们开放了TODS中的所有数据集、预处理和合成脚本以及算法实现。

    2 背景

    在这里插入图片描述
    本节介绍了时间序列数据中先前的离群值定义的背景。非连续数据中的异常值通常定义为与大多数实例显著偏离的数据实例。然而,由于观测值之间的时间相关性,在时间序列数据中定义异常值并非易事。现有研究通常遵循非连续数据中的离群值定义。具体而言,他们通过行为分析定义了序列数据中的离群值,并将其分类为点离群值、上下文离群值和集体离群值。图3说明了通常用作事实标准的三种异常值:
    •点异常值定义为相对于其余数据异常的单个实例。极值可能导致严重后果,因此点离群点往往是顺序离群点检测研究的重点。
    •上下文异常值是在特定上下文下异常的单个实例,例如同一谐波模式中的不一致点。上下文异常值通常在其自身上下文中具有相对较大/较小的值,但不是全局值。识别上下文异常值通常被认为更具挑战性,文献对此进行了广泛探讨。
    •集体异常值定义为整个数据集异常的相关数据实例的集合。具体而言,集体异常值的各个点本身可能并不异常,但它们的同时出现会成为异常值。集体离群值在序列数据中普遍存在,因为时间点之间往往存在强相关性。
    尽管上述分类涵盖了单个实例和实例集合,但由于上下文的模糊性,明确定义集合和上下文异常值仍然很重要。在文献中,上下文异常值的上下文通常非常不同。它们可以是一个小窗口,包含相邻点或在季节性方面具有相似相对位置的点。同样,只有在明确的背景下才能明确定义集体异常值。例如,在图1中,shapelet、季节性和趋势异常值在不同环境下具有完全不同的行为。然而,当前的分类法将所有这些异常归类为集体异常值,因为它们都是多个时间点的异常值。为了弥补这一差距,这项工作旨在通过上下文的明确和统一定义来细化序列离群值定义。

    3 回顾离群定义和合成标准

    本节介绍了时间序列异常值的新分类法。我们首先通过经验观察和谱分析重新审视和激励时间序列数据的行为。然后,我们提出了一种新的基于点和模式的离群值分类法,具有明确的上下文定义。最后,我们讨论了现有的合成方法,并基于我们的新定义提出了一个通用的合成准则。

    3.1 序列数据中的行为

    对时间序列数据建模的最常见方法是基于经验观察,将数据视为一系列数据点,并研究点之间的关系。形式上,具有t个时间戳的时间序列数据X可以表示为数据点的有序序列:
    X = ( x 1 , x 2 , ⋯   , x t ) , (1) X=(x_1,x_2,\cdots,x_t),\tag{1} X=(x1,x2,,xt),(1)
    其中, x i x_i xi是i时刻的数据点 i ∈ T , T = { 1 , 2 , ⋯   , t } i\in T,T=\{1,2,\cdots,t\} iT,T={1,2,,t}。通过向添加维度,可以自然地将该公式扩展到多元对应项。以前的工作通常遵循经验观察来研究点、上下文或集体异常值。然而,这种公式没有考虑数据的时间结构,如趋势和季节信息。例如,给定两个分别具有异常shapelet和异常高频的异常子序列,它们都将被识别为集体异常值。这使得难以分析异常值的原因并理解检测算法的性能。
    为了更好地建模时间序列数据的时间结构,我们可以使用谱分析来查看数据。谱分析最常用的方法是将时间序列数据表示为正弦波的组合: X = ∑ n A s i n ( 2 π ω n T ) + B c o s ( 2 π ω n T ) , X=\sum_n Asin(2\pi \omega_n T)+Bcos(2\pi \omega_n T), X=nAsin(2πωnT)+Bcos(2πωnT),其中 s i n ( 2 π ω n T ) sin(2\pi \omega_n T) sin(2πωnT) c o s ( 2 π ω n T ) cos(2\pi \omega_n T) cos(2πωnT)是shapelet函数,并且将一系列时间片 T = { 1 , 2 , ⋯   , t } T=\{1,2,\cdots,t\} T={1,2,,t}转换成值。A和B是定义范围的系数。X是通过对具有不同频率的多个波的值求和而获得的, ω n \omega_n ωn表示波n的频率。虽然正弦波可以很好地表示数据的形状和季节性,但它不能建模趋势。为了解决这一问题,我们采用结构建模和频谱分析,将时间序列表示为趋势、季节性和形状元素的组合:
    X = ρ ( 2 π ω T ) + τ ( T ) , (2) X=\rho(2\pi \omega T)+\tau(T),\tag{2} X=ρ(2πωT)+τ(T),(2)
    其中 ρ ( 2 π T , ω ) = ∑ n [ A s i n ( 2 π ω n T ) + B c o s ( 2 π ω n T ) ] \rho(2\pi T,\omega)=\sum_n[Asin(2\pi \omega_n T)+Bcos(2\pi \omega_n T)] ρ(2πT,ω)=n[Asin(2πωnT)+Bcos(2πωnT)]是近似去趋势序列的shapelet函数(这里 ω = { ω 1 , ω 2 , ⋯   , ω n } \omega=\{\omega_1,\omega_2,\cdots,\omega_n\} ω={ω1,ω2,,ωn},为了简写), τ ( ⋅ ) \tau(\cdot) τ()表示一个趋势函数,用于模拟序列的总体方向。该公式可以表示具有各种趋势的各种形波图案,如锯齿波和方波。例如对于具有线性增加趋势的正弦波,我们可以让 A = 1 2 n + 1 , B = 0 , ω n = 2 n + 1 ( n ∈ { 0 , 1 , ⋯   , N } ) , A=\frac{1}{2n+1},B=0,\omega_n=2n+1(n \in \{0,1,\cdots,N\}), A=2n+11,B=0,ωn=2n+1(n{0,1,,N}), τ \tau τ是线性函数 τ ( T ) = T \tau(T)=T τ(T)=T,其中N控制了平方度的水平。

    3.2 细化连续离群值定义

    时间序列数据的现有分类法主要关注单个数据点,例如点和上下文异常值。当集合离群点考虑子序列时,它只是将子序列视为多个点的组合行为,忽略了子序列的谱信息。在本小节中,我们提出了一个新的分类法,如图2b所示。我们对时间序列中的异常值定义进行了细化,并确定了五种类型的异常值,它们涵盖了逐点和逐模式行为。

    3.2.1 点离群

    逐点异常值是指单个时间点上的意外事件。一个时间点的异常行为可以是毛刺或尖峰,其中尖峰是与其他点相比具有极值的单个点,而毛刺是其值与其相邻点相对偏离的单个点。根据这种直觉,给定时间序列 X = ( x 1 , x 2 , ⋯   , x t ) X=(x_1,x_2,\cdots,x_t) X=(x1,x2,,xt),可以在具有不同阈值 δ \delta δ的逐点行为下定义两种离群值类型:
    ∣ x t − x ^ t ∣ > δ , (3) |x_t-\hat x_t|>\delta,\tag{3} xtx^t>δ,(3)
    其中 x ^ t \hat x_t x^t是预测值,它可以是回归模型的输出或简单地是全局平均值或上下文窗口的平均值。
    全局异常值是指与其他点显著偏离的点。它们通常是序列中的峰值,因此阈值可以定义为:
    δ = λ ⋅ σ ( X ) , (4) \delta=\lambda \cdot \sigma(X),\tag{4} δ=λσ(X),(4)
    其中 σ ( X ) \sigma(X) σ(X)是时间序列的标准差, λ \lambda λ控制了范围。
    上下文异常值是偏离其对应上下文的点,其定义为特定范围内的相邻时间点。这种类型的异常值是序列数据中的小故障,可以定义为:
    δ = λ ⋅ σ ( X t − k , t + k ) , (5) \delta=\lambda \cdot \sigma(X_{t-k,t+k}),\tag{5} δ=λσ(Xtk,t+k),(5)
    其中 X t − k , t + k = ( x t − k , x t − k + 1 , x t − k + 2 , ⋯   , x t + k ) X_{t-k,t+k}=(x_{t-k},x_{t-k+1},x_{t-k+2},\cdots,x_{t+k}) Xtk,t+k=(xtk,xtk+1,xtk+2,,xt+k)表示具有上下文窗口大小k的数据点的上下文,并 λ \lambda λ控制阈值。

    3.2.2 模式离群

    在这里插入图片描述
    模式异常值是异常子序列,通常是不一致或不协调。模式异常值有三个主要原因:基本形状、季节性变化和趋势变化。具体来说,给定时间序列数据X,从时间戳i到j的基础子序列 X i , j X_{i,j} Xi,j可以由具有趋势和季节性的shapelet函数表示:
    X i , j = ρ ( 2 π ω T i , j ) + τ ( T i , j ) , (6) X_{i,j}=\rho(2\pi\omega T_{i,j})+\tau(T_{i,j}),\tag{6} Xi,j=ρ(2πωTi,j)+τ(Ti,j),(6)
    其中, ρ \rho ρ定义了子序列的基本形状, ω \omega ω是子序列的季节特征, τ \tau τ是描述整体 X i , j X_{i,j} Xi,j的趋势函数。通过分别分析三个组件,我们确定了模式行为中的三种异常值,如图4所示。
    Shapelet异常值是指与正常Shapelet相比具有不同基本Shapelet的子序列,可以被定义为
    s ( ρ ( ⋅ ) , ρ ^ ( ⋅ ) ) > δ , (7) s(\rho(\cdot),\hat\rho(\cdot))>\delta,\tag{7} s(ρ(),ρ^())>δ,(7)
    其中s是测量两个子序列之间的不相似性的函数,如动态时间扭曲。 ρ ^ \hat\rho ρ^是预期子序列的基本形元素, δ \delta δ是一个阈值。
    季节性异常值是与总体季节性相比具有异常季节性的子序列。它们具有相似的基本形状和趋势,但具有不寻常的季节性,定义为
    s ( ω , ω ^ ) > δ , (8) s(\omega,\hat\omega)>\delta,\tag{8} s(ω,ω^)>δ,(8)
    其中 ω ^ \hat\omega ω^是预期子序列的季节性, δ \delta δ是阈值。
    趋势异常值表示显著改变时间序列趋势的子序列,导致数据平均值的永久性变化。这种类型的异常值保留了正态性的基本形状和季节性,但趋势的斜率变化很大,可以定义为:
    s ( τ ( ⋅ ) , τ ^ ( ⋅ ) ) > δ , (9) s(\tau(\cdot),\hat\tau(\cdot))>\delta,\tag{9} s(τ(),τ^())>δ,(9)
    其中 τ ^ \hat\tau τ^是正常子序列的趋势性, δ \delta δ是阈值。

    3.3 合成离群值

    在这里插入图片描述
    在无异常数据中引入合成离群值是评估检测算法的一种非常常见的策略。合成策略之一是以相加方式注入零星的异常值。具体而言,通过将原始数据点与整个数据的平均值和标准差相加来合成异常值,以确保其异常特性。另一种策略是用双正弦模式替换现有子序列,例如,用正弦波随机替换余弦波的子序列。表1比较了不同应用中采用的合成方法。虽然这些研究引入了各种综合策略,但它们只关注具体应用,不能作为基准测试的一般综合标准。此外,他们都不考虑趋势异常值。在本小节中,我们介绍了一个通用统一的综合标准,以对不同类型的异常值进行评估。
    全局异常值。根据等式4,我们可以通过以下方式合成全局异常值: x ^ t = μ ( X ) , δ = λ ⋅ σ ( X ) , \hat x_t=\mu(X),\delta=\lambda\cdot\sigma(X), x^t=μ(X),δ=λσ(X),比如 x t = μ ( X ) ± λ ⋅ σ ( X ) , x_t=\mu(X)\pm\lambda\cdot\sigma(X), xt=μ(X)±λσ(X),其中 μ ( X ) \mu(X) μ(X)代表着均值, σ ( X ) \sigma(X) σ(X)代表着标准差, λ \lambda λ控制 x t x_t xt偏离期望值的程度。
    **上下文异常值。**预期上下文异常值会局部偏离预期值,而不是全局偏离预期值。基于等式5,我们可以设 x ^ t = μ ( X t − k , t + k ) , δ = λ ⋅ σ ( X t − k , t + k ) , \hat x_t=\mu(X_{t-k,t+k}),\delta=\lambda\cdot\sigma(X_{t-k,t+k}), x^t=μ(Xtk,t+k),δ=λσ(Xtk,t+k),比如 x t = μ ( X t − k , t + k ) ± λ ⋅ σ ( X t , t + k ) , x_t=\mu(X_{t-k,t+k})\pm\lambda\cdot\sigma(X_{t,t+k}), xt=μ(Xtk,t+k)±λσ(Xt,t+k),其中 μ \mu μ σ \sigma σ是从子序列中获得。
    shapelet异常值。基于等式7,我们能够合成一个从时间i到j的shapelet异常,通过设置 ρ \rho ρ为另外一个shapelet其中 X i , j = ρ ( 2 π ω ^ T i , j ) + τ ^ ( T i , j ) , X_{i,j}=\rho(2\pi\hat\omega T_{i,j})+\hat\tau(T_{i,j}), Xi,j=ρ(2πω^Ti,j)+τ^(Ti,j), ω ^ \hat\omega ω^是预期的季节性, τ ^ \hat\tau τ^是预期的趋势, ρ \rho ρ是另外一个shapelet。例如,我们可以将 ρ \rho ρ设置为方波,以合成正弦波中的shapelet异常值,如图4a所示。
    季节性异常值。基于等式8,我们可以类似地合成从时间戳i到j的季节性异常值: X i , j = ρ ^ ( 2 π ω T i , j ) + τ ^ ( T i , j ) , X_{i,j}=\hat\rho(2\pi\omega T_{i,j})+\hat\tau(T_{i,j}), Xi,j=ρ^(2πωTi,j)+τ^(Ti,j),其中 ω \omega ω是另外一个季节性同时 ρ ^ \hat\rho ρ^ τ ^ \hat\tau τ^是预测值。图4b通过将季节性设置为 2 ω ^ 2\hat\omega 2ω^给出了季节性异常值的示例。
    趋势异常值。类似地,我们可以按照等式9合成趋势异常值 X i , j = ρ ^ ( 2 π ω ^ T i , j ) + τ ( T i , j ) . X_{i,j}=\hat\rho(2\pi\hat\omega T_{i,j})+\tau(T_{i,j}). Xi,j=ρ^(2πω^Ti,j)+τ(Ti,j).图4c显示了该示例,其中 τ ( T i , j ) = { − 1 , − 2 , − 3 , ⋯   , − ( j − i + 1 ) } . \tau(T_{i,j})=\{-1,-2,-3,\cdots,-(j-i+1)\}. τ(Ti,j)={1,2,3,,(ji+1)}.
    **讨论.**与现有的定义和合成方法不同,我们引入了结构时间序列模型来描述模式行为,原因如下。首先,该公式可以提供清晰的上下文来描述结构模式,并定义shapelet、季节性和趋势异常值,这不能通过简单地将子序列视为点的集合来实现。其次,按照这个公式,我们可以通过插入其他形状、季节或趋势模式来合成不同类型的异常值。这使我们能够隔离离群值类型并关注特定类型,从而便于分析和解释现有算法的行为。

    4 基准实验

    在本节中,我们介绍了基于所提出的标准的35个合成数据集,并识别了四个真实世界的多元序列数据,这些数据涵盖了点和模式异常值。我们进一步在这些数据集上对TODS项目中实现的9种现有算法进行了基准测试。接下来,我们首先描述了合成数据集和真实数据集的细节,然后详细阐述了所包含的算法。最后,我们给出了基准测试结果和分析。

    4.1 数据集描述

    我们在无监督的环境下进行基准实验。每个算法都在同一数据集上训练和测试。基于由具有给定污染率的单个算法生成的离群值得分来识别离群值。基准实验在合成和真实数据集上进行,如下所示:
    合成数据集。合成数据集的目标是检查算法识别5种类型的提出离群值的能力。我们使用20个单变量和15个多变量数据集生成35个合成数据集,以详细检查现有算法。具体而言,我们采用正弦波作为基本shapelet,生成20个具有不同离群值比率的单变量序列数据,其中每个数据集仅包含一种离群值。然后,我们还生成了15个多变量序列数据,这些数据将不同类型的离群点组合成单个数据集。
    真实世界数据集。我们从四个不同的应用场景中确定了四个公共可用的真实世界数据集,其中两个是事件驱动的应用程序,两个是基于时间的应用程序:信用卡欺诈检测、用于饮用水监控的物联网、服务器攻击监控和极端空间天气检测。信用卡交易数据和服务器监控数据是事件驱动的序列数据,包含逐点异常值。IoT数据和空间气象数据是时间序列数据,包含模式异常值。
    更多数据集详情见附录B。

    4.2 序列数据离群检测算法

    现有的序列离群点检测算法根据其工作机制可分为三类:预测偏差、多数建模和不一致分析。
    预测偏差通过测量预测值和原始数据之间的差距来识别异常值。这类算法背后的假设是,给定数据可通过回归分析重建;如果单个实例不可回归,那么它很可能是异常值。自回归(AR)假设每个单独的实例与其过去的几个实例线性相关。梯度增强回归(GBRT)以窗口方式处理时间序列数据,并基于分段子序列执行回归。从自回归导出,采用具有长短期记忆单元的循环神经网络(LSTM-RNN)来建模数据实例之间的非线性时间相关性。
    大多数建模假设正常数据实例在超空间中是紧凑的。它旨在通过对规则数据分布建模来识别异常值和正态性之间的决策边界。一类SVM(OCSVM)最大化原点和法线之间的边界,并将决策边界定义为确定边界的超平面。孤立森林(IForest)构建了一个二叉树集合来隔离数据点,并将决策边界定义为单个实例与根的接近度。自编码器(AE)将数据点映射到低维潜在空间,从潜在空间表示重构数据点,并通过假设异常值的重构误差显著大于正常值来定义决策标准。生成性对抗网络(GAN)使用生成器和判别器执行最小-最大优化,其中判别器旨在建模正态性和生成器目标,生成可由判别器识别为正常值的异常值。决策准则被定义为个体实例上的判别器损失。
    不一致分析测量子序列之间的相似性,旨在将不一致识别为异常值。具体而言,序列数据将通过滑动窗口分割成子序列。然后,将执行不同的距离计算以评估每个子序列的不一致性。不一致分析通常用于识别模式异常值。子序列聚类利用无监督算法,如OCSVM和IForest,利用分段子序列来检测模式异常值。矩阵轮廓(MP)通过计算每个子序列到其余子序列的最小距离来构造距离轮廓,然后基于距离轮廓识别异常子序列。在基准测试中,我们采用了OCSVM和IForest的子序列聚类。
    对于合成数据集,我们将所有算法的离群比例与单个数据集的异常率对齐。对于真实数据集,我们建立了6个污染比0.01、0.05、0.1、0.15、0.2、0.25,并报告了每个算法的最佳结果。附录C中提供了有关单个算法超参数的更多详细信息。

    4.3 结果与分析

    在这里插入图片描述
    在这里插入图片描述
    我们在图5中报告了具有不同离群值比率的数据集的F1分数或涉及的离群值类型的数量,并在表2中列出了真实数据集的结果。由于篇幅限制,合成数据集的详细基准结果在附录D中列出。
    合成数据集。图5总结了35个具有F1分数的合成数据集的基准结果。具体而言,图5a至5e总结了20个单变量序列数据中与离群值比率相关的F1得分,图5f显示了15个多变量合成数据集中与所涉及离群值类型数量相关的平均F1得分。我们提出以下观察。
    首先,在所有合成数据集上,经典算法通常优于基于深度学习的方法。具体而言,AR在检测上下文和shapelet异常值方面优于所有其他算法;OCSVM和IForest在多变量设置的全局异常值和多个异常值方面优于其他算法;而不一致分析算法在季节性和趋势异常任务中表现最佳。
    其次,对于大多数算法来说,检测上下文异常值是一个挑战。在所有的算法中,只有AR能够实现良好的性能。一个可能的原因是AR采用上下文点进行自回归,并在上下文窗口中建模正态,这有利于检测上下文异常值。
    第三,设计用于检测逐点异常值的基于预测的算法也适用于某些逐模式异常值。例如,AR在检测shapelet异常值时优于所有其他算法。这背后的原因是,我们采用平方正弦作为异常形状,以增加难度。然而,由于shapelet异常值的季节性和趋势与正态性保持一致,合成异常值的直角部分将被AR视为上下文异常值,因此产生优异的性能。
    第四,当窗口大小设置不当时,MP采用的局部z归一化可能会损害识别零中心序列上具有不同方向的趋势异常值的性能。如图6所示,在窗口大小小于异常值范围的情况下,在对两个趋势异常值应用局部z归一化后,趋势异常值的值范围将类似于正常子序列。此外,两个异常值的原始趋势偏移被转移到它们的相邻点,这使得MP难以识别真正的趋势异常值。
    最后,深度学习方法(如RNN和GAN)只能处理有限类型的异常值。在图5f中,当涉及更多类型的异常值时,GAN和RNN的平均F1得分趋于降低。这表明,这两种算法在具有多种离群值或混合离群值的真实数据集上的性能可能有限。
    在这里插入图片描述
    真实世界数据集。表2列出了在真实数据集上每个算法的最佳结果。在实际实验中,我们在{0.01、0.05、0.1、0.15、0.2、0.25}中搜索所有算法的离群比例,并为每个数据集选择最佳精度、召回率和F1分数。由于GAN无法从所有四个真实数据集中识别任何异常值,因此我们在基准测试结果中排除了该算法。根据表2,我们可以得出以下两个观察结果。
    首先,经典算法通常优于深度学习方法。除网络攻击数据集外,所有其他数据集均以AR、IForest和OCSVM为主。尽管这反映在综合基准中,但令人惊讶的是,GAN无法识别四个数据集中的任何异常值。一种可能的解释是,现实世界数据集中的离群值非常复杂,具有非常不同的模式,这与图5f中多元合成基准的结果一致,即GAN可能无法从具有多种离群值的数据集中检测离群值。
    其次,当与OCSVM结合时,子序列聚类算法对真实数据不具有鲁棒性。如表所示,在所有数据集中,OCSSVM的性能最差,与其他算法存在巨大差距。这是因为OCSVM假设所有正常子序列都可以映射到超空间中的同一簇中,这在现实数据集中可能不是真的。具体而言,我们观察到,与普通OCSVM相比,具有子序列分割的OCSVM花费的训练时间超过10倍。这表明,找到一个将所有正常子序列聚类到一个类中的超空间是非常困难的,因此,如果没有设置最大值,训练迭代将永远不会停止。

    5 讨论

    如[13]所述,真实世界中的异常值很复杂,可能没有很好的标记。这是由于现有分类法的定义不明确造成的,并可能导致算法能力的混乱。为了更好地研究算法,一种方法可以是创建具有合成离群值的真实合成数据集,这在[13]中提出。然而,研究人员可能更倾向于在真实数据集中进行验证。为了实现这一点,可以利用现有数据集上提出的分类法直接重新标记真实数据。例如,在图1所示的Taxi和CPU数据集中,原始标签位于含义不明确的单个点上。为了解决这个问题,可以更仔细地观察原始标记的离群值,并对每个离群值采用我们的合成标准,以确定离群值的上下文/范围。然后,我们可以根据识别出的各个离群值的范围/上下文重新标记离群值,以获得更清晰的标签。此外,数据注释者还可以在发布数据集之前参考建议的分类法和标准来细化标签。

    6 结论

    在这项工作中,我们回顾了序列数据中的离群值定义,并提出了一种行为驱动的分类法来对时间序列离群值进行分类。点行为和模式行为中明确的上下文定义使得所提出的分类法非常适合合成离群值。在分类的基础上,我们提出了一个具有35个相应合成数据集的通用综合标准,并识别了来自不同领域的4个多变量真实世界数据集。然后,我们使用这些数据集对9种算法进行了基准测试,并从经验上证明,经典算法在合成数据集和真实数据集中都具有令人惊讶的优越性。我们希望从我们的基准实验中获得的这一见解能够激励未来的算法设计。为了促进时间序列异常点检测的可再现性和快速实验流水线,我们公开了所有数据集、脚本和算法实现,我们将积极维护该项目。未来,我们将用更多的数据集丰富我们的基准,并用更精细的综合标准完善异常值的定义。我们还将对更先进的算法进行基准测试,并利用该平台设计更有效的算法来处理不同类型的异常值。

  • 相关阅读:
    解决GET请求中文乱码问题
    一级必杀,防不胜防的漏洞,WEB安全基础入门—文件上传漏洞
    在MySQL中使用VARCHAR字段进行日期筛选
    laravel 事件 & 监听
    使用Pritunl OpenVPN远程连接:实现安全高效的远程访问
    现在完成进行时习题
    maven管理android项目
    基于若依(SpringBoot前后分离版-vue)的WebSocket消息推送实现
    在Winform开发中,使用Async-Awati异步任务处理代替BackgroundWorker
    啪,还敢抛出异常
  • 原文地址:https://blog.csdn.net/c_cpp_csharp/article/details/126466264