异常检测综述

原文地址:http://www.cs.umn.edu/sites/cs.umn.edu/files/tech_reports/07-017.pdf

摘要

这篇文章对常见的异常检测算法进行了分类,在每一类中,给出了这一类问题的基本假设(什么是正常,什么是异常),针对该类问题的基础方法,以及对基础方法的扩展。最后给出了关于计算复杂度的讨论。

1. 引言

异常检测应用广泛。本文给出的方法,有些只适用于某些场景,但有些方法有很强的普适性。本文的目标是给出一个结构性的关于异常检测方法的介绍。

1.1 异常的定义

异常检测与噪声去除以及噪声适应不同,噪声去除需要在正常信号中去除噪声信号,而噪声适应实际上关注的是模型在噪声出现时的鲁棒性。异常发现与创新发现也不同,创新发现是为了发现与正常模型不适配的模式。

1.2 挑战

  • 定义一个正常的区域并不容易,有时候正常和异常很难区分;
  • 异常如果来自恶意入侵,入侵者通常会伪装,这使得异常的检测格外困难;
  • 在某些领域,正常信号的定义是会不断变化的,当前的正常信号可能过一段时间就是异常的;
  • 不同领域对异常的定义是不一样的,某个领域的经验很难迁移到另外一个领域;
  • 异常检测模型的训练样本,通常很难获取;
  • 正常的数据中通常含有噪声,使得它看起来很像异常数据,因此很难判断;

1.3 相关工作

1.4 我们的贡献

针对六大类场景,分别分析了它们对于异常的核心假设,这些场景下的基础方法,以及,前人在这些场景下提出的方法,是怎样在基础方法的基础上变化而来的。最后分析了这些方法的计算复杂度。

1.5 本文的组织结构

2. 异常检测问题的不同方面

介绍了,为什么需要这么多的异常检测算法,因为每个异常检测问题都有其特殊性。

2.1 输入数据的本质

在不同的异常检测问题中,数据的形式不一样,因此不能使用同一套异常检测算法,需要分别开发;

有些问题中,样本是彼此孤立的,但另外一些问题中,样本是彼此相关联的。比如时序数据,图数据,社交关系数据,空间数据等等。正因为数据的彼此关系不同,所以也需要有不同的异常检测算法来处理。

2.2 异常的类型

点异常,异常点与其它点的分布明显不同,大部分异常检测处理的是这种问题;

上下文异常,也叫做条件异常,就是说,一个点只有在特定的上下文下,才叫做异常,如果没有这个上下文,这个点就是正常的。这种情况下,我们通常会用两类特征来描述一个样本,一个是上下文特征(比如,在空间数据中,经纬度就是上下文特征,在时序数据中,时间点就是一个上下文特征),二是行为特征,也就是除了上下文特征之外,样本点本身属性的特征。

集合性异常,单个点并不构成异常,但是多个这样的点集合在一起,就构成了异常,典型的例子是心电图,如果有骤停,那就是集合性异常。另外一个典型的例子是,计算机操作的异常,单个操作都是正常的,但是几个操作联合在一起,就意味着数据的窃取,这就是不正常的。集合异常更多的出现在空间数据、社交数据、时序数据中。

点异常和集合性异常,在加入上下文之后,也可以变为上下文异常问题。

2.3 数据的标签

数据的标签不易获取,按照标签的情况,把异常检测问题分为三类,第一,有监督,这种情况就是简单的分类预测问题,比较简单,本文中不予介绍,第二,半监督,第三,无监督。

2.4 异常检测算法的输出

分数,或者是标签(是否)。

3. 异常检测算法的应用

3.1 计算机的入侵检测

由于数据样本量比较大,而且对误报非常敏感,因此适合使用无监督或者半监督的方法。

分为基于客户机和基于网络两类方法。

3.2 欺诈检测

基本思路是,对用户通常的使用习惯建模,一旦用户行为与习惯不符,就报警。

第一,信用卡欺诈,第二,手机欺诈,第三,骗保欺诈,第四,内部交易欺诈

3.3 医疗和公共健康异常检测

3.4 工业危害检测

第一,接卸单元的错误检测,第二,结构缺陷检测

3.5 图像处理

3.6 文本中的异常检测

3.7 传感器网络

4. 基于分类的异常检测方法

基于这样的假设:一个可以将正常与异常区分的分类器,可以在给定的特征空间内学习到。

可以分为两类:多类异常检测和一类异常检测,多类异常检测的原理是,训练集中指定了多个正常类的样本,对每个正常类单独学习一个分类器,面对一个测试样本,用每个分类器逐个判断,如果不能判断它属于任何一个正常类,那么它就是异常的。一类的异常检测,通常使用one-class svm算法。

4.1 基于神经网络

