当前位置:首页 » 操作系统 » 异常检测算法

异常检测算法

发布时间: 2022-11-18 15:55:13

❶ 异常检测概述

异常检测(Outlier Detection) ,顾名思义,是识别与正常数据不同的数据,与预期行为差异大的数据。

识别如信用卡欺诈,工业生产异常,网络流里的异常(网络侵入)等问题,针对的是少数的事件。

点异常 :指的是少数个体实例是异常的,大多数个体实例是正常的,例如正常人与病人的健康指标;

上下文异常 :又称上下文异常,指的是在特定情境下个体实例是异常的,在其他情境下都是正常的,例如在特定时间下的温度突然上升或下降,在特定场景中的快速信用卡交易;

群体异常 :指的是在群体集合中的个体实例出现异常的情况,而该个体实例自身可能不是异常,例如社交网络中虚假账号形成的集合作为群体异常子集,但子集中的个体节点可能与真实账号一样正常。

有监督 :训练集的正例和反例均有标签

无监督 :训练集无标签

半监督 :在训练集中只有单一类别(正常实例)的实例,没有异常实例参与训练

统计学方法对数据的正常性做出假定。 它们假定正常的数据对象由一个统计模型产生,而不遵守该模型的数据是异常点。 统计学方法的有效性高度依赖于对给定数据所做的统计模型假定是否成立。

异常检测的统计学方法的一般思想是:学习一个拟合给定数据集的生成模型,然后识别该模型低概率区域中的对象,把它们作为异常点。

即利用统计学方法建立一个模型,然后考虑对象有多大可能符合该模型。

假定输入数据集为 ,数据集中的样本服从正态分布,即 ,我们可以根据样本求出参数 和 。

典型的如PCA方法,Principle Component Analysis是主成分分析,简称PCA。它的应用场景是对数据集进行降维。降维后的数据能够最大程度地保留原始数据的特征(以数据协方差为衡量标准)。
PCA的原理是通过构造一个新的特征空间,把原数据映射到这个新的低维空间里。PCA可以提高数据的计算性能,并且缓解"高维灾难"。

  这类算法适用于数据点的聚集程度高、离群点较少的情况。同时,因为相似度算法通常需要对每一个数据分别进行相应计算,所以这类算法通常计算量大,不太适用于数据量大、维度高的数据。
  基于相似度的检测方法大致可以分为三类:

集成是提高数据挖掘算法精度的常用方法。集成方法将多个算法或多个基检测器的输出结合起来。其基本思想是一些算法在某些子集上表现很好,一些算法在其他子集上表现很好,然后集成起来使得输出更加鲁棒。集成方法与基于子空间方法有着天然的相似性,子空间与不同的点集相关,而集成方法使用基检测器来探索不同维度的子集,将这些基学习器集合起来。

常用的集成方法有Feature bagging,孤立森林等。

**feature bagging **:

与bagging法类似,只是对象是feature。

孤立森林

孤立森林假设我们用一个随机超平面来切割数据空间,切一次可以生成两个子空间。然后我们继续用随机超平面来切割每个子空间并循环,直到每个子空间只有一个数据点为止。直观上来讲,那些具有高密度的簇需要被切很多次才会将其分离,而那些低密度的点很快就被单独分配到一个子空间了。孤立森林认为这些很快被孤立的点就是异常点。

用四个样本做简单直观的理解,d是最早被孤立出来的,所以d最有可能是异常。

在有标签的情况下,可以使用树模型(gbdt,xgboost等)进行分类,缺点是异常检测场景下数据标签是不均衡的,但是利用机器学习算法的好处是可以构造不同特征。

Scikit-learn:

Scikit-learn 是一个python语言的开源机器学习库。它具有各种分类,回归和聚类算法。也包含了一些异常检测算法,例如LOF和孤立森林。

官网: https://scikit-learn.org/stable/

PyOD:

1、学习pyod库基本操作

参考资料:

❷ 动态图上的异常检测文献综述(2015)

动态图上的异常检测任务包括:发现异常的对象、关系、时点。动态图上的异常检测与静态图上的异常检测不同的地方在于:

本文首先将异常类型分为:anomalous vertices, edges, subgraphs, and events(or change),将使用的方法分为:community detection, MDL(minimum description length) and compression, decompression, distance, probabilistic, 按每种方法使用的异常类型进行了文献学分类。各方法的主要参考文献见表1:

本文假设不同时点的节点和边都有唯一标签从而不会混淆,定义 为图序列,其中 为总时间步, , 为节点集, 为边集, 时称 为图流。本文的主要记号见表2:

给定 ,节点集 ,打分函数 ,定义异常节点集为 ,使得对于 , ,其中 为得分 的摘要式统计。

一个典型的异常节点如图1,其可由基于社区检测的方法识别,即: 其中 为节点所属的社会划分, 为异或操作。

给定 ,边集 ,打分函数 ,定义异常边集为 ,使得对于 , ,其中 为得分 的摘要式统计。

一个典型的异常边如图2,可令 ,其中 为时间步 时 的权重,可以为边的概率。

给定 ,子图集 ,打分函数 ,定义异常集为 ,使得对于 , ,其中 为得分 的摘要式统计。

两种典型的异常子图如图3,其中(a)为图的收缩,(b)为图的分裂。图的收缩可根据子图中的的数量衡量,即 ,图的分裂可由不同时间点社区的数量衡量。

与异常节点、边、子图检测不同,异常事件或异常突变检测检验的是时点。

给定 ,打分函数 ,若时点 满足: , ,则称时点 为一个事件。

给定 ,打分函数 ,若时点 满足: , ,则称时点 为一个突变。

通常的异常检测都使用两步法:第一步,基于特征的图表示;第二,基于机器学习的异常检测。

基于社区检测的方法关注的是社区和关联节点的演化过程,特征向量的生成亦基于图中的社区结构。不同社区检测方法的区别在于:(1)社区结构的领域,如社区内的连接性v.s.单个节点在每一步所属的社区;(2)社区结构的定义,如基于概率的软社区定义v.s.硬社区定义。基于社区检测的方法可用于异常定点、子图、突变的检测。

基于软社区匹配并单独考察每一个社区,我们可以在连续时间步内计算每个节点归属的平均变化,如果某个节点归属的平均变化显着异于其他节点,则称其为演化社区异常点。

节点社区归属的变化可以构造一个时间模式,称为软时序模式。一些文献使用了最小描述长度(MDL)结合非负矩阵分解的方法来自动检测节点角色及构造转移模型。多数文献通过抽取图中不同节点的共同模式,并比较每个节点与共同模式之间的差异来定义异常节点。部分文献使用了交替迭代优化替代常用的两步法。部分文献使用了corenet的概念,该概念不同于单纯使用density,molarity,hop-distance等概念,而是使用了节点间的加权路径,即一个节点的corenet包含该节点与权重大于给定阈值的两跳邻居。假设两个强连接的节点通常属于同一社区,则如果移除一个节点的两个邻居,一个邻域具有较高的边权重,另一个具有较低的边权重,则移除较高权重邻居的影响应更大,在每一步,每个节点首先被赋予一个异常得分,该得分衡量了其corenet的变化,异常得分较高的 各节点将被视为异常节点。

文献【69】定义了六种基于社区的异常:shrink, grow, merge, split, born, and vanish。其使用图和社区代表(representatives)进行比较以减少计算量,图代表为出现在t时刻,同时还出现在t-1、t+1或t+1与t-1时刻的节点集,社区代表是出现在其他社区最少的定点集合,基于社区代表和图代表,基于规则,判断社区是否落在六种异常中。

文献【73】定义了一种基于社区的异常:comet,周期性出现或消失的社区,演化图可表示为一个张量,然后基于低秩张量分解和MDL原则进行comet检测。

文献【3】基于多种信息源构造时序复网络,识别跨时间和网络的稳定社区结构。行为相似的网络可以用聚类或前验知识分组,如何一个社区结构在组内跨时间步稳定,但在组外没有对应社区,则该社区即为异常,如何两个社区共享一定比例的定点则称为对应。

社交网络可以根据特定时间窗口内的发文量定义事件,一个经历共同事件的组即构成一个异常子图。

通过划分图流为一致的分割来检测,分割是依据划分的相似性。

通过将最新图的顶点分区与当前增长分割中的图的分区进行比较,可以在线找到这些分割。【67】基于可返回随机的相关矩阵和molarity最大化来进行定点划分,当新图的划分与当前分割的划分有很大不同时,一个新段开始,并将新图的时间点输出为检测到的突变。两个划分的相似度使用Jaccard系数定义。GraphScope思路类似,但基于MDL来指导划分和分割。

基于MDL原则和基于该原则的压缩技术利用数据中的模式和规律性实现紧凑的图表示,其主要通过将图的邻接矩阵表示为一个二进制串,如果矩阵的行和列可以重新排列使矩阵的二进制字符串表示的熵最小化,那么压缩损失(也称为编码损失)就会最小化。数据指向的特征都来自于图或其特定子结构的编码代价;因此,异常被定义为抑制可压缩性的图或子结构(如边)

对于一条边和对应子图,如果包含该边的编码损失比不包含该边的编码损失高,则称该边为异常边。

【74】使用了一种两步交替迭代法进行节点的自动划分,当节点划分的熵收敛时,根据包含和不包含该边的编码损失,该方法也给出了边的异常度得分。

