全局异常值和上下文异常值之间的区别?

数据挖掘 分类 数据挖掘 聚类 离群值
2022-03-05 18:18:26

我正在学习 Han、Kamber 和 Pei 的“数据挖掘:概念和技术”。在第 12 章“异常值检测”中,他们指出异常值有 3 种类型:

  1. 全局异常值 - 显着偏离数据集的其余部分
  2. 上下文异常值 - 相对于对象的特定上下文显着偏离
  3. 集体异常值 - 单个数据对象可能不是异常值,但对象作为一个整体显着偏离整个数据集。

根据作者的说法:

“今天的温度是 28 摄氏度。是否异常(即异常值)?” 例如,这取决于时间和地点!如果是在多伦多的冬天,是的,这是一个异常值。如果是多伦多的夏日,那是正常的。与全局异常值检测不同,在这种情况下,今天的温度值是否为异常值取决于上下文——日期、位置以及可能的其他一些因素。在给定的数据集中,如果数据对象相对于对象的特定上下文显着偏离,则该数据对象是上下文异常值。上下文异常值也称为条件异常值,因为它们以所选上下文为条件。因此,在上下文异常值检测中,必须将上下文指定为问题定义的一部分。

我的问题:上下文异常值是否与全局异常值相同,其中描述每个数据对象的原始特征向量可能必须扩展以包含一些其他属性(有关“上下文”的信息)?显然,如果数据对象不包含足够的属性,它们永远不能被归类为异常值!这也适用于全球异常值。所以对我来说,形成一个新的异常值类别作为上下文异常值是没有意义的。

3个回答

假设您的数据集是一组温度,其中包含一组与进行测量的时间/地点相关的特征。

如果测量值与温度分布不同,无论其特征(时间和地点)如何,它都是全局异常值,因为该测量值远离全球分布(例如 100°C)。

该示例很好地说明了查看条件分布(温度|地点、测量时间)如何提供额外的见解(此处检测到 28°C 是上下文异常值)。上下文异常值在全局分布内,但在查看条件分布时是异常值。

现在当然你的数据集有一些上下文,所以从某种意义上说你是对的,一切都是上下文的,但是全局/上下文边界存在于你手头:如果你只有一天的温度,比较温度从那天到那天的所有测量都可以让您检测到全局异常值;现在,如果您全年都可以接触到温度并且您仍然精确地看着那一天,那将成为一个条件分布。

如果没有背景信息,基本上很难发现上下文异常值。如果您不知道这些值是夏季的温度,则它可能被视为有效数据点。

任何异常值,无论是点异常值还是集体异常值,在针对上下文进行分析时也可以是上下文异常值。通过结合上下文信息,可以将用于检测点异常值或集体异常值的异常值检测问题转化为用于检测上下文异常值的异常值检测问题。

来源:https ://shodhganga.inflibnet.ac.in/bitstream/10603/154074/4/04_chapter%201.pdf

因此,当您说全局异常值检测确实需要上下文时,您是正确的。

但是让我们考虑一下上下文是时间的时间序列数据。如果数据点的值远远超出整个数据集,则将其视为全局异常值。如果值不在正常的全局范围之外,但与季节性模式相比是异常的,则将其视为上下文异常值。

资料来源: https ://www.anodot.com/blog/quick-guide-different-types-outliers/

因此,需要将上下文异常值作为一个单独的类别。