上下文异常和集体异常之间的区别

机器算法验证 自习 异常检测
2022-03-28 08:01:31

上下文和集体异常定义如下(来源):

上下文异常。如果数据实例在特定上下文中异常(但不是其他情况),则将其称为上下文异常(也称为条件异常)

集体异常。如果相关数据实例的集合相对于整个数据集是异常的,则称为集体异常。集体异常中的单个数据实例本身可能不是异常,但它们作为一个集合一起出现是异常的。

我见过的集体异常的常见例子是心电图中的节奏中断

在此处输入图像描述

我的问题是,这不能也被视为一组上下文异常吗?如我所见,异常序列中的任何数据实例也是上下文异常(前一点和下一点“太平”)。

有没有使用上下文异常检测算法无法检测到的集体异常的例子?在处理上下文异常与集体异常时,需要考虑哪些关键区别?

2个回答

该 ECG 时间序列只是一个数据流,因此它可能不是最清楚的示例。如果考虑一种模式的存在,我会说错过一个节拍只是一种常规异常。但也可以认为是上下文异常,Y 值是正常的,但不是在那个特定时间点。集体异常需要监控多个数据流,例如多人的心跳。上下文异常需要我们可以访问不同类型的数据,从中我们可以推断出上下文。

假设我们有一个城市中许多(1000)人的心跳数据。例如,每 5 分钟记录一次 BPM。所有人的总体 BPM 中位数为 80,1% 和 99% 的百分位数为 30 和 180。

如果一个人的心跳值小于 30 或高于 180,则通常会出现异常。例如 20 或 230。正常值的示例可能是 50(非常放松)或 150(锻炼)。

但是,如果所有 1000 人的平均值在一个时间间隔内为 150 BPM,那就是集体异常。虽然单独锻炼很好,但每个人都不太可能同时锻炼!

如果一个人在早上 5 点的 BPM 为 150,这可能是上下文异常。值一般都还可以,但一个人在半夜锻炼的可能性很小!这里的上下文是一天中的时间。

或者,如果我们可以访问人的状态,并且状态 == 'resting',并且 BPM 为 150,那么这也是上下文异常(上下文是人的状态) - 无论一天中的什么时间。

在您在问题中提到的同一篇论文中,作者在定义异常类型之后立即说:

需要注意的是,虽然点异常可能发生在任何数据集中,但集体异常只能发生在数据实例相关的数据集中。相反,上下文异常的发生取决于数据中上下文属性的可用性。如果针对上下文进行分析,则点异常或集体异常也可以是上下文异常。因此,通过结合上下文信息,可以将点异常检测问题或集体异常检测问题转换为上下文异常检测问题。

所以你的第一个问题的答案是肯定的,这个例子可以看作是一组上下文异常。一般来说,如果你可以定义一个上下文,那么它就是一个上下文异常。

至于最后一个问题,使用不同的技术检测上下文异常和集体异常,在同一篇论文中对此进行了简要描述。