突变检测的主要思路是:连续时间步间的图是相似的,因而可以分为一组,从而降低压缩比。压缩比的上升表明新一个时间步的图与已有的图差异明显,因此是一个突变。

该方法将图集合表示为一个tensor,在该tensor上进行矩阵分解或降维,基于分解或降维后的图发现其模式和规律性,该方法可以融合更多属性信息,最常用的方法是SVD和PARAFAC(广义SVD)。

矩阵分解可用于计算每个节点的活跃(activity)向量,如果某个节点的活跃向量在连续时间步间变化明显,则称为异常节点。

【87】首先抽取每个节点的边相关矩阵 ,即该节点的每个邻域都有一行一列,对于节点 的矩阵中的一个entry 代表了边 和 间加权频率的相关性,加权频率由衰减函数获得,时间越近权重越高。M的最大特征值和对应特征向量即顶点的活跃向量的summary及边的相关性。通过寻找这些值的变化而形成的时间序列用于计算每个时间步长中每个顶点的分数,得分高于阈值的顶点将被输出为异常。

基于分解的异常事件检测有两种方法:(1)先基于分解方法来近似原始数据,然后以重建损失作为近似优劣的指标。如果某个子张量、切片或元素的重建损失很高,则即可以视其与周围数据不同特征不同,将其标记为异常事件、子图或节点。(2)跟踪奇异值和向量,以及特征值和特征向量,以检测异常顶点的显着变化。

为解决 intermediate blowup 问题(即计算中输入和输出张量超过内存限制),【81】提出了momery-efficient tucker(MET)分解方法,该方法源于Tucker分解,Tucker分解将高阶tensor用一个core tensor和每个mode(维度)矩阵表示。【80】使用了Compact Matrix Decomposition(CMD),其可以用来计算给定矩阵的稀疏低秩矩阵。使用CMD对图流中的每个邻接矩阵进行分解,可得到重建值的时间序列,基于重建值序列可进程事件检测,典型应用有COLIBRI, PARCUBE,其中后者在斑点(spotting)异常中的表现更高效。

【84】使用了随机图模型进行基于概率模型的检测,其将真实图邻接矩阵和期望图的邻接矩阵间的差异构造为残差矩阵,对残差矩阵执行SVD,再使用线性Ramp滤波器,基于top奇异值即可进行异常时间窗口检测,通过检查正确的奇异向量来确定相应的顶点。

除以上方法,我们还可以基于分解空间的显着变化来识别事件。【77】通过对数据执行PCA,计算的特征向量可以分为正常和异常两个集合,方法是检验数据中的值映射到特征向量。在每个时间步,根据特征值对特征向量进程降序排列,第一个特征向量则包含一个在其余值的3个标准差之外的投影点,此后的每个特征向量,都构成了异常集。第二步即是将数据映射到正常和异常子空间,一旦完成了这些操作,当从上一个时间步长到当前时间步异常成分的修改超过一个阈值时,即将其视为一个事件。【83】扩展了该方法,提出了联合稀疏PCA和图引导的联合稀疏PCA来定位异常和识别对应的顶点。通过为异常集使用稀疏的成分集,可以更容易识别负责的顶点。顶点根据它们在异常子空间中对应行的值得到一个异常分数,由于异常分量是稀疏的,不异常的顶点得分为0。

图的活跃向量 为主成分,左奇异向量对应最大奇异值,奇异值和奇异向量通过对加权邻接矩阵进行SVD得到。当活跃向量大幅异于“正常活跃"向量时,即定义该时点为突变点,”正常活跃“向量由前序向量得到。

正常活跃向量 ,它是对最后W时间步中活动向量形成的矩阵进行SVD得到的左奇异向量。每个时点都定义一个得分 ,其代表了当前活跃向量与正常向量的差异。异常可以使用动态阈值方案在线发现,其中得分高于阈值的时间点被输出为变化。通过计算正常向量和活动向量之间的变化比率来找到负责的顶点,与变化最大的索引所对应的顶点被标记为异常,类似的方法也可以用于节点-节点相关矩阵的活跃向量,或基于邻居相似度的节点-节点相关矩阵。

基于距离的异常检测算法的不同点在于选择用于提取和比较距离度量,以及它们用于确定异常值和相应图的方法。

如果一些边的属性演化异于正常演化,则该边就是一个异常边。

边之间的权重使用衰减函数定义,在每个时间步长中,根据相似度得分的变化之和计算每条边的异常值得分,使用阈值或简单的 作为异常值标准。

将网络视为边的流,意味着网络没有固定的拓扑,一个边的频率和持久性可以用来作为其新颖性的指标,【48】定义了集合系统不一致性指标来度量频率和持久性,当一条边到达时,计算其差异,并与活动边集的平均不一致性值进行比较,如果边的加权不一致性大于平均不一致性的阈值水平,则声明该边为异常边,基于异常边,可以进一步识别其他异常图元素(如顶点,边,子图)。

具有许多“异常”边的子图即是异常的子图。

【52】将边的权重视为异常得分,每个时间步长上的每条边都有它自己的异常分数,给定了该边权值在所有图序列的分布,该分数表示在该特定的边上看到该特定权值的概率函数。或者,为网络中的边分配异常值分数的现有方法的输出可以用作为该方法的输入。后一种方法允许应用于任何能够为边分配异常值分数的网络,一旦完成每条边的异常打分,即可发现显着异常的区域(SARs),即一个窗口内的固定子图,其类似于HDSs。【112】提出了一种迭代算法,该算法首先固定子图发现最优时间窗口,然后固定时间窗口发现最优子图。【97】拓展了该方法,允许子图渐变,即在相邻时间步间增加或移除顶点。

定义函数 为测度图距离的函数,将其应用于连续图序列,即得到距离序列,基于该距离序列应用一些启发式算法(如基于移动平均阈值的 取值)即可得到异常事件。

称每个顶点及其egonet的特征为局部特征,整张图的特征为全局特征。每个顶点的局部特征可聚合为一个向量,基于该向量的各阶矩可构造signature向量,利用signature向量间的Canberra距离(归一化的曼哈顿距离)可构造图之间的距离函数【93】。【92】利用全局特征,定义了一种基于dK-2序列的距离测度,将高于阈值的特征视为异常点。

【96】使用了顶点亲和度(即一个顶点对另一个顶点的影响,可以用于快速信念传播)得分作为signature向量,其基于连续时间步技术顶点亲和度,基于马氏距离度量两个图的相似度,亲和度得分的变化反应并适应变化的影响水平,例如桥边的移除比正常边移除的得分更高。利用单个移动范围的质量控制,可以对相似度得分的时间序列设置一个移动阈值,如指数移动平均加权。

作为特征相似度的补充,我们也可以比较两个图的结构差异来度量突变的大小,这类方法致力于发现定义距离的函数而非发现特征向量。【88】计算了异常网络的10种距离函数,使用ARMA模型构造特征值的正常模型,然后基于正常模型计算时点的残差,残差超过给定阈值的时间即可标记为异常。10种距离函数中,基于最大共有子图的方法表现最好。【90】使用了五中得分函数(顶点/边重叠,顶点排序,向量相似度,序列相似度,signature相似度)来检测三种异常(子图缺失,顶点缺失,连通性变化),表现最好的方案是抽取每个顶点和边的特征构造signature向量,使用SimHash定义距离。

我们还可以通过计算每个图的稳健性序列来检测事件,稳健性序列是图连通性的测度,具有高稳健性的图即使在去除一些顶点或边的情况下,也能保持相同的一般结构和连通性,事件检测即发现稳健性值异常变化的时点【95】。【89】使用的是图半径的变体作为稳健性指标,图半径的定义是基于所有顶点的平均离心度,而非常用的最大离心度。

基于概率理论、分布、扫描统计学等方法可以构造“正常”样本的模型,偏离该模型的样本即视为异常,这类方法的主要区别在于构造方法、建模对象、离群值定义。

主要有两种方法:一,构造扫描统计时间序列并检测离均值若干标准差的点;二,顶点分类。

扫描统计常称为滑动窗口分析,其在数据的特征区域中发现测度统计量的局部最小或最大值。对某个特定图,扫描统计量可以是图不变特征的最大值,如边的数量。

【8】使用了一个适应测度统计量的变量,即每个节点的0-2度邻居数,然后对每个顶点的局部统计量使用近期值的均值和标准差进行标准化,图的扫描统计量即最大的标准化局部统计量。标准化可以解释每个顶点的历史信息,代表每个顶点的统计量只与自己的历史信息有关而与其他顶点无关。这保证测度的最大变化与变化的绝对量无关而与比例有关。基于扫描统计量标准化时间序列,将序列均值的五个标准差作为异常值。最负责的顶点被确定为为整个图的扫描统计值所选择的顶点。

类似于使用邻居进行扫描统计,我们还可以用Markov随机场(MRF)来发现节点的状态,并通过信念传播算法推断最大似然分配,其中,每个顶点标签取决于其邻居节点。【99】通过发现二部核来检测异常点(即诈骗犯),二部核定义为诈骗犯与从犯间的交互。利用边的插入或删除只影响局部子图这一事实,它在添加新边时逐步更新模型。在传播矩阵中,一个顶点可以处于三种状态之一:欺诈者、共犯者或诚实者。

