【论文阅读】Ultrafast Local Outlier Detection from a Data Stream with Stationary Region Skipping

【论文阅读】Ultrafast Local Outlier Detection from a Data Stream with Stationary Region Skipping

论文来源:SIGKDD 2020

原文地址:https://dl.acm.org/doi/abs/10.1145/3394486.3403171

ABSTRACT

ABSTRACT

数据流中实时检测异常值是一个越来越重要的问题,尤其是由于物联网的普及和数字孪生的出现,传感器生成的数据流在许多应用程序中比比皆是。已经提出了几种基于密度的方法来解决这个问题,但可以说它们都不够快,无法满足实际应用程序的性能需求。本文基于一项新颖的观察,即在数据空间的许多区域中,数据分布几乎不会跨窗口滑动发生变化。我们提出了一种新算法,STARE,它识别数据分布几乎没有变化的局部区域,然后跳过更新这些区域中的密度——这个概念称为静止区域跳跃。两种技术,数据分布近似和基于累积净变化的跳过(cumulative net-change-based skip),被用来高效和有效地实现这个概念。使用合成和真实数据流的大量实验以及案例研究表明,STARE比现有算法快几个数量级,同时实现相当或更高的精度。

Main Idea

这项工作利用了真实数据流中的一个重要特性,它可以潜在地为异常值检测节省大量工作:数据点被倾斜到数据空间中的多个局部区域,并且数据分布在这些区域中几乎是静止的(即变化不显着)特定时间段内的区域。这种观察在窗口流处理中更为明显,因为窗口通常以窗口大小的一小部分滑动,因此,窗口滑动中的过期或新数据点对整个窗口中的数据分布的影响有限(参见图 1) ).

image-20221214142737685

从图中可以看出,随着窗口的滑动,数据的分布有一定的变化,但是整体分布变化不大。利用这一点,本文采取了基于局部密度的方法,找出与其他数据点存在显著不同的数据点标记为异常值。如果点的密度低于其邻居,基于密度的方法能够通过标记数据来有效地找到此类局部异常值,则该点作为异常点,其中数据点的密度由其局部区域的数据分布决定

目前,已经提出了几种基于密度的算法来检测数据流中的局部异常值 [13-16],它们需要估计数据点的密度。现有算法忽略了密度平稳性,每次窗口滑动时都会重复更新窗口中所有数据点的密度;整个数据空间中的这种密度估计会导致二次时间复杂度 [2, 6],这会由于延迟过大而影响及时的异常值检测。我们解决这个问题的关键思想是跳过数据点密度几乎没有变化的局部区域的密度更新,即静止区域。

image-20221214143232314

如上图所示,在前一个窗口(图2a)中有两个离群值𝑥1和𝑥3,并且在窗口滑动后,在当前窗口中(图2c)𝑥2成为一个新的离群值,因为它现在有密度低于其最近的邻居,𝑥3 成为一个内点,因为它现在具有与其最近邻居的密度相似的密度。在前一个窗口和当前窗口之间,数据点的密度仅在右侧的局部区域发生变化。然而,现有算法会全局更新所有数据点的密度(图 2b 上图)。这些过度更新可以通过局部更新来避免(图 2b 下方),这允许跳过左侧的静止区域并仅估计剩余局部区域的密度。 

至此,本文的主要思路已经呈现。利用数据分布不会垮窗口呈现明显变化的统计特性,文章提出了算法STARE,它识别数据分布几乎没有变化的局部区域,然后跳过更新这些区域中的密度,这被称为静止区域跳跃。根据这个思路,在实现时主要由两个方面需要解决:

  • 如何在减少成本与提高速度的情况下,高效地对数据点局部密度进行定义与计算?

  • 在进行静止区域的选择时,采用什么方法?

THE ALGORITHM “STARE”

Overview

image-20221214143745352

为了解决上述的两个问题,文章采用了两个技术:数据分布近似和基于累积净变化的跳过

密度近似

在估计数据点局部密度时,文章使用了核密度估计(KDE)算法。所谓核密度估计,就是采用平滑的峰值函数(“核”)来拟合观察到的数据点,从而对真实的概率分布曲线进行模拟,是一种用来估计函数密度的非参数方法。

现有的工作通过使用内核中心来估计数据点密度,内核中心来自数据点中。STARE也使用了这种方法。不同的是,一些工作在进行密度估计时将所有数据点均作为内核中心来进行密度估计计算,这样导致了计算量过大,速度很慢。

在本文中,STARE将整个窗口分成了若干个网络单元,如图三所示。每个网络单元的中心作为该网络单元的内核中心,用<kci,wi>表示。其中,wi表示该网络单元中数据点的个数。

内核中心 𝑘𝑐 充当网格单元的代表。**令 X𝑑(𝑘𝑐) 表示由𝑘𝑐 表示的 𝑑 维网格单元中的数据点集。**然后,数据空间中的核中心集, KC = {<𝑘𝑐𝑖,𝑤𝑖>|𝑖 = 1,. . . , 𝑚} 在基于网格的结构G中进行管理,称为权重分布网格。

如此,一个数据点的局部密度定义为距离其最近的K个内核中心的加权和。另外,每个内核中心对数据点局部密度计算时的贡献也与其之间的距离有关,距离越远,其贡献便越小。原文中有详细证明。

image-20221214145438173

可以证明,一个网络单元内的数据点的局部密度时有界的。具体证明见原文定义4.2。

数据点x的局部异常值定义为:Font metrics not found for font: .

其中𝜇和𝜎是距数据点x最近的𝜃𝐾个内核中心的局部密度的均值和标准差。

数据分布更新

窗口每滑动一次,旧数据点过期,新数据点进入窗口;因此,在权重分布网格中管理的窗口的数据分布应该相应地更新。 STARE 通过管理净重分布网格(表示为 ΔG)并计算过期和新载玻片之间每个网格单元的净变化来有效地执行此更新,如算法 2 所示。载玻片中的每个数据点都被索引到一个网格单元在恒定时间,网格单元的净变化是在线性时间内计算非空网格单元的数量,因为它是通过简单的矩阵加法实现的。

image-20221214150125850

静止区域跳过

为了判断网络单元是否需要更新,定义累计误差

令𝑡(= 1,…,𝑡𝑐) 为滑动窗口的索引,ΔG𝑡 为窗口𝑡−1和𝑡之间的ΔG。然后,自窗口𝑡𝑙中最后一次密度更新以来,当前窗口𝑡𝑐中数据点 𝑥的局部密度的累积误差 𝐸(𝑥; 𝑡𝑐,𝑡𝑙 ) 计算为:

image-20221214150900226

该公式主要是为了计算数据点经过滑动窗口更新后产生的误差大小,其中详细符号定义见原文。

文中还定义了误差容忍阈值𝛾,当内核中心的累积误差大于阈值𝛾,便会触发密度更新算法,如算法三所示。另外,原文中还计算了误差上限|ΔD(𝑥)|,有兴趣请参考原文。

image-20221214151428692

异常值检测

文中定义了局部离群值边界:

image-20221214152047492

其中 D𝑙𝑜𝑤 (𝑐) 和 D𝑢𝑝 (𝑐) 是的局部密度边界,𝜇 和𝜎 分别是𝜃𝐾 最近的𝑘𝑐 核中心的局部密度的平均值和标准偏差。

image-20221214152208206

关于局部密度边界的证明也请移步原文。

再使用如下判断找出候选的网络单元,此判断保证了使得选取的候选网络单元中包含了异常分数最高的数据点。

image-20221214152401033

再从这些候选的网络单元中选取异常得分最高的n个数据点即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值