基于统计学的异常检测
1. 概述
统计学方法对于数据的正常行做出假定,其假定正常的数据对象由一个统计模型生成,而不遵守该模型的数据是异常点。异常检测的一般思想是:对于已有的数据拟合一个生成模型,然后识别该模型低概率区域中的对象,将其视为异常点。统计模型的学习主要分为两种:
- 参数方法:假定正常的数据是以 θ \theta θ为参数的参数模型产生的,该参数的分布为 f ( θ ) f(\theta) f(θ),该值越小,表明 x x x为异常点的可能性越小
- 非参数方法:非参数方法试图从输入数据确定模型,通常假定参数的个数和性质是灵活的,不预先确定(非参数方法并不是说模型是完全没有参数的)
2. 参数方法
(1) 基于正态分布的一元异常点检测:通常采用3
σ
\sigma
σ原则或者箱线图
(2) 多元异常点检测:设计两个或者多个属性或者变量的数据称为多元数据
一般而言各个属性之间不是相互独立的,因此采用多元高斯分布:
(3) 混合参数模型
在许多情况下假定数据是由正态分布模型生成的,而当实际数据非常复杂时,这种假定过于简单,因此可以假定数据是由混合分布生成的。
4. 非参数方法
在异常检测的非参数方法中,正常数据的模型从输入数据进行学习,而非假定一个先验,非参数方法通常对数据做较少的假定,因此在很多场景下可以使用,如采用直方图进行异常检测:
(1) 构造直方图:使用输入数据构造一元或者多元直方图
(2) 检测异常点:(a)若一个对象落入直方图的某些箱中,则认为数据是正常的,否则认为是异常的(b) 更复杂的方法是采用直方图为每个对象赋予一个异常点得分,如令对象的异常点得分为该对象落入的箱的容积的倒数
采用直方图的方法是一种非参数方法(不需要对数据的分布进行假定),但是缺点在于需要指定直方图的相关参数(如箱子是等宽还是等深的,直方图中每个箱子的大小等),如果箱子太小,则许多正常对象会被误认为异常点,而箱子太大时许多异常点会被认为是正常的
5. 基于角度的方法
基于角度的方法主要是假定边界上的数据可能将数据点包围在一个较小的角度内,而内部数据点可能以不同的角度对其进行包围。如果数据点与其余点离得较远,则潜在角度可能较小,因此具有较小角幅度得数据点是异常点,而具有较大角度谱的数据点不是异常点。考虑三个点
X
X
X、
Y
Y
Y、
Z
Z
Z,则有:
W
C
o
s
(
X
Y
→
,
X
Z
→
)
=
<
X
Y
,
X
Z
>
∣
∣
X
Y
∣
∣
∣
∣
X
Z
∣
∣
WCos(\overrightarrow{XY},\overrightarrow{XZ})=\frac{<XY,XZ>}{||XY||||XZ||}
WCos(XY,XZ)=∣∣XY∣∣∣∣XZ∣∣<XY,XZ>
这是一个加权余弦,因为分母中包含
L
2
L_{2}
L2范数,其通过距离的逆加权进一步缩小了异常点的加权角,而这也对角谱产生了影响,然后,通过改变数据点
Y
Y
Y和
Z
Z
Z,保持
X
X
X的值不变而计算所有角度的方法,相应的,数据点
X
X
X的基于角度的异常分数
(
A
B
O
F
)
∈
D
(ABOF)\in{D}
(ABOF)∈D为:
A
B
O
F
(
X
)
=
V
a
r
Y
,
Z
∈
D
W
C
o
s
(
X
Y
→
,
X
Z
→
)
ABOF(X)=Var_{Y,Z\in{D}}WCos(\overrightarrow{XY},\overrightarrow{XZ})
ABOF(X)=VarY,Z∈DWCos(XY,XZ)
6. HBOS
HBOS(Histogram-based Outlier Score)算法
是一种单变量方法的组合,其无法对特征之间的依赖关系进行建模,但是计算速度快,对大数据集比较友好。其基本假设是数据集的每个维度之间相互独立,然后对每个维度进行区间(bin)划分,区间的密度越高,异常评分越低。
- HBOS算法流程:
(1) 为每个数据点做出数据直方图,对分类数据统计每个值的频数并计算相对频率,对数值数据根据分布的不同采用以下两种方法:
(a) 静态宽度直方图:标准的直方图构建方法,在值范围内使用K个等宽值。当样本落入每个桶的频率(相对数量)作为密度(箱子高度)的估计,其时间复杂度为 O ( n ) O(n) O(n)
(b) 首先对所有的值进行排序,然后固定数量的 N k \frac{N}{k} kN个连续值装入一个箱内,其中N是总实例数,k是箱个数;直方图中的箱面积表示实例数,因为箱的宽度是由箱中第一个值和最后一个值决定的,所有箱的面积都是可计算的。这意味着跨度大的箱的高度低,即密度小,只有一种情况例外,超过k个数相等,此时允许在同一个箱里超过 N k \frac{N}{k} kN值。时间复杂度: O ( n × l o g ( n ) ) O(n\times log(n)) O(n×log(n))
(2)对所有维度都计算了一个独立的直方图,其中每个箱子的高度表示密度的估计,为了使得最大高度为1(确保每个特征与异常值得分的权重相等),对直方图进行归一化计算,最后,每一个实例的HBOS值由以下公式得到:
总结
1.异常检测的统计学方法由数据学习模型,以区别正常的数据对象和异常点。使用统计学方法的一个优点是,异常检测可以是统计上无可非议的。当然,仅当对数据所做的统计假定满足实际约束时才为真。
2.HBOS在全局异常检测问题上表现良好,但不能检测局部异常值。但是HBOS比标准算法快得多,尤其是在大数据集上。