边异常检测通常使用计数过程建模,统计上显着异于该模型的边标记为异常边。

【50】用贝叶斯离散时间计数过程来建模顶点间的通信次数(边权重),并根据新图更新模型。基于学习到的计数的分布,对新观测的边进行预测 值计算,基于 值标记异常顶点对。

首先用固定的子图,多重图,累积图来构造预期行为的模型,对模型的偏离可作为子图异常检测的依据。

【104】结合扫描统计量和隐马尔可夫模型(HMM)建模边行为,其使用的局部扫描统计量是基于两种图形状:k-path图和星型图,其将滑动窗口的扫描统计数据与其过去的值进行比较,并使用在线阈值系统识别局部异常,局部异常是所有统计上显着的子图(代表k个路径或恒星)的并集。

另一个建模动态图的方法是基于多重图,其中平行边对应于两个连续时间步顶点间的通信,初始的多重图可分解为多个针对每个时间窗口的叠套子图(TSG),TSG满足两个条件:(1)对于任何两个有共同点的边,首先开始通信的边最后完成通信;(2)存在一个根顶点r,它没有传入的边,并且有一条到TSG中每个顶点的路径。出现概率低的TSG视为异常子图。【102】

累积图即为包含直到当前时点的所有边的图,边权重依据衰减函数定义,通过识别“持久模式”来定义子图的正常行为。该持久模型识别模型如下:首先构造一种图,该图每个边根据时间来加权,然后基于该图迭代抽取最重连接成分来发现。随着累积图的发展,提取的子图将被监控,并将其当前活动与基于最近行为的预期活动进行比较来进行子图异常检测。【101】

事件检测可以基于偏离图似然模型或特征值分布的偏差来进行。

【103】提出了一种新的蓄水池抽样方法来抽取图流的结构摘要,这种在线抽样方法维持多个网络划分以构造统计上显着的摘要,当一个新图进入图流,每个边都根据不同分区的边生成模型计算出一种似然性,然后以这些似然性的几何均值作为全局图似然性。

【98】使用了类似的边生成模型,每个边 的概率都存储在矩阵 中,概率基于期望最大化估计,基于所有收发对的分布,然后为每个收发对给出潜在得分,基于所有边似然得分的均值即得到每个图的得分。

【100】计算了特征值和压缩特征等式的分布(而非计算收发对的分布),基于每个顶点都存在一个顶点局部特征时间序列的假设,可在每个时间步构造一个顶点-顶点相关矩阵,通过保留最大特征值和一组低维矩阵(每个顶点对应一个矩阵),可对相关矩阵的特征方程进行压缩,通过学习特征值和矩阵的分布,即可发现异常顶点和事件。当特征值偏离期望分布时,即认为发生了事件,当顶点的矩阵偏离矩阵分布时,可认为该顶点为异常顶点。

❸ 对于异常值的检测

离群点,是一个数据对象,它显着不同于其他数据对象,与其他数据分布有较为显着的不同。有时也称非离群点为“正常数据”,离群点为“异常数据”。

离群点跟噪声数据不一样,噪声是被观测变量的随机误差或方差。一般而言,噪声在数据分析(包括离群点分析)中不是令人感兴趣的,需要在数据预处理中剔除的,减少对后续模型预估的影响,增加精度。

离群点检测是有意义的,因为怀疑产生它们的分布不同于产生其他数据的分布。因此,在离群点检测时,重要的是搞清楚是哪种外力产生的离群点。

常见的异常成因:

通常,在其余数据上做各种假设,并且证明检测到的离群点显着违反了这些假设。如统计学中的假设检验,基于小概率原理,对原假设进行判断。一般检测离群点,是人工进行筛选,剔除不可信的数据,例如对于房屋数据,面积上万,卧室数量过百等情况。而在面对大量的数据时,人工方法耗时耗力,因此,才有如下的方法进行离群点检测。

统计学方法是基于模型的方法,即为数据创建一个模型,并且根据对象拟合模型的情况来评估它们。大部分用于离群点检测的统计学方法都是构建一个概率分布模型,并考虑对象有多大可能符合该模型。

离群点的概率定义:离群点是一个对象,关于数据的概率分布模型,它具有低概率。这种情况的前提是必须知道数据集服从什么分布,如果估计错误就造成了重尾分布。

a. 参数法:

当数据服从正太分布的假设时在正态分布的假定下,u±3σ区域包含99.7%的数据,u±2σ包含95.4%的数据,u±1σ包含68.3%的数据。其区域外的数据视为离群点。

当数据是非正态分布时,可以使用切比雪夫不等式,它对任何分布形状的数据都适用。根据 切比雪夫不等式 ,至少有(1-1/k 2 )的数据落在±k个标准差之内。所以,有以下结论:

计算得到:通过绘制箱线图可以直观地找到离群点,或者通过计算四分位数极差(IQR)定义为Q3-Q1。比Q1小1.5倍的IQR或者比Q3大1.5倍的IQR的任何对象都视为离群点,因为Q1-1.5IQR和Q3+1.5IQR之间的区域包含了99.3%的对象。

涉及两个或多个属性或变量的数据称为多元数据。核心思想是把多元离群点检测任务转换成一元离群点检测问题。

- 卡方统计量的多元离群点检测 :正态分布的假定下,卡方统计量也可以用来捕获多元离群点,对象 ,卡方统计量是: , 是 在第i维上的值, 是所有对象在第i维上的均值,而n是维度。如果对象的卡方统计量很大,则该对象是离群点。

b. 非参数法:

构造直方图
为了构造一个好的直方图,用户必须指定直方图的类型和其他参数(箱数、等宽or等深)。最简单的方法是,如果该对象落入直方图的一个箱中,则该对象被看做正常的,否则被认为是离群点。也可以使用直方图赋予每个对象一个离群点得分,比如对象的离群点得分为该对象落入的箱的容积的倒数。但这个方法很难选择一个较好的直方图参数。

注意
传统的观点都认为孤立点是一个单独的点,然而很多的现实情况是异常事件具有一定的时间和空间的局部性,这种局部性会产生一个小的簇.这时候离群点(孤立点)实际上是一个小簇(图下图的C1和C3)。

一个对象是异常的,如果它远离大部分点。这种方法比统计学方法更一般、更容易使用,因为确定数据集的有意义的邻近性度量比确定它的统计分布更容易。不依赖统计检验,将基于邻近度的离群点看作是那些没有“足够多“邻居的对象。这里的邻居是用 邻近度(距离) 来定义的。最常用的距离是绝对距离(曼哈顿)和欧氏距离等等。

一个对象的离群点得分由到它的k-最近邻的距离给定。离群点得分对k的取值高度敏感。如果k太小,则少量的邻近离群点可能导致离群点较少;如果K太大,则点数少于k的簇中所有的对象可能都成了离群点,导致离群点过多。为了使该方案对于k的选取更具有鲁棒性,可以使用k个最近邻的平均距离。

从基于密度的观点来说,离群点是在低密度区域中的对象。一个对象的离群点得分是该对象周围密度的逆。基于密度的离群点检测与基于邻近度的离群点检测密切相关,因为密度通常用邻近度定义。

定义密度
一种常用的定义密度的方法是,定义密度为到k个最近邻的平均距离的倒数 。如果该距离小,则密度高,反之亦然。

另一种密度定义是使用DBSCAN聚类算法使用的密度定义,即一个对象周围的密度等于该对象指定距离d内对象的个数。 需要小心的选择d,如果d太小,则许多正常点可能具有低密度,从而离群点较多。如果d太大,则许多离群点可能具有与正常点类似的密度(和离群点得分)无法区分。 使用任何密度定义检测离群点具有与基于邻近度的离群点方案类似的特点和局限性。特殊地,当数据包含不同密度的区域时,它们不能正确的识别离群点。

定义相对密度
为了正确的识别这种数据集中的离群点,我们需要与对象邻域相关的密度概念,也就是定义相对密度。常见的有两种方法:
(1)使用基于SNN密度的聚类算法使用的方法;
(2)用点x的密度与它的最近邻y的平均密度之比作为相对密度。使用相对密度的离群点检测( 局部离群点要素LOF技术 ):

一种利用聚类检测离群点的方法是丢弃远离其他簇的小簇。这个方法可以和其他任何聚类技术一起使用,但是需要最小簇大小和小簇与其他簇之间距离的阈值。这种方案对簇个数的选择高度敏感。使用这个方案很难将离群点得分附加到对象上。

一种更系统的方法,首先聚类所有的点,对某个待测点评估它属于某一簇的程度。(基于原型的聚类可用离中心点的距离来评估,对具有目标函数(例如kmeans法时的簇的误差平方和)的聚类技术,该得分反映删除对象后目标函数的改进),如果删去此点能显着地改善此项目标函数,则可以将该点定位为孤立点。

基于聚类的离群点:一个对象是基于聚类的离群点,如果该对象不强属于任何簇。离群点对初始聚类的影响:如果通过聚类检测离群点,则由于离群点影响聚类,存在一个问题:结构是否有效。为了处理该问题,可以使用如下方法:

对象是否被认为是离群点可能依赖于簇的个数(如k很大时的噪声簇)。该问题也没有简单的答案。一种策略是对于不同的簇个数重复该分析。另一种方法是找出大量小簇,其想法是(1)较小的簇倾向于更加凝聚,(2)如果存在大量小簇时一个对象是离群点,则它多半是一个真正的离群点。不利的一面是一组离群点可能形成小簇而逃避检测。

