摘要
近期在传感器技术上的进步使得实时收集大量数据成为可能。然而,由于庞大的数据量,它永远不会被一个算法检查,更不用说让一个人去做这个事情。缓解这个问题的一个方法是完成某些类型的异常检测,标记不寻常的模式以供人或更多CPU密集型算法进一步检查。大部分当前的解决方案是对于部分领域的“custom made”,比如ECG监控,阈值监控等。这个定制需要领域专家额外的付出。此外,手工制作的系统容易受概念漂移的影响。在这个演示中,我们将展示一个在线异常检测系统不需要为个人领域定制,然而会表现出异常高的精确度/recall。系统基于最近引入的时间序列bitmaps想法。为了证明我们系统的通用性,我们将允许对来自ECGs、航天飞机遥测监控、视频监控和呼吸数据等不同领域的独立标注数据集进行测试。此外,我们邀请参与者使用任何网络上可获得的数据集测试我们的系统。
1. 简介
近期在传感器技术上的进步使得实时收集大量数据成为可能。然而,由于庞大的数据量,它永远不会被一个算法检查,更不用说让一个人去做这个事情。缓解这个问题的一个方法是完成某些类型的异常检测,标记不寻常的模式以供人或更多CPU密集型算法进一步检查。大部分当前的解决方案是对于部分领域的“custom made”,比如ECG监控,阈值监控等。这个定制需要领域专家额外的付出。此外,手工制作的系统容易受概念漂移的影响。在这个演示中,我们将展示一个在线异常检测系统不需要为个人领域定制,然而会表现出异常高的精确度/recall。系统基于最近引入的时间序列bitmaps想法。为了证明我们系统的通用性,我们将允许对来自ECGs、航天飞机遥测监控、视频监控和呼吸数据等不同领域的独立标注数据集进行测试。此外,我们邀请参与者使用任何网络上可获得的数据集测试我们的系统。
2. 背景和相关工作
在这个部分,我们简要回顾混沌博弈表示和时间序列的符号表示,它们是我们异常检测技术的核心。
2.1 混沌博弈表示
我们的可视化技术部分灵感来自一种绘制图形的算法,该算法被称为混沌游戏[1]。该方法可以产生DNA序列的表示,同时显示本地模式和全局模式。
基本思想是将长度为L的DNA子串的频率计数映射成一个2L×2L矩阵,如图2所示,然后用颜色编码这些频率计数。从我们的观点来看,关键的观察是序列的CGR表示允许对序列中的模式进行研究,从而使人眼有可能识别隐藏的结构。
例如,如果我们取四种常见物种的线粒体DNA序列的前5000个符号,并使用它们来重制它们自己的文件图标,我们就可以得到该方法的潜在效用的提示。下面的图3说明了这一点。请注意,黑猩猩是我们所熟悉的,非洲象Loxodonta africana和印度象Elephas maximus分别是非洲象和印度象。即使我们不知道这些特殊的动物,我们也可以毫无疑问地认识到有两对高度相关的物种正在被考虑之中。
2.2 符号化时间序列表示
虽然文献中至少有200种将实值时间序列转换为离散符号的技术,但Lin等人的SAX技术是独特的,非常适合ata挖掘。SAX是惟一允许原始空间中距离的下界的符号表示形式。
SAX表示是通过获取一个实值信号并将其分成大小相同的部分来创建的。然后计算每个部分的平均值。将每一节的均值代入,得到数据的降维逐段常数逼近。然后将这种表示离散化,以生成带有近似等概率符号的ord。图4显示了将一个简短的时间序列转换为SAX单词baabccbc。
有人指出,在处理非常长的时间序列时,将整个时间序列转换为单个SAX单词[11]不一定是一个好主意。因此,对于长时间序列,我们滑动一个较短的窗口(称为feature窗口),并从中获得一组较短的SAX单词。
注意,用户必须同时选择滑动特征窗口N的长度和要分割N的等大小部分的数量N(正如我们将看到的,字母大小没有选择的余地)。N的最佳选择应该反映时间序列中事件发生的自然尺度。例如,对于心电图,这大约是一个或两个心跳的长度。n的取值取决于信号的复杂度。直观地说,人们希望在近似保真度和降维之间取得良好的折衷。正如我们将看到的,所提出的技术对参数选择不是太敏感。
3. 时间序列异常检测
3.1 时间序列Bitmaps
至此,我们已经看到混沌游戏bitmaps可以用于可视化离散序列,SAX表示是一种离散时间序列表示,它在数据挖掘方面显示了巨大的实用价值。考虑把这些想法结合起来是很自然的。
混沌游戏bitmaps是为字母表大小为4的序列定义的。SAX可以生成任意字母表大小的字符串。事实证明,许多作者都报告过基数为4是针对各种问题的不同数据集[2][3][6][7][8][9]的最佳选择。
我们需要为四个SAX符号a、b、c和d定义一个初始顺序。我们使用简单的字母顺序,如图5所示。
在将原始时间序列转换为SAX表示形式之后,我们可以计算长度为L的SAX“子单词”的频率,其中L是所需的递归级别。1级频率只是4个符号的原始计数。对于级别2,我们计算大小为2的子单词对(aa、ab、ac等)。注意,我们只计算从单个SAX单词中提取的子单词。例如,在图5中右的SAX表示中,第一行的最后一个符号是a,第二个单词的第一个符号是b。
一旦获得所需长度的所有子词的原始计数,并记录在网格的相应像素中,我们将其除以最大值,从而对频率进行归一化.因此,像素值P的范围从0到1。最后一步是将这些值映射到颜色。在上面的例子中,我们映射到灰度,0 =白色,1 =黑色。然而,人们普遍认为灰度并不是感知上一致的[10]。如果一个像素值的微小变化在该值的范围内几乎是同样可感知的,则称颜色空间在感知上是一致的。对于本文中的所有图像,我们将像素值编码为[P, 1-P, 0]在RGB颜色空间中。
对于相同大小的位图,我们将它们之间的距离定义为每对像素之间距离的平方和。更正式,两个n×n位图英航和BB,它们之间的距离定义为。
3.2 异常检测
我们创建两个连接的窗口,并将它们在序列中滑动到一起。后一种被称为“领先窗口”,它显示了异常模式的预测距离。一个合理的值应该是feature窗口长度的两到三倍。前者称为延迟窗口,其大小表示要记住的过去的内存。通常,它至少应该和前置窗口一样长。我们将每个窗口转换为SAX表示形式,计算所需级别上SAX“子单词”的频率,并获得相应的位图。测量两个位图之间的距离,并将其作为每个时间实例的异常分数进行报告,绘制位图以可视化两个窗口之间的相似性和差异性。
使用该工具有两种方法,非监督(一个时间序列)和监督(两个时间序列)。对于非监督使用,用户必须指定延迟窗口的大小。对于监督使用,用户必须指定他/她认为包含系统正常行为的时间序列文件。例如,这可能是正常的10分钟心电图,或者是一次成功的太空任务留下的痕迹。在这种情况下,整个训练时间序列可以想象为滞后窗口。
在滑动窗口的每个“步骤”中,我们可以增量地进入一个新的数据点,并以恒定的时间退出一个旧的数据点(只更新每个位图的两个像素)。因此,时间复杂度在时间序列的长度上是线性的。
4.实验评价
为了证明我们系统的通用性,我们对来自ECGs、航天飞机遥测监控、视频监控和呼吸数据等不同领域的独立标注数据集进行了测试。由于篇幅的限制,这里我们只展示了实验结果的一个子集。但是我们在这里主要关注它在异常检测中的应用。我们敦促感兴趣的读者咨询[5]的大规模彩色复制和其他细节。
图6以一个ECG数据的子集为例。一位心脏病专家分别在0.4和1.1标记处注释了两次室性早搏,在1.0标记处注释了一次室上逸出搏动。我们的方法很容易检测到这三种异常。
图7展示了一个非常复杂并且有噪声的ECG。但是根据一位心脏病专家的说法,在0.23的范围内只有一次心跳异常。我们的工具很容易找到它。
5.示范计划
我们的演示将包括以下三个部分。
首先,我们将展示一些可以应用我们的技术的实际应用。这些例子将为观众提供时间序列异常检测任务的见解。
其次,通过使用来自不同领域的真实数据集,我们将展示我们的系统的实验评估。
最后,我们会邀请观众自己互动地玩这个工具。鼓励听众测试他们自己的数据集。