【数据挖掘 21】异常检测方法简介



异常值(离群值)是与数据的其他观察值不同的极值,它们可能表示测量值的变化,实验错误或新颖性。换句话说,异常值是与样本的总体模式不同的观察结果。¿?

1. 异常检测概述

“Observation which deviates so much from other observations as to arouse suspicion it was generated by a different mechanism” — Hawkins(1980)

异常检测(或异常检测)是对罕见项目,事件或观察结果的识别,这些事件由于与大多数数据明显不同而引起怀疑。通常,异常数据可以与某种问题或罕见事件联系在一起,例如银行欺诈,医疗问题,结构缺陷,设备故障等。这种联系使得能够找出哪些数据点可以视为异常非常有趣。 因为从业务角度来看,识别这些事件通常非常有趣。

1.1 异常值的类型

异常值有两种:单变量(univariate)和多变量(multivariate)。当查看单个特征空间中的值分布时,可以发现单变量异常值。多变量异常值可以在n维空间(具有n个特征)中找到。对于人脑来说,查看n维空间中的分布可能非常困难,这就是为什么我们需要训练一个模型来为我们做到这一点。

取决于环境,异常值也可能有不同的类型:点异常值(point outliers),上下文异常值(contextual outliers)或集体异常值(collective outliers)。点异常值是与分布的其余部分相距较远的单个数据点。上下文异常值可能是数据中的噪声,例如实现文本分析时的标点符号或进行语音识别时的背景噪声信号。集体异常值可以是数据中新颖性的子集,例如可以指示发现新现象的信号(如图B所示)。

【数据挖掘 21】异常检测方法简介

1.2 造成异常值的原因

  • 数据输入错误(人为错误);
  • 测量误差(仪器误差);
  • 实验错误(数据提取或实验错误);
  • 有意的(虚假异常值用于检测检测方法);
  • 数据处理错误(数据处理或数据集意外突变);
  • 采样错误(从错误或各种来源提取或混合数据);
  • 自然(不是错误,新颖的数据);

在生成,收集,处理和分析数据的过程中,离群值可能来自许多来源,并且隐藏在多个维度上。那些不是错误的产物被称为新颖性(novelties)。

几乎所有定量学科(例如:物理,经济,金融,机器学习,网络安全)的检测异常值都是至关重要的。在机器学习和任何定量学科中,数据质量与预测或分类模型的质量一样重要。

1.3 异常检测常用技术

存在许多异常检测方法。其中一些方法的粗略分类包括统计算法,基于聚类,基于最近邻居,基于分类,基于频谱,基于空间子采样的方法和深度学习方法。常用的如下:

  • Z-Score或极值分析(参数)
  • 概率统计模型(参数)
  • 线性回归模型(PCA,LMS)
  • 基于接近度的模型(非参数)
  • 信息论模型
  • 高维离群值检测方法(高维稀疏数据)

2. 基于统计的方法

基于统计的方法假定数据遵循特定的分布,因此从指定的概率分布创建模型。检测数据异常的最简单方法是标记与分布的常见统计特性不同的数据点。例如,可以基于远离平均值的某个标准偏差来定义异常。这些模型的优势在于,它们输出概率来衡量异常值。
【数据挖掘 21】异常检测方法简介

3. 基于聚类的方法

在基于聚类的异常检测中,假设是相似的数据点属于相似的簇。这取决于到聚类中心的距离。然后,通过为簇的大小或到聚类中心的距离设置阈值来计算异常分数。如果聚类的数据点小于阈值,则将其标记为异常,或者如果数据点到聚类中心的距离超过设置的阈值,则将其标记为异常。K-means聚类是此类方法的一个示例。

【数据挖掘 21】异常检测方法简介

4. 基于k-NN的方法

基于k-NN的异常检测通常假定正常数据样本出现在看起来密集的邻域中,而异常距离其最近邻居却很远。k-NN方法通常可以分为基于距离的方法和基于密度的方法。两种方法都需要相似性或距离度量,以便决定数据实例的异常程度。一些示例包括k-NN,马氏距离(Mahalanobis distance)和局部离群因子(Local Outlier Factor,LOF)。

【数据挖掘 21】异常检测方法简介

5. 基于分类的方法