根据已有训练集检测新样本是否异常

异常检测根据原始数据集的不同可分为两类:
novelty detection: 训练集中没有异常样本
outlier detection: 训练集中有异常样本

异常样本:
数量少,比较分散

novelty detection和outlier detection的区别:

Sklearn异常检测模型一览

5.1 奇异点检测(Novelty Detection)
奇异点检测,就是判断待测样本到底是不是在原来数据的概率分布内。概率学上认为,所有的数据都有它的隐藏的分布模式,这种分布模式可以由概率模型来具象化。

5.1 离群点检测(Outlier Detection)
不同与奇异点检测是,现在我们没有一个干净的训练集(训练集中也有噪声样本)。下面介绍的三种离群点检测算法其实也都可以用于奇异点检测。

如果我们认为,可达密度小的目标样本点就是异常点,这样未尝不可。但是,LOF算法更进一步。

LOF可以用来判断经纬度的异常。

使用python进行异常值(outlier)检测实战:KMeans + PCA + IsolationForest + SVM + EllipticEnvelope

文章引用: 数据挖掘:数据清洗——异常值处理

❹ “宏观网络流量”的定义是什么有哪些异常检测方法

一种互联网宏观流量异常检测方法(2007-11-7 10:37) 摘要:网络流量异常指网络中流量不规则地显着变化。网络短暂拥塞、分布式拒绝服务攻击、大范围扫描等本地事件或者网络路由异常等全局事件都能够引起网络的异常。网络异常的检测和分析对于网络安全应急响应部门非常重要,但是宏观流量异常检测需要从大量高维的富含噪声的数据中提取和解释异常模式,因此变得很困难。文章提出一种分析网络异常的通用方法,该方法运用主成分分析手段将高维空间划分为对应正常和异常网络行为的子空间,并将流量向量影射在正常子空间中,使用基于距离的度量来检测宏观网络流量异常事件。公共互联网正在社会生活的各个领域发挥着越来越重要的作用,与此同时,由互联网的开放性和应用系统的复杂性所带来的安全风险也随之增多。2006年,国家计算机网络应急技术处理协调中心(CNCERT/CC)共接收26 476件非扫描类网络安全事件报告,与2005年相比增加2倍,超过2003—2005年3年的总和。2006年,CNCERT/CC利用部署的863-917网络安全监测平台,抽样监测发现中国大陆地区约4.5万个IP地址的主机被植入木马,与2005年同期相比增加1倍;约有1千多万个IP地址的主机被植入僵尸程序,被境外约1.6万个主机进行控制。黑客利用木马、僵尸网络等技术操纵数万甚至上百万台被入侵的计算机,释放恶意代码、发送垃圾邮件,并实施分布式拒绝服务攻击,这对包括骨干网在内的整个互联网网络带来严重的威胁。由数万台机器同时发起的分布式拒绝服务攻击能够在短时间内耗尽城域网甚至骨干网的带宽,从而造成局部的互联网崩溃。由于政府、金融、证券、能源、海关等重要信息系统的诸多业务依赖互联网开展,互联网骨干网络的崩溃不仅会带来巨额的商业损失,还会严重威胁国家安全。据不完全统计,2001年7月19日爆发的红色代码蠕虫病毒造成的损失估计超过20亿美元;2001年9月18日爆发的Nimda蠕虫病毒造成的经济损失超过26亿美元;2003年1月爆发的SQL Slammer蠕虫病毒造成经济损失超过12亿美元。针对目前互联网宏观网络安全需求,本文研究并提出一种宏观网络流量异常检测方法,能够在骨干网络层面对流量异常进行分析,在大规模安全事件爆发时进行快速有效的监测,从而为网络防御赢得时间。1 网络流量异常检测研究现状在骨干网络层面进行宏观网络流量异常检测时,巨大流量的实时处理和未知攻击的检测给传统入侵检测技术带来了很大的挑战。在流量异常检测方面,国内外的学术机构和企业不断探讨并提出了多种检测方法[1]。经典的流量监测方法是基于阈值基线的检测方法,这种方法通过对历史数据的分析建立正常的参考基线范围,一旦超出此范围就判断为异常,它的特点是简单、计算复杂度小,适用于实时检测,然而它作为一种实用的检测手段时,需要结合网络流量的特点进行修正和改进。另一种常用的方法是基于统计的检测,如一般似然比(GLR)检测方法[2],它考虑两个相邻的时间窗口以及由这两个窗口构成的合并窗口,每个窗口都用自回归模型拟合,并计算各窗口序列残差的联合似然比,然后与某个预先设定的阈值T 进行比较,当超过阈值T 时,则窗口边界被认定为异常点。这种检测方法对于流量的突变检测比较有效,但是由于它的阈值不是自动选取,并且当异常持续长度超过窗口长度时,该方法将出现部分失效。统计学模型在流量异常检测中具有广阔的研究前景,不同的统计学建模方式能够产生不同的检测方法。最近有许多学者研究了基于变换域进行流量异常检测的方法[3],基于变换域的方法通常将时域的流量信号变换到频域或者小波域,然后依据变换后的空间特征进行异常监测。P. Barford等人[4]将小波分析理论运用于流量异常检测,并给出了基于其理论的4类异常结果,但该方法的计算过于复杂,不适于在高速骨干网上进行实时检测。Lakhina等人[5-6]利用主成分分析方法(PCA),将源和目标之间的数据流高维结构空间进行PCA分解,归结到3个主成分上,以3个新的复合变量来重构网络流的特征,并以此发展出一套检测方法。此外还有一些其他的监测方法[7],例如基于Markov模型的网络状态转换概率检测方法,将每种类型的事件定义为系统状态,通过过程转换模型来描述所预测的正常的网络特征,当到来的流量特征与期望特征产生偏差时进行报警。又如LERAD检测[8],它是基于网络安全特征的检测,这种方法通过学习得到流量属性之间的正常的关联规则,然后建立正常的规则集,在实际检测中对流量进行规则匹配,对违反规则的流量进行告警。这种方法能够对发生异常的地址进行定位,并对异常的程度进行量化。但学习需要大量正常模式下的纯净数据,这在实际的网络中并不容易实现。随着宏观网络异常流量检测成为网络安全的技术热点,一些厂商纷纷推出了电信级的异常流量检测产品,如Arbor公司的Peakflow、GenieNRM公司的GenieNTG 2100、NetScout公司的nGenius等。国外一些研究机构在政府资助下,开始部署宏观网络异常监测的项目,并取得了较好的成绩,如美国研究机构CERT建立了SiLK和AirCERT项目,澳大利亚启动了NMAC流量监测系统等项目。针对宏观网络异常流量监测的需要,CNCERT/CC部署运行863-917网络安全监测平台,采用分布式的架构,能够通过多点对骨干网络实现流量监测,通过分析协议、地址、端口、包长、流量、时序等信息,达到对中国互联网宏观运行状态的监测。本文基于863-917网络安全监测平台获取流量信息,构成监测矩阵,矩阵的行向量由源地址数量、目的地址数量、传输控制协议(TCP)字节数、TCP报文数、数据报协议(UDP)字节数、UDP报文数、其他流量字节数、其他流量报文书、WEB流量字节数、WEB流量报文数、TOP10个源IP占总字节比例、TOP10个源IP占总报文数比例、TOP10个目的IP占总字节数比例、TOP10个目的IP占总报文数比例14个部分组成,系统每5分钟产生一个行向量,观测窗口为6小时,从而形成了一个72×14的数量矩阵。由于在这14个观测向量之间存在着一定的相关性,这使得利用较少的变量反映原来变量的信息成为可能。本项目采用了主成份分析法对观测数据进行数据降维和特征提取,下面对该算法的工作原理进行介绍。 2 主成分分析技术主成分分析是一种坐标变换的方法,将给定数据集的点映射到一个新轴上面,这些新轴称为主成分。主成分在代数学上是p 个随机变量X 1, X 2……X p 的一系列的线性组合,在几何学中这些现线性组合代表选取一个新的坐标系,它是以X 1,X 2……X p 为坐标轴的原来坐标系旋转得到。新坐标轴代表数据变异性最大的方向,并且提供对于协方差结果的一个较为简单但更精练的刻画。主成分只是依赖于X 1,X 2……X p 的协方差矩阵,它是通过一组变量的几个线性组合来解释这些变量的协方差结构,通常用于高维数据的解释和数据的压缩。通常p 个成分能够完全地再现全系统的变异性,但是大部分的变异性常常能够只用少量k 个主成分就能够说明,在这种情况下,这k 个主成分中所包含的信息和那p 个原变量做包含的几乎一样多,于是可以使用k 个主成分来代替原来p 个初始的变量,并且由对p 个变量的n 次测量结果所组成的原始数据集合,能够被压缩成为对于k 个主成分的n 次测量结果进行分析。运用主成分分析的方法常常能够揭示出一些先前不曾预料的关系,因而能够对于数据给出一些不同寻常的解释。当使用零均值的数据进行处理时,每一个主成分指向了变化最大的方向。主轴以变化量的大小为序,一个主成分捕捉到在一个轴向上最大变化的方向,另一个主成分捕捉到在正交方向上的另一个变化。设随机向量X '=[X 1,X 1……X p ]有协方差矩阵∑,其特征值λ1≥λ2……λp≥0。考虑线性组合:Y1 =a 1 'X =a 11X 1+a 12X 2……a 1pX pY2 =a 2 'X =a 21X 1+a 22X 2……a 2pX p……Yp =a p'X =a p 1X 1+a p 2X 2……a p pX p从而得到:Var (Yi )=a i' ∑a i ,(i =1,2……p )Cov (Yi ,Yk )=a i '∑a k ,(i ,k =1,2……p )主成分就是那些不相关的Y 的线性组合,它们能够使得方差尽可能大。第一主成分是有最大方差的线性组合,也即它能够使得Var (Yi )=a i' ∑a i 最大化。我们只是关注有单位长度的系数向量,因此我们定义:第1主成分=线性组合a 1'X,在a1'a 1=1时,它能够使得Var (a1 'X )最大;第2主成分=线性组合a 2 'X,在a2'a 2=1和Cov(a 1 'X,a 2 'X )=0时,它能够使得Var (a 2 'X )最大;第i 个主成分=线性组合a i'X,在a1'a 1=1和Cov(a i'X,a k'X )=0(k<i )时,它能够使得Var (a i'X )最大。由此可知主成分都是不相关的,它们的方差等于协方差矩阵的特征值。总方差中属于第k个主成分(被第k个主成分所解释)的比例为:如果总方差相当大的部分归属于第1个、第2个或者前几个成分,而p较大的时候,那么前几个主成分就能够取代原来的p个变量来对于原有的数据矩阵进行解释,而且信息损失不多。在本项目中,对于一个包含14个特征的矩阵进行主成分分析可知,特征的最大变化基本上能够被2到3个主成分捕捉到,这种主成分变化曲线的陡降特性构成了划分正常子空间和异常子空间的基础。3 异常检测算法本项目的异常流量检测过程分为3个阶段:建模阶段、检测阶段和评估阶段。下面对每个阶段的算法进行详细的介绍。3.1 建模阶段本项目采用滑动时间窗口建模,将当前时刻前的72个样本作为建模空间,这72个样本的数据构成了一个数据矩阵X。在试验中,矩阵的行向量由14个元素构成。主成份分为正常主成分和异常主成份,它们分别代表了网络中的正常流量和异常流量,二者的区别主要体现在变化趋势上。正常主成份随时间的变化较为平缓,呈现出明显的周期性;异常主成份随时间的变化幅度较大,呈现出较强的突发性。根据采样数据,判断正常主成分的算法是:依据主成分和采样数据计算出第一主成分变量,求第一主成分变量这72个数值的均值μ1和方差σ1,找出第一主成分变量中偏离均值最大的元素,判断其偏离均值的程度是否超过了3σ1。如果第一主成分变量的最大偏离超过了阈值,取第一主成份为正常主成分,其他主成份均为异常主成分,取主成份转换矩阵U =[L 1];如果最大偏离未超过阈值,转入判断第下一主成分,最后取得U =[L 1……L i -1]。第一主成份具有较强的周期性,随后的主成份的周期性渐弱,突发性渐强,这也体现了网络中正常流量和异常流量的差别。在得到主成份转换矩阵U后,针对每一个采样数据Sk =xk 1,xk 2……xk p ),将其主成份投影到p维空间进行重建,重建后的向量为:Tk =UU T (Sk -X )T计算该采样数据重建前与重建后向量之间的欧氏距离,称之为残差:dk =||Sk -Tk ||根据采样数据,我们分别计算72次采样数据的残差,然后求其均值μd 和标准差σd 。转换矩阵U、残差均值μd 、残差标准差σd 是我们构造的网络流量模型,也是进行流量异常检测的前提条件。 3.2 检测阶段在通过建模得到网络流量模型后,对于新的观测向量N,(n 1,n 2……np ),采用与建模阶段类似的分析方法,将其中心化:Nd =N -X然后将中心化后的向量投影到p维空间重建,并计算残差:Td =UUTNdTd =||Nd -Td ||如果该观测值正常,则重建前与重建后向量应该非常相似,计算出的残差d 应该很小;如果观测值代表的流量与建模时发生了明显变化,则计算出的残差值会较大。本项目利用如下算法对残差进行量化:3.3 评估阶段评估阶段的任务是根据当前观测向量的量化值q (d ),判断网络流量是否正常。根据经验,如果|q (d )|<5,网络基本正常;如果5≤|q (d )|<10,网络轻度异常;如果10≤|q (d )|,网络重度异常。4 实验结果分析利用863-917网络安全监测平台,对北京电信骨干网流量进行持续监测,我们提取6小时的观测数据,由于篇幅所限,我们给出图1—4的时间序列曲线。由图1—4可知单独利用任何一个曲线都难以判定异常,而利用本算法可以容易地标定异常发生的时间。本算法计算结果如图5所示,异常发生时间在图5中标出。我们利用863-917平台的回溯功能对于异常发生时间进行进一步的分析,发现在标出的异常时刻,一个大规模的僵尸网络对网外的3个IP地址发起了大规模的拒绝服务攻击。 5 结束语本文提出一种基于主成分分析的方法来划分子空间,分析和发现网络中的异常事件。本方法能够准确快速地标定异常发生的时间点,从而帮助网络安全应急响应部门及时发现宏观网络的流量异常状况,为迅速解决网络异常赢得时间。试验表明,我们采用的14个特征构成的分析矩阵具有较好的识别准确率和分析效率,我们接下来将会继续寻找更具有代表性的特征来构成数据矩阵,并研究更好的特征矩阵构造方法来进一步提高此方法的识别率,并将本方法推广到短时分析中。6 参考文献[1] XU K, ZHANG Z L, BHATTACHARYYA S. Profiling Internet backbone traffic: Behavior models and applications [C]// Proceedings of ACM SIGCOMM, Aug 22- 25, 2005, Philadelphia, PA, USA. New York, NY,USA:ACM,2005:169-180.[2] HAWKINS D M, QQUI P, KANG C W. The change point model for statistical process control [J]. Journal of Quality Technology,2003, 35(4).[3] THOTTAN M, JI C. Anomaly detection in IP networks [J]. IEEE Transactions on Signal Processing, 2003, 51 )8):2191-2204.[4] BARFORD P, KLINE J, PLONKA D, et al. A signal analysis of network traffic anomalies [C]//Proceedings of ACM SIGCOMM Intemet Measurement Workshop (IMW 2002), Nov 6-8, 2002, Marseilles, France. New York, NY,USA:ACM, 2002:71-82.[5] LAKHINA A, CROVELLA M, DIOT C. Mining anomalies using traffic feature distributions [C]// Proceedings of SIGCOMM, Aug 22-25, 2005, Philadelphia, PA, USA. New York, NY,USA: ACM, 2005: 217-228.[6] LAKHINA A, CROVELLA M, DIOT C. Diagnosing network-wide traffic anomalies [C]// Proceedings of ACM SIGCOMM, Aug 30 - Sep 3, 2004, Portland, OR, USA. New York, NY,USA: ACM, 2004: 219-230.[7] SCHWELLER R, GUPTA A, PARSONS E, et al. Reversible sketches for efficient and accurate change detection over network data streams [C]//Proceedings of ACM SIGCOMM Internet Measurement Conference (IMC’04), Oct 25-27, 2004, Taormina, Sicily, Italy. New York, NY,USA: ACM, 2004:207-212.[8] MAHONEY M V, CHAN P K. Learning rules for anomaly detection of hostile network traffic [C]// Proceedings of International Conference on Data Mining (ICDM’03), Nov 19-22, Melbourne, FL, USA . Los Alamitos, CA, USA: IEEE Computer Society, 2003:601-604.

