异常检测算法概述(全)
异常检测算法概述(全)
——序列数据异常检测
1、异常的一些概念及异常检测的挑战
2、异常检测问题的不同方面
3、基于分类的异常检测算法
4、基于最近邻的异常检测技术
5、基于聚类的异常检测技术
6、统计异常检测技术
7、信息理论异常检测技术
8、谱异常检测技术
9、上下文异常处理
10、处理集合异常
11、琐碎点
1、异常的一些概念及异常检测的挑战
1.1 异常和噪声、奇异点 的区别
1、噪声的处理分为两种:
noise removal—> 在数据分析之前把噪声删除
noise accommodation—> 将噪声忽略
2、novelty detection —> 通常情况下,奇异点在被检测之后会被归为正常
1.2 Challenges
正常和异常的界限并不是十分的精确
异常点表现得正常难以确认
正常的表现不断变化
在不同的应用场景中,异常的定义是不同的
标签数据难以获得
噪声,难以确认和删除
1.4 异常检测的一些相关点
2、异常检测问题的不同方面
2.1 输入数据的特性
① 输入的数据包括:对象,点,记录,向量,事件等
② 属性的特点决定用异常检测的方法
③ 输入的数据可以彼此之间有关系
eg.: 序列数据、空间数据、图数据
序列—》时间序列
空间—》与其相邻点有关系
图—》输入数据表示成点,通过边相连
我们关注时间序列数据
2.2 异常的类型
①点异常(相对于正常点)
②上下文异常
③集合异常
2.3 数据的标签
①有监督的异常检测
问题:1、带正常和异常标签的数据的数量不均衡
2、获得精确的、有代表性的标签很困难,特别是对于异常数据来说
②半监督的异常检测
只训练正常或异常的数据
③无监督的异常检测
隐形的假设:正常的数据相比异常的数据来说更加的频繁。若是假设不成立错误率较高
有些半监督的算法可以应用于无监督检测基于假设数据中具有极少的异常数据,并且算法对于异常是鲁棒的
2.4 异常检测的输出:
①得分—异常程度
②标签—正常/异常
3、基于分类的异常检测算法
3.1 基本概念
①Assumption: A classifier that can distinguish between normal and anomalous classes can be learnt in the given feature space
②基于标签的种类可以将分类问题分为两类
a. 多分类问题(多个正常分类的标签)
b. 单分类问题(只有一种分类标签,学习一个边界)
one-class SVMs
one-class Kernel Fisher Discriminants
3.2 算法
①基于神经网络(适用于单分类和多分类的数据集)
多层感知器(Multi Layered Perceptrons)
神经树(Neural Trees)
自适应网络(Auto-associative Networks )
基于自适应共振理论(Adaptive Resonance Theory Based)
基于径向基函数(Radial Basis Function Based )
Hopfield Networks
振荡网络(Oscillatory Networks )
多分类的神经网络步骤:
1、利用正常的多个分类的数据训练模型
2、把测试数据输入模型,若是神经网络接收就是正常,否则是异常
②基于贝叶斯网络(适用于多分类的数据集)
给定测试数据,估计其最大后验概率
处理多分类时需要将每个属性的后验概率进行组合
③基于支持向量 (适用于单分类)
- 学习一个区域,若是测试数据落到这个区域则是正常,否则异常
Eg: Robust Support Vector Machines (RSVM) 鲁棒的SVM 有较好的精确率和效率
④基于规则(适用于单分类和多分类的数据集)
从正常的行为中学习规则,测试数据若是没有被任何规则包括则认为是异常
步骤:1、利用规则学习算法学习规则,例如重复增量修枝( RIPPER )、决策树( Decision Trees )
2、发现最适合测试数据的规则
关联规则挖掘可以用于单分类问题(以无监督的方式),支持度—〉排除支持度较小的规则,同时会产生频繁相集
3.3 复杂度和优缺点
- 复杂度
训练阶段: 决策树会较快,基于二次最优化的算法(eg. SVM)会较慢
测试阶段: 分类技术在测试阶段会较快—分类的模型已经训练好
- 优缺点:
可以处理多分类问题/ 在测试阶段速度较快
多分类问题需要精确的多分类标签/ 直接将一个确定的标签赋给测试数据有时候会不恰当(解决:利用概率)
4 基于最近邻的异常检测技术
4.1 基本概念
Assumption: Normal data instances occur in dense neighborhoods, while anomalies occur far from their closest neighbors.
分为两类:
异常得分:一条数据到它k个近邻的距离
一条数据的相对密度
4.2 算法
①基于到K个近邻的距离
获得一条数据的异常得分(计算到K个近邻的总的距离,利用距离小于d的近邻的数量)
提高效率—剪枝(线性)/抽样(o(mn))
②利用相对密度(一条数据落于一个高密度的环境中–〉正常,否则异常)
a. LOF( Local Outlier Factor)
(以一条数据为中心,寻找能包含k个近邻的最小超平面,求其密度 (K/V) ,若是正常则与其临近点的密度相似,异常则比其最近临近点还会低)
b. COF(Connectivity based Outlier Factor )
(依次找一点最近的k个点键入点集)
LOF的两个变形:
ODIN:给定点集在在其K近邻点集中的数量
MDEF:给定数据的最近邻的标准差
一些其他的变形:概率后缀树(Probabilistic Suffix Trees (PST))寻找最近邻
4.3 复杂度和优缺点
- 计算复杂度
1、o(N2)(k-d trees,R-trees )
2、解决o(N2) 采用简单取样的话,正确率难以保证
- 优缺点
无监督,不需假设数据属于何种分布,数据驱动/适应不同的类型数据类型方便,只需定义合适的便是数据间距离的方法即可
因为无监督,正常的数据没有足够的邻居或者异常点有很多的邻居/计算复杂度/定义数据之间的距离有时会很困难,例如图,序列
5、基于聚类的异常检测技术
5.1 基本概念
分为三类:
1、Assumption: Normal data instances belong to a cluster in the data, while anomalies either do not belong to any cluster.
eg.
DBSCAN
ROCK(一种粗暴的算法,直观的把两个类别内数据有链接的,并且连接的多的聚在一类里边。抛弃了距离度量,只用是否有链接来衡量。)
SNN clustering 共享最近邻聚类
FindOut algorithm
WaveCluster algorithm
结合基于密度方法和ROCK思想,保留K最近邻简化相似矩阵和个数
缺点:目的并不是为了检测异常而是为了发现群集(clusters)
2、Assumption: Normal data instances lie close to their closest cluster centroid,while anomalies are far away from their closest cluster centroid.
两步:利用聚类算法聚类/每个点的异常程度等于到最近类中心点的距离
eg.
Self-Organizing Maps (SOM)(可用于半监督模型)
K-means Clustering
Expectation Maximization(EM)
缺点:如果异常数据自己成簇,将难以发现异常
3、Assumption: Normal data instances belong to large and dense clusters, while anomalies either belong to small or sparse clusters.
簇的大小或者密度小于一定阈值就认为是异常
eg.
FindCBLOF–CBLOF
基于聚类和最近邻的区别:
聚类:利用数据所属的簇来评价数据
最近邻:用其局部的近邻来分析数据
5.2 复杂度和优缺点
- 计算的复杂度:
取决于要从所给数据中聚出多少个类
可以是o(N2)若是计算每一对数据的距离
也可以是线性:启发式的算法例如K-means
测试阶段会很快–只需跟有限几个簇比较即可
- 优缺点:
无监督/可适应一些复杂的数据类型/测试阶段速度较快
主要用于聚类,并不是主要用来异常检测/有些算法,每个数据要贴一个标签,异常数据也会贴一个标签/有些聚类算法只有异常数据不能成簇是效率才会较好/计算的复杂度 o(N2)
6、统计异常检测技术
6.1 基本概念
Assumption: Normal data instances occur in high probability regions of a stochastic model, while anomalies occur in the low probability regions of the stochastic model.
6.2 算法
a. 参数化方法
基于假设:正常的数据都是由一个参数为 Θ的分布产生的,概率函数 f(x,Θ)
统计假设检验:
H0:假设数据由估计的分布产生(参数为Θ) 若是拒绝这个假设为异常
①基于高斯模型 数据由高斯分布产生
(一个简单的异常检测–〉数据落在 µ ± 3σ之外的就是异常, µ ± 3σ 99.7%)
t分布
x2 若卡方分布的值较大说明数据中含有异常
基于高斯分布的变形的算法 :Rosner test、 Dixon test、Slippage Detection test
②基于回归模型
基本回归分为两步:1、利用数据训练回归模型
2、利用残差,表示数据的异常程度
eg.
ARIMA:一个强健的模型,在训练阶段异常不仅能隐藏,还能被检测出 处理多变量的时间序列数据
ARMA:将多变量投影到单变量
③基于混合参数分布
分为两类:1、为异常和正常的数据作不同的参数分布模型
2、只为正常的数据作混合参数模型
1、假设正常和异常数据分数不同的高斯分布,具有相同的期望,但是方差不相同。
利用EM算法来不断迭代调整
2、eg. 高斯混合模型、混合的泊松分布
b. 非参数方法
①基于直方图
利用直方图对正常数据画像
单变量基本的算法:在该属性的不同值上建立直方/若是落进任一直方认为是正常
难点:直方的大小难以把握:太小–〉数据难以包括
太大–〉包括异常数据
对于多变量的:分别处理单个变量然后再集合起来
②基于核函数
parzen windows estimation
③基于密度估计技术
Desforges et al. [1998] proposed a semi-supervised statistical technique to detect anomalies which uses kernel
functions to estimate the probability distribution function (pdf) for the normal instances
6.3 复杂度和优缺点
- 计算复杂度
高斯、泊松、多项式分布通常是线性的
EM 每次迭代是线性的
核函数 o(N2)
- 优缺点
若是对数据分布的假设成立,会有统计上的异常检测方案/若是估计分布阶段对异常足够鲁棒,可以用无监督的方式
对数据分布的假设难以确保成立/直方图难以发现属性间的关系
7、信息理论异常检测技术
Assumption: Anomalies in data induce irregularities in the information content of the data set.
主要评价方法:Kolomogorov Complexity,entropy,relative entropy
算法:Local Search Algorithm (LSA)(线性)
计算复杂度: 指数级
优缺点:
无监督/不需对数据的分布做假设
效果的好坏取决于评价方法/对一条测试数据难以得到异常的程度
8、谱异常检测技术
8.1 基本概念
Assumption: Data can be embedded into a lower dimensional subspace in which normal instances and anomalies appear significantly different.
目标:寻找子空间—将异常和正常信息识别
Eg. PCA主成分分析 降维
8.2 复杂度和优缺点
- 计算复杂度
pca 在数据上一般是线性的但是在维度上是o(N2)
- 优缺点
可降维,适用于高维的数据类型/无监督的方式
只有异常和正常数据在投影到低维空间能有效区分时谱分析才是有效的/计算的复杂度很高
9、上下文异常处理
9.1 基本概念
上下文的属性
空间:点的位置和相邻点
图:点及边
序列:在序列的位置(eg. 时间序列)
9.2 算法
a. 简化为点异常检测
分为两步: 1、对于每条数据利用上下文属性识别上下文
2、利用已知的点异常检测算法计算每条数据的异常得分
Eg.
假设数据的属性分为contextual and behavioral attributes.
并且contextual and behavioral attributes. 分属于不同的混合高斯模型U/V
则一条数据可以用<x,y>来表示
p(Vj|Ui) 代表 behavioral attributes 由混合模型Vj 产生 的概率,在contextual attributes. 由 混合模型Ui 产生的条件下
则属于的异常得分:(全概率)
其他方法: Peer group analysis ; class anomaly detection
b. 利用数据的结构 (将数据的属性分解并不简单,eg 时间序列数据,事件序列数据)
方法:利用训练数据给出的上下文预测,若是与观察值有明显不同,则认为是异常 eg. 回归
对于时间序列数据回归模型: robust regression、 auto-regressive models、 ARMA models、 ARIMA models、 Support Vector Regression
事件序列: Frequent Itemset Mining 、 Markov Models(利用历史数据计算事件的条件概率)
FSA:基于前n个数据预测之后的数据
9.3 复杂度和优缺点
- 计算复杂度
简化为点异常检测:在第一个阶段利用划分的技术会较快/用聚类或混合模型会较慢,第二个阶段课采用较快的点异常检测
测试阶段较慢:每条测试用例需要划分属性,病计算异常程度/标签
利用数据的结构:训练模型阶段会相对较慢。测试阶段较快
- 优缺点
可以利用实际异常的定义来检测异常
只有上下文相关的属性定义之后,相关技术才会有效
10、处理集合异常
10.1 基本概念
Sequential Anomaly Detection Techniques 序列异常检测
—异常的子序列
Spatial Anomaly Detection Techniques 空间异常检测
—异常的子区域
Graph Anomaly Detection Techniques 图异常检测
----异常的子图
10.2 算法
a. 处理序列异常
①在一组序列中检查异常序列 (半监督和无监督的方式)
- 挑战:1、序列可能不等长 2、测试序列可能不是彼此对齐的或者与正常序列
处理不等长的方法:
1、假定都等长
2、处理成等长的 ,Box Modeling
3、longest common subsequence as the similarity measure
4、为序列建立模型 —半监督的算法,需要正常的训练数据
----马尔科夫模型(Markovian model)
----有限状态自动机(FSA)
----隐马尔可夫模型( Hidden Markov Model HMM)
----概率后缀树( Probabilistic Suffix Trees PST )
----稀疏的马尔可夫树( Sparse Markov Trees SMT)
②检测一个长序列中的异常子序列
挑战:异常序列的长度难以确定
因为在输入序列中包含异常的子序列,建立鲁棒的 正常模型是个挑战
算法:
1、Window Comparison Anomaly Detection (WCAD)
2、 (HOT SAX)
3、Maximum Entropy Markov Models
4、 Conditional Random Fields (CRF)
③ 测试一个字串的频繁性是否异常—依据其在输入数据中频繁程度
依据:依据一个字串在给定的数据集合中的频繁程度是否与其在正常的数据集中的频繁程度相似,若是差距很大则认为是异常
算法:
suffix trees
Interpolated Markov Models (IMM)
b. 处理空间异常
不做重点
eg. 算法:Multivariate Gaussian Random Markov Fields (MGMRF)
因为空间中的点是上下文相关的,先检查点的上下文异常,然后利用其空间结构联系起来
11、琐碎点
1、最近邻和聚类高维失效
①高维数据集中存在大量无关的属性使得在所有维中存在簇的可能性几乎为零;
②高维空间中数据较低维空间中数据分布要稀疏,其中数据间距离几乎相等是普遍现象
2、最近邻和聚类选择合适的距离计算方法很重要
3、谱技术可以处理高维数据,但是其依据:数据在合适的低维空间可分
4、分类技术可以处理上述问题,但是分类问题需要正常和异常的标签,并且正常和异常标签的数据数量并不均衡
5、统计技术(无监督)当数据是低维的并且假设的数据分布满足时高效
6、计算复杂性
分类、聚类、统计 在训练阶段较慢,测试阶段很快
最近邻、信息论、谱技术 没有训练阶段,测试阶段时间复杂度较高
异常检测算法概述(全)相关推荐
- 史上最全异常检测算法概述
史上最全异常检测算法概述 参考文章: (1)史上最全异常检测算法概述 (2)https://www.cnblogs.com/Bang-cansee/p/4954129.html 备忘一下.
- 基于图的异常检测算法——概述
正在调研基于图的异常检测算法,先出个概述,后面再慢慢填坑 基于图的异常检测 给定一个图数据库,找到其中罕见不同于其他数据对象的点/边/子结构 静态图的异常检测 普通静态图 基于结构 基于特征:利用图结 ...
- 图像 异常检测算法_检测图像异常的算法
图像 异常检测算法 Modern applications are generating enormous amounts of image data. And in the last years, ...
- 异常检测算法:Isolation Forest
iForest (Isolation Forest)是由Liu et al. [1] 提出来的基于二叉树的ensemble异常检测算法,具有效果好.训练快(线性复杂度)等特点. 1. 前言 iFore ...
- 【机器学习】异常检测算法(I)
在给定的数据集,我们假设数据是正常的 ,现在需要知道新给的数据Xtest中不属于该组数据的几率p(X). 异常检测主要用来识别欺骗,例如通过之前的数据来识别新一次的数据是否存在异常,比如根据一个用户以 ...
- 孤立森林异常检测算法原理和实战(附代码)
孤立森林(isolation Forest)算法,2008年由刘飞.周志华等提出,算法不借助类似距离.密度等指标去描述样本与其他样本的差异,而是直接去刻画所谓的疏离程度(isolation),因此该算 ...
- 孤立森林(isolation):一个最频繁使用的异常检测算法
孤立森林(isolation Forest)算法,2008年由刘飞.周志华等提出,算法不借助类似距离.密度等指标去描述样本与其他样本的差异,而是直接去刻画所谓的疏离程度(isolation),因此该算 ...
- 异常检测:PyOD工具库(含SUOD库)【包括近30种常见的异常检测算法:ABOD、HBOS、IForest、KNN、LOF、OCSVM、PCA等】【Outlier detection (OD) 】
pyod(Python Outlier Detection)是一个集成了30余种异常检测方法和模型的Python工具箱.从经典的 LOF (SIGMOD 2000) 到近两年的 COPOD (ICDM ...
- 震惊!(竟有这么好的)时序数据异常检测算法简述与分类
时序数据异常检测算法简述与分类 摘要:异常检测是目前时序数据分析最成熟的应用之一,有效的异常检测被广泛用于现实世界的很多领域,例如量化交易,网络安全检测.自动驾驶 ...
最新文章
- linux加微软的数据库,在Linux上使用Microsoft SQL – 安装SQL
- 将cocos2dx项目从Visual Studio 迁移到 xcode
- android 音乐播放器中播放模式的设计
- Lesson13【加餐】 损失函数的随机创建现象详解
- HBase实战:记一次Safepoint导致长时间STW的踩坑之旅
- 新华字典java_新华字典查询示例代码
- matlab解调2fsk,2FSK调制解调系统的MATLAB实现
- Vue.js使用矢量图
- 基于Java+SpringBoot+vue+element实现前后端分离蛋糕商城系统详细设计
- 将图像平移到画布中心python_python-如何用猕猴桃中的图像填充画布?
- 利用消息机制实现.NET AOP(面向方面编程)--基本概念和实现
- C++中回调(CallBack)的使用方法
- 计算机组成原理(第三版)唐朔飞-第四章存储器-课后习题
- 柬埔寨攻略―签证、机票
- 解决各种中文乱码问题
- 西安建筑科技大学计算机系专业怎么样,西安建筑科技大学好就业吗?附西安建筑大学就业年薪...
- 电脑长时间不操作造成卡死
- 等腰字母三角形c语言,如何用c语言输出等腰三角形 c语言输出三角形方法
- 喜闻乐见的git autocrlf问题
- ColorOS怎么切换Android,OPPO怎么升级ColorOS11 OPPO升级ColorOS11方法