异常检测Anomaly Detection(二)基于统计的方法

基于统计思想的异常检测是一类比较传统且直观的方法,其基本假设为:
正常数据发生在随机模型的高概率区域,而异常发生在随机模型的低概率区域。
思想核心为找出不符合假定分布的数据点,分为参数方法和非参数方法两类。两类技术本质上都是在拟合统计模型,参数方法假定分布密度函数f(x)的具体形式已知(如正态分布),非参数方法假设分布函数未知并利用其他手段(如直方图)描述数据分布。通常,非参数方法对数据做较少假定,因而在更多情况下都可以使用。

1. 参数方法 Parametric method

1.1 假设正常数据服从正态分布

1.1.1 直觉与经验——3 σ \sigma σ原则与箱线图

假设一组样本服从正态分布,那么其绝大多数的样本应该分布在距离均值 μ \mu μ三倍标准差 σ \sigma σ的范围之间,即 [ μ − 3 σ , μ + 3 σ ] [\mu-3\sigma,\mu+3\sigma] [μ3σ,μ+3σ],处于此范围之外的数据我们即可划分为异常值。关于分布中 μ \mu μ σ \sigma σ的参数估计,可以使用样本均值和样本标准差。
箱线图Box Plot就是基于此原理的一种可视化异常的方式,其优势在于能够直观看到每个变量下的异常值。
3sigmaBox Plot

1.1.2 量化差异——假设检验

如果说3 σ \sigma σ原则与箱线图是利用人类主观经验排查异常,那么假设检验可以帮助我们量化差异的可信度。本文介绍其中一种假设检验方法:Grubbs检验法
在这里插入图片描述
本图来自网络,侵删

Grubbs检验(Grubbs’ Test),也称为最大归一化残差检测,常被用来检验服从正态分布的单变量数据集中的单个异常值。Grubbs每次至多检测到一个异常值,即最大值或最小值,所以也可用来检验最大值、最小值偏离均值的程度是否异常。
若有多个离群值,可以循环使用Grubbs检验,但因为每次删除一个异常值后数据分布都在变化,一直循环极有可能将正常值剔除掉,所以需要谨慎设置停止条件。首先接受原假设时检验停止,其次应设置异常点个数到达某个限制时停止。

假设:

H 0 : 数 据 集 中 没 有 异 常 值 H 1 : 数 据 集 中 只 有 一 个 异 常 值 H_0: 数据集中没有异常值\\ H_1: 数据集中只有一个异常值 H0:H1:

设样本为 ( x 1 , x 2 , x 3 , … , x n ) (x_1,x_2,x_3,…,x_n) (x1x2x3xn),检验步骤如下

(1)假设样本服从正态分布,计算样本均值 X X X及标准差 σ \sigma σ
(2)将 x i x_i xi按大小顺序排列成顺序统计量 x ( i ) x^{(i)} x(i),即: m i n = x ( 1 ) < … < x ( n ) = m a x min=x^{(1)}<…<x^{(n)}=max min=x(1)<<x(n)=max
(3)计算统计量
g ( 1 ) = ( X − x ( 1 ) ) / σ g ( n ) = ( x ( n ) − X ) / σ g^{(1)}=(X-x^{(1)})/σ \\ g^{(n)}=(x^{(n)}-X)/σ g(1)=(Xx(1))/σg(n)=(x(n)X)/σ
(4)根据双边t检验算出如下临界值, t α / ( 2 N ) , N − 2 2 t^2_{α/(2N),N-2} tα/(2N),N22表示具有(N-2)自由度的t分布的临界值和 α / ( 2 N ) α/(2N) α/(2N)显着性水平。当 g ( 1 ) g^{(1)} g(1) g ( n ) g^{(n)} g(n)大于右侧值时,拒绝原假设H0,异常值存在,应剔除。若为单边检验,将α/(2N)替换为α/N。
在这里插入图片描述

1.2 基于回归模型的方法

多用于时间序列模型,未来会单独讲解。

2. 非参数方法 Nonparametric method

2.1 使用直方图检测异常点

直方图是一种频繁使用的非参数统计模型,可以用来检测异常点。该过程包括如下两步:
步骤1:构造直方图。使用输入数据(训练数据)构造一个直方图。该直方图可以是一元的,或者多元的(如果输入数据是多维的)。
尽管非参数方法并不假定任何先验统计模型,但是通常确实要求用户提供参数,以便由数据学习。例如,用户必须指定直方图的类型(等宽的或等深的)和其他参数(直方图中的箱数或每个箱的大小等)。与参数方法不同,这些参数并不指定数据分布的类型。

步骤2:检测异常点。为了确定一个对象是否是异常点,可以对照直方图检查它。在最简单的方法中,如果该对象落入直方图的一个箱中,则该对象被看作正常的,否则被认为是异常点。
对于更复杂的方法,可以使用直方图赋予每个对象一个异常点得分。例如令对象的异常点得分为该对象落入的箱的容积的倒数。
使用直方图作为异常点检测的非参数模型的一个缺点是,很难选择一个合适的箱尺寸。一方面,如果箱尺寸太小,则许多正常对象都会落入空的或稀疏的箱中,因而被误识别为异常点。另一方面,如果箱尺寸太大,则异常点对象可能渗入某些频繁的箱中,因而“假扮”成正常的。

2.2 HBOS

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

2.2.1 HBOS算法流程

  1. 为每个数据维度做出数据直方图。对分类数据统计每个值的频数并计算相对频率。对数值数据根据分布的不同采用以下两种方法:
  • 静态宽度直方图(等宽分箱):标准的直方图构建方法,在值范围内使用k个等宽箱。样本落入每个桶的频率(相对数量)作为密度(箱子高度)的估计。时间复杂度:O(n)
  • 动态宽度直方图(等频分箱):首先对所有值进行排序,然后固定数量的N/k个连续值装进一个箱里,其中N是总实例数,k是箱个数;直方图中的箱面积表示实例数。因为箱的宽度是由箱中第一个值和最后一个值决定的,所有箱的面积都一样,因此每一个箱的高度都是可计算的。这意味着跨度大的箱的高度低,即密度小,只有一种情况例外,超过k个数相等,此时允许在同一个箱里超过N/k值。时间复杂度:O(nlogn)
  1. 对每个维度都计算了一个独立的直方图,其中每个箱子的高度表示密度的估计。然后为了使得最大高度为1(确保了每个特征与异常值得分的权重相等),对直方图进行归一化处理。最后,每一个实例的HBOS值由以下公式计算:
    在这里插入图片描述

2.2.2 HBOS的优缺点

HBOS在全局异常检测问题上表现良好,但不能检测局部异常值。但是HBOS比标准算法快得多,尤其是在大数据集上。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值