❺ 异常值检测算法--箱线图四分位检测异常值

首先,给大家讲下什么叫四分位数。顾名思义,就是把一堆数据排序会分成四份,找出其中的那三个点。中间那个叫中位数,下面那个叫下四分位数据,上面那个叫上四分位数。如下图:

中间的两个数是12和14,平均数13即为中位数。14以上的数字,最中间的数字是20即为上四分位数。12以下中间的数字是4即为下四分位数。

当然,也是更严谨的计算方法。对样本数据或者全部数据线性回归,找出概率密度函数。反函数y=0.5对应的x值为中位数,y=0.25对应的x值为下四分位数,y=0.75对应的x值为上四分位数

和3σ原则相比,箱线图依据实际数据绘制,真实、直观地表现出了数据分布的本来面貌,且没有对数据作任何限制性要求(3σ原则要求数据服从正态分布或近似服从正态分布),其判断异常值的标准以四分位数和四分位距为基础。四分位数给出了数据分布的中心、散布和形状的某种指示,具有一定的鲁棒性,即25%的数据可以变得任意远而不会很大地扰动四分位数,所以异常值通常不能对这个标准施加影响。鉴于此,箱线图识别异常值的结果比较客观,因此在识别异常值方面具有一定的优越性。
箱型图提供了识别异常值的一个标准,即异常值通常被定义为小于QL-1.5IQR或大于QU+1.5IQR的值。其中,QL称为下四分位数,表示全部观察值中有四分之一的数据取值比它小;QU称为上四分位数,表示全部观察值中有四分之一的数据取值比它大;IQR称为四分位数间距,是上四分位数QU与下四分位数QL之差,其间包含了全部观察值的一半。

