1. 异常检测定义和使用
给定正常的数据集 ?(1), ?(2), . . , ?(?),判断新的数据 ?????是不是异常的,即这个测试数据不属于该组数据的几率如何。所构建的模型应该能根据该测试数据的位置得到其属于一组数据的可能性 ?(?)。
上图中,在蓝色圈内的数据属于该组数据的可能性较高,而越是偏远的数据,其属于该组数据的可能性就越低。
这种方法称为密度估计,表达如下:
i
f
p
(
x
)
=
{
<
ε
,
异常
≥
ε
,
正常
if p(x)= \begin{cases} <\varepsilon , & \text { 异常} \\ ≥\varepsilon, & \text{ 正常} \end{cases}
ifp(x)={<ε,≥ε, 异常 正常
应用:异常检测主要用来识别欺骗,计算机中心运行是否正常,生产的机器零件是否正常,账户是否由本人操作等。
2. 高斯分布
高斯分布,也称为正态分布。
变量 ? 符合高斯分布 ? ∼ ?(?, ?2) 则其概率密度函数为:
p
(
x
,
μ
,
σ
2
)
=
1
2
π
σ
e
x
p
(
−
(
x
−
μ
)
2
2
σ
2
)
p(x,\mu,\sigma^2)=\frac{1}{\sqrt{2\pi}\sigma }exp(-\frac{(x-\mu)^2}{2\sigma^2})
p(x,μ,σ2)=2πσ1exp(−2σ2(x−μ)2)
其中:利用已有的数据来预测总体中的?(数据的平均值)和?2(每个数据与平均值的方差的平均)的计算方法如下:
μ
=
1
m
∑
i
=
1
m
x
(
i
)
σ
2
=
1
m
∑
i
=
1
m
(
x
(
i
)
−
μ
)
2
\mu=\frac{1}{m}\sum_{i=1}^m{x^{(i)}} \quad \quad \quad \quad \sigma^2=\frac{1}{m}\sum_{i=1}^m (x^{(i)}-\mu)^2
μ=m1i=1∑mx(i)σ2=m1i=1∑m(x(i)−μ)2 这里对参数 ? 和参数 ?2 的估计就是二者的极大似然估计。
均值? 决定了高斯分布概率密度函数的对称轴位置。
方差 ?2 衡量了各样本与平均位置的差异,决定了概率密度函数的宽窄。 ?2 越大,各个样本的差异越大(各个样本偏离均值位置很远),即样本取 μ 附近位置的概率越低。
注:机器学习中对于方差我们通常只除以?而非统计学中的(? − 1)。这两个版本的公式在理论特性和数学特性上稍有不同,但是在实际使用中,他们的区别甚小,几乎可以忽略不计。
3. 异常检测算法
(1)采用高斯分布的异常检测算法流程
1)选择一些足够反映异常样本的特征 xj 。
2)对各个特征进行参数估计:
μ
j
=
1
m
∑
i
=
1
m
x
j
(
i
)
σ
j
2
=
1
m
∑
i
=
1
m
(
x
j
(
i
)
−
μ
j
)
2
\mu_j=\frac{1}{m}\sum_{i=1}^m{x_j^{(i)}} \quad \quad \quad \quad \sigma_j^2=\frac{1}{m}\sum_{i=1}^m (x_j^{(i)}-\mu_j)^2
μj=m1i=1∑mxj(i)σj2=m1i=1∑m(xj(i)−μj)23)用交叉检验集,选取阀值?
4)对新的样本 x,计算 p(x) :
p
(
x
)
=
∏
j
=
1
n
1
2
π
σ
j
e
x
p
(
−
(
x
−
μ
j
)
2
2
σ
j
2
)
p(x)=\prod_{j=1}^n \frac{1}{\sqrt{2\pi}\sigma_j }exp(-\frac{(x-\mu_j)^2}{2\sigma_j^2})
p(x)=j=1∏n2πσj1exp(−2σj2(x−μj)2)
5)如果p(x)小于阀值则认为是异常。
(2)数据集的划分
从带标记(异常或正常)的数据着手,选择一部分正常数据用于构建训练集,然后用剩下的正常数据和异常数据混合的数据构成交叉检验集和测试集。
(3)算法评估
由于异常样本是非常少的,所以整个数据集是非常偏斜的,不能单纯的用预测准确率来评估算法优劣,评价手段采用:真阳性、假阳性、真阴性、假阴性,查准率(Precision)与 召回率(Recall)和F1Score
4. 异常检测与监督学习
监督学习 | 异常检测 |
---|---|
数据分布均匀 | 数据非常偏斜,异常样本数目远小于正常样本数目 |
根据样本对特征认识已经非常全面 | 异常的类型不一,很难根据对现有的异常样本的拟合来判断出异常样本的形态 |
应用于:垃圾邮件检测,天气预测,癌症的分类等 | 应用于:故障检测,某数据中心对于机器设备的监控,制造业判断一个零部件是否异常等 |
5. 特征选择
1)数据集需要服从正态分布,如果不是正态分布的需要进行特征变换,使其更符合正态分布。
2)需要构建新的特征,样本特征要尽可能区分正常样本和异常样本。
6. 多变量高斯分布
(1)多元高斯分布模型
p
(
x
;
μ
,
Σ
)
=
1
(
2
π
)
n
2
∣
Σ
∣
1
2
e
x
p
(
−
1
2
(
x
−
μ
)
T
Σ
−
1
(
x
−
μ
)
)
p(x;μ,Σ)=\frac{1}{(2π)^{\frac{n}{2}}|Σ|^\frac{1}{2}} exp(−\frac{1}{2}(x−μ)^TΣ^{−1}(x−μ))
p(x;μ,Σ)=(2π)2n∣Σ∣211exp(−21(x−μ)TΣ−1(x−μ))其中, μ 表示样本均值, Σ 表示样本协方差矩阵。
改变 Σ 主对角线的数值可以进行不同方向的宽度拉伸;
改变 Σ 次对角线的数值可以旋转分布图像;
改变 μ 可以对分布图像进行位移.
μ
=
1
m
∑
i
=
1
m
x
(
i
)
Σ
=
1
m
∑
i
=
1
m
(
x
(
i
)
−
μ
)
(
x
(
i
)
−
μ
)
T
\mu=\frac{1}{m}\sum_{i=1}^m{x^{(i)}} \quad \quad \quad \quad Σ=\frac{1}{m}\sum_{i=1}^m (x^{(i)}-\mu)(x^{(i)}-\mu)^T
μ=m1i=1∑mx(i)Σ=m1i=1∑m(x(i)−μ)(x(i)−μ)T
(2)算法流程
1) 选择一些足够反映异常样本的特征x;
2)对各个样本进行参数估计μ和 Σ;
3)当新的样本 x 到来时,计算 p(x);
4)如果 p(x)<ϵ ,则认为样本 x 是异常样本。
7. 多元高斯模型与一般高斯模型的差异
一般高斯模型 | 多元高斯模型 |
---|---|
p ( x ) = ∏ j = 1 n 1 2 π σ j e x p ( − ( x − μ j ) 2 2 σ j 2 ) p(x)=\prod_{j=1}^n \frac{1}{\sqrt{2\pi}\sigma_j }exp(-\frac{(x-\mu_j)^2}{2\sigma_j^2}) p(x)=j=1∏n2πσj1exp(−2σj2(x−μj)2) | p ( x ; μ , Σ ) = 1 ( 2 π ) n 2 ∣ Σ ∣ 1 2 p(x;μ,Σ)=\frac{1}{(2π)^{\frac{n}{2}}{\mid\ Σ \mid}^{\frac{1}{2}}} p(x;μ,Σ)=(2π)2n∣ Σ∣211 |
需要手动创建一些特征来描述某些特征的相关性 | 利用协方差矩阵 Σ 获得了各个特征相关性 |
计算复杂度低,适用于高维特征 | 计算复杂 |
在样本数目 m 较小时也工作良好 | 需要 Σ 可逆,亦即需要 m>n ,且各个特征不能线性相关 |