异常值检测和异常检测有什么区别?

数据挖掘 算法 异常检测 离群值 术语 定义
2021-09-25 05:05:03

我想知道应用方面的区别(例如,信用卡欺诈检测是哪一个?)和使用的技术方面的区别。

定义任务的示例论文将受到欢迎。

4个回答

(我实际上想将其写为对Cross Validated 问题的回答:Difference between Anomaly and Outlier,但该问题受到保护 - 我认为在这里回答应该没问题,尽管可见度较低)

人们偶尔会通过引用“异常值分析”一书的作者 Charu Aggarwal 来争辩说异常值异常值之间没有区别- 特别是以下陈述:

异常值在数据挖掘和统计文献中也被称为异常不一致偏差异常。

(来源:“异常值分析”(Springer),Charu Aggarwal,2017,http://charuaggarwal.net/outlierbook.pdf

然而,这种说法并不意味着异常值和异常是一回事——类似于说“狗有时被称为动物”并不意味着它们是一回事。

很难给出这些术语的正式定义。关于异常值的维基百科页面的是关于异常检测的维基百科页面,反之亦然,它们都包含许多 可能的定义和术语解释。由于特定领域的定义和口语,情况变得更糟,当同一领域的两个人大致知道另一个人在说什么似乎就足够了……

然而,Varun Chandola 试图在他的异常检测调查中为“异常”一词赋予更准确的含义。特别是,他将异常分为三类:

  • 点异常:单个数据实例相对于其余数据可被视为异常
  • 上下文异常:如果数据实例在特定上下文中异常(但不是其他情况)
  • 集体异常:如果相关数据实例的集合相对于整个数据集是异常的

(摘自“异常检测 - 调查”,Varun Chandola 等人,ACM Computing Surveys 2009,http: //cucis.ece.northwestern.edu/projects/DMS/publications/AnomalyDetection.pdf )


在这里,“点异常”一词似乎最接近我认为的“异常值”一词的可能定义。这与 Aggarwal 的说法一致:异常值异常值。但并非每个异常都是异常值。

(后者可能取决于异常值一词的定义。当然,可以在元级别上定义它,并说异常值是某个异常值检测算法(或模型)检测到的任何东西。但大多数定义到目前为止,我遇到的都是基于与“大多数”其他数据元素的某种“距离”、“不同”或“差异”。这听起来很合理......)

一个例子:可能有几个数据点:

14.5, 14.2, 14.4, 14.4, 14.4, 14.4, 14.4, 14.4, 14.4, 14.3, 14.2, 14.6

人们可以计算平均值和标准偏差,并且很难争论为什么这些点之一应该是“异常值”。

对于这样的一系列数据点

14.5, 14.2, 14.4, 14.4, -64564.4, 14.4, 14.4, 14.4, 14.4, 14.3, 14.2, 14.6

发现“异常值”应该很容易。

但是,假设第一个序列描述了例如每日平均室外温度,那么在整周内测量到完全相同14.4度数平均温度这一事实当然可以被视为“异常”。

(根据上述定义,可能是“集体异常”,但我不会对此争论......)


虽然我在争论某些术语的精确或直观含义时如履薄冰(因为我既不是数据科学专家也不是以英语为母语的人),但这意味着“异常”是一个比“异常值”更广泛的术语”。但也许数据科学界正在整理这些术语的正确定义。

更新:

也许我对某些词的字面意思的直觉是错误的。但对我来说,“离群值”这个词似乎是说“位于某物之外(或远离)某物(基于某种距离测量)”。从这个意义上说,14.4第一个示例中的 s 本身并不是“异常值”。但是,当然,这里的事情很快就会变得棘手:可以想象一个数据模型,其中包含相同温度的连续天数(如在运行长度编码中)。为给定数据计算此模型将产生

1 * 14.5
1 * 14.2
7 * 14.4
1 * 14.3
1 * 14.2
1 * 14.6

其中该值与模型中的其他值7 确实有很大的距离(差异)。于是,连续7天等温的“集体异常”就通过这种变换变成了“点异常”。

基本上没有区别。假设你有数据并且你想建立一个模型。顾名思义,建模就是寻找模型,即数据的简化表示。反过来,我们可以将模型视为首先生成数据的基础过程,以及一些噪音。从这个角度来看,你看到的数据是由模型生成的——我们可以说你看到的一些点不太可能是由你的模型生成的。

例如,如果您构建线性回归模型,远离回归线的点不太可能由模型生成。这就是人们用正常统计术语谈论“残差”时的意思。它也被称为数据的可能性。

根据您创建的模型,可能性较低的数据点是异常或异常值。从模型构建的角度来看,它们是一回事。

通俗地说,人们使用术语“离群值”来表示“我应该从数据集中删除的东西,这样它就不会扭曲我正在构建的模型”,通常是因为他们有预感该数据有问题,并且他们想要建立的模型不需要考虑它。异常值通常被认为是构建描述整体数据的模型的障碍 - 仅仅是因为该模型还将尝试解释异常值,这不是从业者想要的。

另一方面,您可以利用模型还为每个数据点分配可能性这一事实,这对您有利 - 可能会构建一个描述数据中更简单趋势的模型,然后积极寻找具有非常重要的现有值或新值可能性低。这就是人们说“异常”时的意思。如果您的目标是检测异常,尤其是在新数据中,这是一件好事。一个人的异常值就是另一个人的异常值!

异常是相对不寻常的数据点。

异常是异常值的一种特殊情况,它们可能有特殊/有用的信息或原因。

异常是给定数据中不同数据的不寻常、意外、令人惊讶的模式,而异常值只是数据中的极端数据点。

异常检测涉及检测以前从未见过的事物。异常检测是在给定数据集中查找异常值的过程。异常值是在数据集中的其他对象中脱颖而出并且不符合数据集中的正常行为的数据对象。