❻ 关于异常检测auc的一些思考

  auc作为度量有个好处,就是可以排除阈值的影响,auc直接体现算法对所检测样本的排序质量。要提高auc的准确率,就需要算法能够准确发现待测样本与训练样本的差异。对于视觉分类任务来说,就是将视觉上的差异体现到度量上,在样本上直接衡量是很难行得通,通常希望提取出可以度量的特征,在特征空间中去衡量,这个特征空间最好可以利用欧式距离来计算,那就可以提取出特征,接着计算特征之间的距离,最后按照距离来排序得到auc。

  概括下步骤,样本先映射成特征,根据训练样本的特征得出特征中心,计算测试样本与中心的距离,按照距离排序。映射特征可以使用自编码器,AE提取的特征在非线性的流形空间中,未必就适合欧式距离,所以还要有一些约束,这些都可以通过损失来体现。什么的损失合适需要根据具体的任务来定了。

❼ 异常点检测方法

一、基本概念

异常对象被称作离群点。异常检测也称偏差检测和例外挖掘。

常见的异常成因:数据来源于不同的类(异常对象来自于一个与大多数数据对象源(类)不同的源(类)的思想),自然变异,以及数据测量或收集误差。

异常检测的方法:

(1)基于模型的技术:首先建立一个数据模型,异常是那些同模型不能完美拟合的对象;如果模型是簇的集合,则异常是不显着属于任何簇的对象;在使用回归模型时,异常是相对远离预测值的对象。

(2)基于邻近度的技术:通常可以在对象之间定义邻近性度量,异常对象是那些远离其他对象的对象。

(3)基于密度的技术:仅当一个点的局部密度显着低于它的大部分近邻时才将其分类为离群点。

二、异常点检测的方法

1、统计方法检测离群点

统计学方法是基于模型的方法,即为数据创建一个模型,并且根据对象拟合模型的情况来评估它们。大部分用于离群点检测的统计学方法都是构建一个概率分布模型,并考虑对象有多大可能符合该模型。离群点的概率定义:离群点是一个对象,关于数据的概率分布模型,它具有低概率。这种情况的前提是必须知道数据集服从什么分布,如果估计错误就造成了重尾分布。异常检测的混合模型方法:对于异常检测,数据用两个分布的混合模型建模,一个分布为普通数据,而另一个为离群点。

聚类和异常检测目标都是估计分布的参数,以最大化数据的总似然(概率)。聚类时,使用EM算法估计每个概率分布的参数。然而,这里提供的异常检测技术使用一种更简单的方法。初始时将所有对象放入普通对象集,而异常对象集为空。然后,用一个迭代过程将对象从普通集转移到异常集,只要该转移能提高数据的总似然(其实等价于把在正常对象的分布下具有低概率的对象分类为离群点)。(假设异常对象属于均匀分布)。异常对象由这样一些对象组成,这些对象在均匀分布下比在正常分布下具有显着较高的概率。

优缺点:(1)有坚实的统计学理论基础,当存在充分的数据和所用的检验类型的知识时,这些检验可能非常有效;(2)对于多元数据,可用的选择少一些,并且对于高维数据,这些检测可能性很差。

2、基于邻近度的离群点检测。

一个对象是异常的,如果它远离大部分点。这种方法比统计学方法更一般、更容易使用,因为确定数据集的有意义的邻近性度量比确定它的统计分布更容易。一个对象的离群点得分由到它的k-最近邻的距离给定。离群点得分对k的取值高度敏感。如果k太小(例如1),则少量的邻近离群点可能导致较低的离群点得分;如果k太大,则点数少于k的簇中所有的对象可能都成了离群点。为了使该方案对于k的选取更具有鲁棒性,可以使用k个最近邻的平均距离。

优缺点:(1)简单;(2)缺点:基于邻近度的方法需要O(m^2)时间,大数据集不适用;(3)该方法对参数的选择也是敏感的;(4)不能处理具有不同密度区域的数据集,因为它使用全局阈值,不能考虑这种密度的变化。

3、基于密度的离群点检测。

从基于密度的观点来说,离群点是在低密度区域中的对象。一个对象的离群点得分是该对象周围密度的逆。基于密度的离群点检测与基于邻近度的离群点检测密切相关,因为密度通常用邻近度定义。一种常用的定义密度的方法是,定义密度为到k个最近邻的平均距离的倒数。如果该距离小,则密度高,反之亦然。另一种密度定义是使用DBSCAN聚类算法使用的密度定义,即一个对象周围的密度等于该对象指定距离d内对象的个数。需要小心的选择d,如果d太小,则许多正常点可能具有低密度,从而具有高离群点得分。如果d太大,则许多离群点可能具有与正常点类似的密度(和离群点得分)。使用任何密度定义检测离群点具有与基于邻近度的离群点方案类似的特点和局限性。特殊地,当数据包含不同密度的区域时,它们不能正确的识别离群点。

为了正确的识别这种数据集中的离群点,我们需要与对象邻域相关的密度概念,也就是定义相对密度。常见的有两种方法:(1)使用基于SNN密度的聚类算法使用的方法;(2)用点x的密度与它的最近邻y的平均密度之比作为相对密度。

使用相对密度的离群点检测(局部离群点要素LOF技术):首先,对于指定的近邻个数(k),基于对象的最近邻计算对象的密度density(x,k) ,由此计算每个对象的离群点得分;然后,计算点的邻近平均密度,并使用它们计算点的平均相对密度。这个量指示x是否在比它的近邻更稠密或更稀疏的邻域内,并取作x的离群点得分(这个是建立在上面的离群点得分基础上的)。

优缺点:

(1)给出了对象是离群点的定量度量,并且即使数据具有不同的区域也能够很好的处理;

(2)与基于距离的方法一样,这些方法必然具有O(m2)的时间复杂度。对于低维数据使用特定的数据结构可以达到O(mlogm);

(3)参数选择是困难的。虽然LOF算法通过观察不同的k值,然后取得最大离群点得分来处理该问题,但是,仍然需要选择这些值的上下界。

4、基于聚类的技术

一种利用聚类检测离群点的方法是丢弃远离其他簇的小簇。这个方法可以和其他任何聚类技术一起使用,但是需要最小簇大小和小簇与其他簇之间距离的阈值。这种方案对簇个数的选择高度敏感。使用这个方案很难将离群点得分附加到对象上。一种更系统的方法,首先聚类所有对象,然后评估对象属于簇的程度(离群点得分)(基于原型的聚类可用离中心点的距离来评估,对具有目标函数的聚类技术该得分反映删除对象后目标函数的改进(这个可能是计算密集的))。基于聚类的离群点:一个对象是基于聚类的离群点,如果该对象不强属于任何簇。离群点对初始聚类的影响:如果通过聚类检测离群点,则由于离群点影响聚类,存在一个问题:结构是否有效。为了处理该问题,可以使用如下方法:对象聚类,删除离群点,对象再次聚类(这个不能保证产生最优结果)。还有一种更复杂的方法:取一组不能很好的拟合任何簇的特殊对象,这组对象代表潜在的离群点。随着聚类过程的进展,簇在变化。不再强属于任何簇的对象被添加到潜在的离群点集合;而当前在该集合中的对象被测试,如果它现在强属于一个簇,就可以将它从潜在的离群点集合中移除。聚类过程结束时还留在该集合中的点被分类为离群点(这种方法也不能保证产生最优解,甚至不比前面的简单算法好,在使用相对距离计算离群点得分时,这个问题特别严重)。

对象是否被认为是离群点可能依赖于簇的个数(如k很大时的噪声簇)。该问题也没有简单的答案。一种策略是对于不同的簇个数重复该分析。另一种方法是找出大量小簇,其想法是(1)较小的簇倾向于更加凝聚,(2)如果存在大量小簇时一个对象是离群点,则它多半是一个真正的离群点。不利的一面是一组离群点可能形成小簇而逃避检测。

优缺点:

(1)基于线性和接近线性复杂度(k均值)的聚类技术来发现离群点可能是高度有效的;

(2)簇的定义通常是离群点的补,因此可能同时发现簇和离群点;

(3) 产生的离群点集和它们的得分可能非常依赖所用的簇的个数和数据中离群点的存在性;

(4)聚类算法产生的簇的质量对该算法产生的离群点的质量影响非常大。

新颖性和离群值检测

离群值检测:训练数据包含离群值,即与其他观测值相距甚远的观测值。离群检测估计器会尝试拟合训练数据最集中的区域,忽略异常观察。

新颖性检测:训练数据不受异常值的污染,有兴趣检测新观察值是否是异常值。该情况下离群值也称为新颖性。

离群值检测和新颖性检测均用于异常检测,离群值检测称为无监督异常检测,新颖性检测称为半监督异常检测。离群值检测的情况下,离群值/异常不能形成密集的群集,可假设离群值/异常位于低密度区域;新颖性检测的情况下,只要新颖性/异常位于训练数据的低密度区域,就可以形成密集的簇。

通过对玩具数据集进行异常检测比较异常检测算法

数据集中包含一种或两种模式(高密度区域),以说明算法处理多模式数据的能力。

对于每个数据集,将生成15%的样本作为随机均匀噪声。该比例是OneClassSVM的nu参数和其他异常值检测算法的污染参数提供的值。离群值之间的决策边界以黑色显示,但是LOF除外,因为当采用LOF用于离群值检测时,没有适用于新数据的预测方法。