根据标签的可用性,基于分类的异常检测可以分为一类(仅普通标签)和多类(多类)分类。基于分类器的异常检测包括两个步骤:

  • 在训练阶段,使用可用的标记训练数据来学习分类器。
  • 然后,使用在初始步骤中训练的分类器将测试实例分类为正常还是异常。

一类支持向量机(One-Class Support Vector Machine,OCSVM)和神经网络方法是此类检测方法的示例。
【数据挖掘 21】异常检测方法简介

6. 基于光谱或子空间的方法

基于频谱或子空间的方法(Spectral or subspace-based methods)尝试提取最能描述训练数据变异性的特征。这些方法假定可以在正常数据与异常数据区分开的低维子空间中显示正常数据。主成分分析(PCA)被认为是基于子空间的异常检测方法。

【数据挖掘 21】异常检测方法简介

7. 基于子采样的方法

许多离群值检测方法都有维数诅咒问题。随着给定数据集的维数增加,基于距离的方法会失败,因为任何一对点之间的相对距离都变得相对相同。为了克服这个问题,基于子采样的方法将高维空间划分为较小的子空间,并监视不同子空间中的异常值排名。离群值是在较小子空间中始终排名较高的点。隔离林(Isolation forest)是一种将高维空间划分为较小维并尝试在低维空间中发现异常的算法。

【数据挖掘 21】异常检测方法简介

8. 基于高斯分布的方法

高斯分布也称为正态分布。使用高斯分布开发异常检测算法,假设数据是正态分布的。这个假设不能适用于所有数据集,但是当它成立时,就证明了一种发现异常值的有效方法。

椭圆包络(Elliptic Envelope)是一种通过假设整个数据是基础多元高斯分布的一种异常检测方法,试图找出数据总体分布的关键参数。

【数据挖掘 21】异常检测方法简介

9. 基于神经网络的方法

基于使用自动编码器神经网络与上述统计分析相似的原理,但有一些细微的差异。

自动编码器是一种类型的人工神经网络用于学习高效的数据值编码以无监督方式。自动编码器的目的是学习一组数据的表示(编码),通常用于降维。与简化方面一起,学习重构方面,其中自动编码器尝试从简化编码中生成尽可能接近其原始输入的表示形式。

从结构上讲,自动编码器的最简单形式是前馈,非递归神经网络,非常类似于许多单层感知器,它们构成了多层感知器(MLP)-具有输入层,输出层和连接它们的一个或多个隐藏层—但输出层的节点数与输入层的节点数相同,并且目的是重建其自己的输入。

在异常检测和状态监视的背景下,基本思想是使用自动编码器网络将传感器读数“压缩”为较低维的表示形式,以表示各种变量之间的相关性和相互作用。(基本上与PCA模型相同,但在这里我们还允许变量之间进行非线性交互)。

然后以代表“正常”运行状态的数据对自动编码器网络进行训练,目标是首先压缩然后重建输入变量。在降维过程中,网络可以学习各种变量之间的相互作用,并且应该能够将它们重新构造回输出的原始变量。主要思想是,随着受监控设备的降级,这将影响变量之间的相互作用(例如,温度,压力,振动等的变化)。发生这种情况时,人们将开始看到网络在重建输入变量时出现了越来越多的错误。通过监视重建错误,可以由此获得被监视设备的“健康状况”指示,因为随着设备的降级,该错误将增加。与之类似的方法有马氏距离(Mahalanobis distance),使用重建误差的概率分布来确定数据点是正常还是异常。

10. 组合方法:PCA + Mahalanobis distance

该方法包括首先执行主成分分析,然后计算马氏距离(MD),以将数据点识别为正常或异常。
马氏距离 (MD)是测试点到质心的距离除以椭圆在测试点方向上的宽度。

注意:使用MD意味着可以通过均值和协方差矩阵进行推断,而这仅是正态分布的一个属性。由于输入变量可能不是正态分布的,因此不一定满足此条件。但是应该还是尝试一下,看看效果如何!


参考:
https://towardsdatascience.com/a-brief-overview-of-outlier-detection-techniques-1e0b2c19e561
https://towardsdatascience.com/detecting-the-onset-of-machine-failure-using-anomaly-detection-techniques-d2f7a11eb809
https://towardsdatascience.com/how-to-use-machine-learning-for-anomaly-detection-and-condition-monitoring-6742f82900d7