多类的就是正常神经网络,单类的有点意思,对输入样本进行编码,然后恢复,计算输入和输出??之间的偏差,小于一定的阈值就是正常样本,否则就是异常。

4.2 基于贝叶斯网络

主要用于多类的异常检测。对于单变量,通过训练数据统计出先验和似然,学习后验就好了。对于多变量样本,假设多个变量之间是相互独立的,分别计算每一个变量的后验,然后聚集起来即可。

4.3 基于支持向量机

主要用于一类的异常检测。

4.4 基于规则的方法

比如RIPPER和决策树。先用这些算法生成一些规则,每个规则对应了一个比例,即满足这个规则的样本,是正常样本的比例。对于一个测试样本,先判断它满足多少规则,对于满足性最好的规则分数,用1减去这个分数,就是这个样本作为异常样本的概率。

5. 基于最近邻的异常检测方法

基于这样的假设:正常的样本都存在于密集的邻域内,而异常的样本通常离自己的最近邻很远。

这里,包括第6章中基于聚类的度量标准,仅要求距离是正定的,对称的,并不要求满足三角定理。

分为两类:一是通过第k近邻的距离来判断,二是通过样本点所处位置的密度来判断。

5.1 使用第k近邻来判断

5.2 使用相对密度

?LOF值=k近邻的密度/当前点的密度??????????

6. 基于聚类的异常检测方法

一共可以分为三类,第一类的假设是,正常类的样本属于某一个聚类中心,而异常类的样本不属于任何一个聚类中心,(需要用到一些,不是所有样本点都会划分到某个聚类中心的聚类算法,比如DBSCAN);第二类的假设是,正常样本离他们的聚类中心很近,而异常样本离他们的聚类中心很远,(需要用到那些,对每个样本点都有一个聚类中心划分的聚类算法,比如kmeans);第三类的假设是,正常样本属于稠密而且较大的聚类中心,而异常样本属于稀疏而且较小的聚类中心。

?## 6.1 基于聚类和基于最近邻方法的不同

基于聚类的方法,根据样本点与聚类中心的距离判断是否异常,而基于最近邻的方法,根据样本点与最近邻的关系判断是否异常。

7. 基于统计的异常检测方法

基于的假设是:根据我们假设的样本生成模型,正常样本被模型生成的概率高,而异常样本被模型生成的概率低。

7.1 基于模型参数的方法

基于高斯模型。

基于回归模型,基于单变量的ARIMA和基于多变量的ARMA。

基于混合参数分布的模型,分为两种,第一种针对正常样本和异常样本分别建模,认为他们属于不同的分布,第二种仅针对正常样本,建立混合分布模型。

7.2 非参数的方法

基于直方图

基于核函数????

8. 基于信息论的方法

基于的假设是:异常数据反映出了数据集中异常的信息内容。

对于一种信息度量L,我们需要在目标数据集D中寻找一个尽量小的子集,使得L(D)-L(D-I)尽量大,其中I就是我们排除的尽量小的子集。优点是可以非监督的运行,并且没有对底层的数据分布有任何假设。

9. 基于谱分析的异常检测方法

?基于的假设是:数据可以被嵌入到一个低维的子空间中,且在这样的空间中,正常和异常的样本更容易区分。

常用基于PCA的方法,及其变种。

10. 处理上下文异常????

常见的上下文属性通常包括,第一,空间信息,第二,图相关的信息,第三,序列信息,第四,属性(Profile)信息。两种处理思路,第一种是把上下文异常问题转化为单点异常问题处理,第二种是对数据结构进行建模,然后用模型去处理上下文异常。

10.1 转化为单点异常检测问题

10.2 应用数据中的结构信息

11. 处理集合异常

???

???

原文地址:https://www.cnblogs.com/jicanghai/p/10202045.html

时间: 2024-10-11 12:13:45

异常检测综述的相关文章

异常检测概览——孤立森林和局部异常因子算法效果是最好的

转自博客:http://www.infosec-wiki.com/?p=140760 一.关于异常检测 异常检测(outlier detection)在以下场景: 数据预处理 病毒木马检测 工业制造产品检测 网络流量检测 等,有着重要的作用.由于在以上场景中,异常的数据量都是很少的一部分,因此诸如:SVM.逻辑回归等分类算法,都不适用,因为: 监督学习算法适用于有大量的正向样本,也有大量的负向样本,有足够的样本让算法去学习其特征,且未来新出现的样本与训练样本分布一致. 以下是异常检测和监督学习相

Kafka+Flink 实现准实时异常检测系统

1.背景介绍异常检测可以定义为"基于行动者(人或机器)的行为是否正常作出决策",这项技术可以应用于非常多的行业中,比如金融场景中做交易检测.贷款检测:工业场景中做生产线预警:安防场景做***检测等等. 根据业务要求的不同,流计算在其中扮演着不同的角色:既可以做在线的欺诈检测,也可以做决策后近实时的结果分析.全局预警与规则调整等. 本文先介绍一种准实时的异常检测系统. 所谓准实时,即要求延迟在100ms以内.比如一家银行要做一个实时的交易检测,判断每笔交易是否是正常交易:如果用户的用户名