OneClassSVM对异常值敏感,对异常值检测执行的不好。当训练集不受异常值污染时,此估计器最适合新颖性检测。即不适用在高维中进行离群值检测或者不对基础数据的分布进行任何假设,OneClassSVM在这些情况下可能会根据其超参数给出有用的结果。

covariance EllipticEnvelope(协方差椭圆密度)假定数据是高斯分布并学习一个椭圆。在数据不是单峰时,会退化。此估计器对异常值具有鲁棒性。

IsolationFrorest和LocalOutlierFactor针对多模式数据集效果显着。LOF针对第三种数据集,明显优于其它三种估计器,该数据集中两种模式的密度不同。LOF的局部方面,即它仅将一个样本的异常评分与其邻居评分作比较,从何体现了该方法的优势。

针对最后一个均匀分布在超立方体中的数据集,很难说一个样本比另一个样本异常得多。除了OneClassSVM有些过拟合外,所有估计器都针对该情况提出不错的解决方案。针对这种情况,应该仔细观察样本的异常分数,性能好的估算器应该为所有样本分配相似的分数。

使用局部离群因子(LOF)进行离群值检测

LOF算法是一种无监督的异常检测方法,可计算给定数据点相对于其邻居的局部密度偏差。其中密度远低于其邻居的样本为异常值。

LOF算法的优势在于同时考虑了数据集的局部和全局属性:即使在异常样本具有不同底层密度的数据集中,仍能保持良好性能。问题不在于样本有多孤立,而在于样本相对于周围邻域有多孤立。

通常考虑的邻居数量(1)大于群集必须包含的最小样本数量,以便其他样本可以是相对于该群集的局部离散值;(2)小于可能是局部异常值的最大进距采样数,此类消息通常不可用,采用n_neighbors=20。

具有局部异常值的新颖性检验

LOF是一种无监督的异常检测方法,可计算给定数据点相对于其邻居的局部密度偏差,密度远低于其邻居的样本为异常值。LOF用于新颖性检验时,切勿在训练集上使用预测、决定函数、实例得分,会导致结果错误。只能对新的看不见的数据(不在训练集中)使用这些方法。

通常考虑邻居数量(1)大于群集必须包含的最小样本数,以便其他样本可以是相对于该群集的局部离群值;(2)小于可能是局部异常值的最大进距采样数,此类消息通常不可用,采用n_neighbors=20。

隔离林

在高维数据集中执行异常检测的一种有效方法是使用随机森林,分离的观察通过随机选择一个函数,随机选择所选择的特征的最大值和最小值之间的分割值。递归分区可用树结构表示,隔离样本所需的拆分数量等于从根节点到终止结点的路径长度。随机树的森林中的平均路径长度是对正态性和决策函数的度量。随机分区产生的异常路径明显较短,因此如果随机树森林为特定样本生成的较短路径,则该树代表的值很可能是异常的。

OneClassSVM

无监督的离群值检测,支持高维分布,基于libsvm

不假定数据分布的任何参数形式,可以更好的对数据的复杂形状进行建模,能够捕获真实的数据结构,难点在于调整核函数宽度参数,以便在数据散布矩阵的形状和数据过度拟合的风险间取得折中。

协方差椭圆密度

用于检测高斯分布数据集中的异常值的对象

经验协方差估计(作为非稳健估计)受到观测值异质结构的高度影响;鲁棒协方差估计能够集中于数据分布的主要模式,但是它坚持假设数据是高斯分布,产生了对数据结构的某些估计,在一定程度上是准确的。

HBOS单维效果极佳,但是标准差方法的mask 掩码效应严重。例如 数据通常在100以内,但是有两个异常点,500,1000000。这个算法就不能检出500这个异常点。

对比而言,孤立森林理论上更适合大数据的异常检测,且无掩码效应。孤立森林确定异常时训练只用样本数据。每颗树样本数量默认只有256个,默认只用100颗树。所以理论上25600个样本就能确定海量数据中的异常点了。

Sklearn的 isolation forest 例子默认是读入全量数据再采样。如果配上warm up 选项就能分批放入采样。

异常检测的深度学习研究综述

❽ 基于统计分析的异常检测算法有哪些

根据不同的需求来进行不同的处理1空洞这个肯定是像素颜色和周边的不同建议用阈值分割然后轮廓检测2褶皱这个褶皱肯定会有梯度的变化建议检测边缘再计算褶皱的梯度信息3划痕这个和上一个问题相似但是也有不同应该是梯度的方向和强度不同(一个是凹一个是凸)4斑点如果只是点点星星的opencv里也有很多角点检测算法比如surffastORB等但是也不是每个必须独立对应着相应的方法,比如求边缘梯度的时候可以一次性处理处理好多信息。你往下做,还有疑问在这里提问就行,不用另开问题了。

❾ 大数据科学家需要掌握的几种异常值检测方法

引言

异常值检测与告警一直是工业界非常关注的问题,自动准确地检测出系统的异常值,不仅可以节约大量的人力物力,还能尽早发现系统的异常情况,挽回不必要的损失。个推也非常重视大数据中的异常值检测,例如在运维部门的流量管理业务中,个推很早便展开了对异常值检测的实践,也因此积累了较为丰富的经验。本文将从以下几个方面介绍异常值检测。

1、异常值检测研究背景

2、异常值检测方法原理

3、异常值检测应用实践

异常值检测研究背景

异常值,故名思议就是不同于正常值的值。 在数学上,可以用离群点来表述,这样便可以将异常值检测问题转化为数学问题来求解。

异常值检测在很多场景都有广泛的应用,比如:

1、流量监测

互联网上某些服务器的访问量,可能具有周期性或趋势性:一般情况下都是相对平稳的,但是当受到某些黑客攻击后,其访问量可能发生显着的变化,及早发现这些异常变化对企业而言有着很好的预防告警作用。

2、金融风控

正常账户中,用户的转账行为一般属于低频事件,但在某些金融诈骗案中,一些嫌犯的账户就可能会出现高频的转账行为,异常检测系统如果能发现这些异常行为,及时采取相关措施,则会规避不少损失。

3、机器故障检测

一个运行中的流水线,可能会装有不同的传感器用来监测运行中的机器,这些传感器数据就反应了机器运行的状态,这些实时的监测数据具有数据量大、维度广的特点,用人工盯着看的话成本会非常高,高效的自动异常检测算法将能很好地解决这一问题。

异常值检测方法原理

本文主要将异常值检测方法分为两大类:一类是基于统计的异常值检测,另一类是基于模型的异常值检测。

基于统计的方法  

基于模型的方法

1、基于统计的异常值检测方法

常见的基于统计的异常值检测方法有以下2种,一种是基于3σ法则,一种是基于箱体图。

3σ法则  

箱体图

3σ法则是指在样本服从正态分布时,一般可认为小于μ-3σ或者大于μ+3σ的样本值为异常样本,其中μ为样本均值,σ为样本标准差。在实际使用中,我们虽然不知道样本的真实分布,但只要真实分布与正太分布相差不是太大,该经验法则在大部分情况下便是适用的。

箱体图也是一种比较常见的异常值检测方法,一般取所有样本的25%分位点Q1和75%分位点Q3,两者之间的距离为箱体的长度IQR,可认为小于Q1-1.5IQR或者大于Q3+1.5IQR的样本值为异常样本。

基于统计的异常检测往往具有计算简单、有坚实的统计学基础等特点,但缺点也非常明显,例如需要大量的样本数据进行统计,难以对高维样本数据进行异常值检测等。

2、基于模型的异常值检测

通常可将异常值检测看作是一个二分类问题,即将所有样本分为正常样本和异常样本,但这和常规的二分类问题又有所区别,常规的二分类一般要求正负样本是均衡的,如果正负样本不均匀的话,训练结果往往会不太好。但在异常值检测问题中,往往面临着正(正常值)负(异常值)样本不均匀的问题,异常值通常比正常值要少得多,因此需要对常规的二分类模型做一些改进。

基于模型的异常值检测一般可分为有监督模型异常值检测和无监督模型异常值检测,比较典型的有监督模型如oneclassSVM、基于神经网络的自编码器等。 oneclassSVM就是在经典的SVM基础上改进而来,它用一个超球面替代了超平面,超球面以内的值为正常值,超球面以外的值为异常值。

经典的SVM  

1

 基于模型的方法

2

基于神经网络的自编码器结构如下图所示。

自编码器(AE)

将正常样本用于模型训练,输入与输出之间的损失函数可采用常见的均方误差,因此检测过程中,当正常样本输入时,均方误差会较小,当异常样本输入时,均方误差会较大,设置合适的阈值便可将异常样本检测出来。但该方法也有缺点,就是对于训练样本比较相近的正常样本判别较好,但若正常样本与训练样本相差较大,则可能会导致模型误判。

无监督模型的异常值检测是异常值检测中的主流方法,因为异常值的标注成本往往较高,另外异常值的产生往往无法预料,因此有些异常值可能在过去的样本中根本没有出现过, 这将导致某些异常样本无法标注,这也是有监督模型的局限性所在。 较为常见的无监督异常值检测模型有密度聚类(DBSCAN)、IsolationForest(IF)、RadomCutForest(RCF)等,其中DBSCAN是一种典型的无监督聚类方法,对某些类型的异常值检测也能起到不错的效果。该算法原理网上资料较多,本文不作详细介绍。

IF算法最早由南京大学人工智能学院院长周志华的团队提出,是一种非常高效的异常值检测方法,该方法不需要对样本数据做任何先验的假设,只需基于这样一个事实——异常值只是少数,并且它们具有与正常值非常不同的属性值。与随机森林由大量决策树组成一样,IsolationForest也由大量的树组成。IsolationForest中的树叫isolation tree,简称iTree。iTree树和决策树不太一样,其构建过程也比决策树简单,因为其中就是一个完全随机的过程。

假设数据集有N条数据,构建一颗iTree时,从N条数据中均匀抽样(一般是无放回抽样)出n个样本出来,作为这颗树的训练样本。

在样本中,随机选一个特征,并在这个特征的所有值范围内(最小值与最大值之间)随机选一个值,对样本进行二叉划分,将样本中小于该值的划分到节点的左边,大于等于该值的划分到节点的右边。

这样得到了一个分裂条件和左、右两边的数据集,然后分别在左右两边的数据集上重复上面的过程,直至达到终止条件。 终止条件有两个,一个是数据本身不可再分(只包括一个样本,或者全部样本相同),另外一个是树的高度达到log2(n)。 不同于决策树,iTree在算法里面已经限制了树的高度。不限制虽然也可行,但出于效率考虑,算法一般要求高度达到log2(n)深度即可。

把所有的iTree树构建好了,就可以对测试数据进行预测了。预测的过程就是把测试数据在iTree树上沿对应的条件分支往下走,直到达到叶子节点,并记录这过程中经过的路径长度h(x),即从根节点,穿过中间的节点,最后到达叶子节点,所走过的边的数量(path length)。最后,将h(x)带入公式,其中E(.)表示计算期望,c(n)表示当样本数量为n时,路径长度的平均值,从而便可计算出每条待测数据的异常分数s(Anomaly Score)。异常分数s具有如下性质:

1)如果分数s越接近1,则该样本是异常值的可能性越高;

2)如果分数s越接近0,则该样本是正常值的可能性越高;

RCF算法与IF算法思想上是比较类似的,前者可以看成是在IF算法上做了一些改进。针对IF算法中没有考虑到的时间序列因素,RCF算法考虑了该因素,并且在数据样本采样策略上作出了一些改进,使得异常值检测相对IF算法变得更加准确和高效,并能更好地应用于流式数据检测。

IF算法

RCF算法

上图展示了IF算法和RCF算法对于异常值检测的异同。我们可以看出原始数据中有两个突变异常数据值,对于后一个较大的突变异常值,IF算法和RCF算法都检测了出来,但对于前一个较小的突变异常值,IF算法没有检测出来,而RCF算法依然检测了出来,这意味着RCF有更好的异常值检测性能。

异常值检测应用实践

理论还需结合实践,下面我们将以某应用从2016.08.16至2019.09.21的日活变化情况为例,对异常值检测的实际应用场景予以介绍:

从上图中可以看出该应用的日活存在着一些显着的异常值(比如红色圆圈部分),这些异常值可能由于活动促销或者更新迭代出现bug导致日活出现了比较明显的波动。下面分别用基于统计的方法和基于模型的方法对该日活序列数据进行异常值检测。

基于3σ法则(基于统计)

RCF算法(基于模型)

从图中可以看出,对于较大的突变异常值,3σ法则和RCF算法都能较好地检测出来, 但对于较小的突变异常值,RCF算法则要表现得更好。

总结

上文为大家讲解了异常值检测的方法原理以及应用实践。综合来看,异常值检测算法多种多样 ,每一种都有自己的优缺点和适用范围,很难直接判断哪一种异常检测算法是最佳的, 具体在实战中,我们需要根据自身业务的特点,比如对计算量的要求、对异常值的容忍度等,选择合适的异常值检测算法。

接下来,个推也会结合自身实践,在大数据异常检测方面不断深耕,继续优化算法模型在不同业务场景中的性能,持续为开发者们分享前沿的理念与最新的实践方案。

❿ 异常检测统计学方法

1. 概述
2. 参数方法

3. 非参数方法
4. HBOS
5. 总结

<span id="1"></span>

统计学方法对数据的正常性做出假定。 它们假定正常的数据对象由一个统计模型产生,而不遵守该模型的数据是异常点。 统计学方法的有效性高度依赖于对给定数据所做的统计模型假定是否成立。

具体方法:先基于统计学方法确定一个概率分布模型,然后判断各个离散点有多大概率符合该模型。

难点在于如何得到概率分布模型。首先是识别数据集的具体分布:数据的真实分布是否是现在手里的数据集完全体现的。尽管许多类型的数据都可以用常见的分布(高斯分布、泊松分布或者二项式分布)来描述,但是具有非标准分布的数据集非常常见。如果选择了错误的模型,则对象可能会被错误地识别为异常点。其次,如何确定使用属性的个数,基于统计学的方法,数据的属性一般具有一个或多个,那么在建立概率分布模型的过程中究竟是用一个属性还是多个属性需要分析和尝试。最后,当使用数据属性很多时,模型比较复杂并且难以理解,会涉及到EM算法。

异常检测的统计学方法,有两种具体的方法:参数方法和非参数方法。

<span id="2"></span>

假定正常的数据对象被一个以 为参数的参数分布产生。该参数分布的概率密度函数 给出对象 被该分布产生的概率。该值越小, 越可能是异常点。

<span id="2.1"></span>

仅涉及一个属性或变量的数据称为一元数据。我们假定数据分布符合正态分布,然后通过现有的数据得到正态分布的关键参数,把低概率的点识别为异常点。

假定输入的数据集为 ,数据集中的样本服从正态分布,即存在一个 和 ,使得 。这里的 和 可以通过计算求得。

计算公式如下:

求出上述的参数后,我们就可以根据概率密度函数计算每个数据点服从正态分布的概率,或者说离散数据点的概率。

概率计算公式为:

需要确定一个阈值,这个阈值一般是经验值,可以选择在验证集上使得评估指标值最大的阈值取值作为最终阈值。如果计算出来的概率低于阈值,就可以认为该数据点为异常点。

例如常用的3sigma原则,如果数据点超过范围 ,那么这些点可能是异常点。

这个方法还可以用于可视化。参考箱型图,以数据集的上下四分位数(Q1和Q3)、中点等参数,异常点常被定义为小于 和 。其中, 。

利用python画一个箱型图:

<span id="2.2"></span>

涉及两个或多个属性或变量的数据称为多元数据。分为两种情况,一种是特征相互独立,一种是特征间不相互独立。

<span id="2.2"></span>

当数据是多元数据的时候,核心思想是把多元异常点检测任务转换为一元异常点检测问题。例如基于正态分布的一元异常点检测扩充到多元情形时,可以求出每一维度的均值和标准差。对于第 维:

计算概率密度函数:

<span id="2.2.2"></span>

<span id="2.3"></span>

当实际数据很复杂时,可以考虑建立混合参数模型,假定数据集 包含来自两个概率分布: 是大多数(正常)对象的分布,而 是异常对象的分布。数据的总概率分布可以记作

其中, 是一个数据对象; 是0和1之间的数,给出离群点的期望比例。

<span id="3"></span>

相比参数方法,非参数方法对数据做较少的假定,不做先验概率分布,因而在更多情况下被使用。

直方图是一种频繁使用的非参数统计模型,可以用来检测异常点。该过程包括如下两步:

步骤1:构造直方图。使用输入数据(训练数据)构造一个直方图。该直方图可以是一元的,或者多元的(如果输入数据是多维的)。

尽管非参数方法并不假定任何先验统计模型,但是通常确实要求用户提供参数,以便由数据学习。例如,用户必须指定直方图的类型(等宽的或等深的)和其他参数(直方图中的箱数或每个箱的大小等)。与参数方法不同,这些参数并不指定数据分布的类型。

步骤2:检测异常点。为了确定一个对象是否是异常点,可以对照直方图检查它。在最简单的方法中,如果该对象落入直方图的一个箱中,则该对象被看作正常的,否则被认为是异常点。

对于更复杂的方法,可以使用直方图赋予每个对象一个异常点得分。例如令对象的异常点得分为该对象落入的箱的容积的倒数。

使用直方图作为异常点检测的非参数模型的一个缺点是, 很难选择一个合适的箱尺寸 。一方面,如果箱尺寸太小,则许多正常对象都会落入空的或稀疏的箱中,因而被误识别为异常点。另一方面,如果箱尺寸太大,则异常点对象可能渗入某些频繁的箱中,因而“假扮”成正常的。

<span id="4"></span>

HBOS全名为:Histogram-based Outlier Score。它是一种单变量方法的组合,不能对特征之间的依赖关系进行建模,但是计算速度较快,对大数据集友好。其基本假设是数据集的每个维度 相互独立 。然后对每个维度进行区间(bin)划分,区间的密度越高,异常评分越低。

HBOS算法流程:

推导过程如下:

<span id="5"></span>

热点内容
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:335
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:378
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:612
java用什么软件写 发布:2025-05-18 03:56:19 浏览:32
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:107
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:942
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:739
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:802
网卡访问 发布:2025-05-18 03:35:04 浏览:510
接收和发送服务器地址 发布:2025-05-18 03:33:48 浏览:371