机器学习总结2 - 关于激活函数、损失函数、正则化、异常检测算法总结

LSTM特性, CNN特性, 损失函数, paper, 项目 ...软件 激活函数: -> sigmod: 硬饱和性, y(0,1), 斜率趋于0;-> tanh: 软饱和性, y(-1,1), 虽然输出均值为0, 可以更快收敛, 但斜率依然会趋于0;-> relu: 当x<0时, 存在硬饱和, y(0, +), 使用leak-relu, 当x<0时, 使斜率不会为0; 损失函数/ 性能指标:-> 均方差mse, 均方根误差rmse, 常用于回归问题, rmse=500

斯坦福第十五课:异常检测(Anomaly Detection)

15.1  问题的动机 15.2  高斯分布 15.3  算法 15.4  开发和评价一个异常检测系统 15.5  异常检测与监督学习对比 15.6  选择特征 15.7  多元高斯分布(可选) 15.8  使用多元高斯分布进行异常检测(可选) 15.1  问题的动机 15.2  高斯分布 15.3  算法 15.4  开发和评价一个异常检测系统 15.5  异常检测与监督学习对比 15.6  选择特征 15.7  多元高斯分布(可选) 15.8 使用多元高斯分布进行异常检测(可选)

视频质量诊断----色度异常检测

色度异常检测一般称为偏色检测. 即图像为某一范围颜色值分布过多而导致图像整体偏色的情况. 原理 提取图像的色度分量H 计算色度分量H的直方图 求最方图最大bin占整个直方图的比例,该比例值就为偏色值 结果演示 偏色率:1.0 0 0.21 0.43 1.0 偏色率: 1.0 0.71 0.77 1.0 偏色率: 0.23 0.17 0.0 0.0 备注:以上图像来自另一位博主的偏色检测文章http://www.cnblogs.com/Imageshop/p/3191853.html 本算法缺点对

视频质量诊断----亮度异常检测

亮度异常检测一般包括偏暗检测和偏亮检测,也有称过暗过亮检测.这算法简单,只需要一帧图像的亮度值作为判断就行. 原理 把彩色图像转化为灰度图像 求图像的平均灰度值G(整幅或ROI区域),该值就是图像的亮度值 定义阈值A,B.当G∈[0,A]认为图像偏暗,当G∈[B,255]认为图像偏亮 三.结果演示 偏暗率:1.0 偏暗率:0.95 偏亮率:1.0 本算法缺点:对于黑屏或无信号图像,会被检测为偏暗(不过也正常,那些现象整张图像都是暗的). Demo演示下载地址:http://files.cnblo

Ng第十五课:异常检测(Anomaly Detection)

15.1  问题的动机 15.2  高斯分布 15.3  算法 15.4  开发和评价一个异常检测系统 15.5  异常检测与监督学习对比 15.6  选择特征 15.7  多元高斯分布(可选) 15.8  使用多元高斯分布进行异常检测(可选) 15.1  问题的动机 15.2  高斯分布 15.3  算法 15.4  开发和评价一个异常检测系统 15.5  异常检测与监督学习对比 15.6  选择特征 15.7  多元高斯分布(可选) 15.8 使用多元高斯分布进行异常检测(可选)

堆异常检测-MS-Visual Studio

在向系统申请堆空间的时候,虽然程序员不知道所申请的堆空间的数据结构,但是系统或者啥(微软可以知道)知道的,所以如果我们需要检查堆的使用异常,需要借助微软提供的机制来检堆的正常使用,从而发现在程序过程中出现的非法使用堆的情况,保证我们程序的高质量! 这里面最重要的函数莫过于_CrtCheckMemory(),该函数使用简单,在需要测试堆异常的代码的开始和结束端分别调用即可.具体例子如下所示: #include <stdio.h> #include <Windows.h> #inclu

异常检测: 应用多元高斯分布进行异常检测

多元高斯(正态)分布 多元高斯分布有两个参数u和Σ,u是一个n维向量,Σ协方差矩阵是一个n*n维矩阵.改变u与Σ的值可以得到不同的高斯分布. 参数估计(参数拟合),估计u和Σ的公式如上图所示,u为平均值,Σ为协方差矩阵 使用多元高斯分布来进行异常检测 首先用我我们的训练集来拟合参数u和Σ,从而拟合模型p(x) 拿到一个新的样本,使用p(x)的计算公式计算出p(x)的值,如果p(x)<ε就将它标记为一个异常点 当我们对上图中那个绿色的点进行异常检测时,这些红色的点服从多元高斯正态分布(x1与x2正