ML:Anomaly Detection
1. Introduction
1.1 Motivation
异常检测的应用场景:
- Fraud detection
异常交易行为检测,反欺诈 - Manufacturing
异常工业零件检测 - Monitoring computers in a data center
数据中心异常计算机检测
\quad
1.2 Mathematics
假设
x
(
i
)
(
i
=
1
,
2
,
.
.
.
,
m
)
x^{(i)} \ (i=1,2,...,m)
x(i) (i=1,2,...,m)为总体X中的样本,总体X服从正态分布,
X
X
X~
N
(
μ
,
σ
2
)
N(\mu, \sigma^2)
N(μ,σ2)
总体均值
μ
\mu
μ、总体方差
σ
2
\sigma^2
σ2的估计量分别为:
μ
=
1
m
∑
i
=
1
m
x
(
i
)
\mu=\frac{1}{m}\sum_{i=1}^m x^{(i)}
μ=m1i=1∑mx(i)
σ
2
=
1
m
∑
i
=
1
m
(
x
(
i
)
−
μ
)
2
\sigma^2=\frac{1}{m}\sum_{i=1}^m (x^{(i)}-\mu)^2
σ2=m1i=1∑m(x(i)−μ)2(正确的总体方差的无偏估计量应除以m-1,简单起见,机器学习中不做此区分)
判断
x
(
i
)
x^{(i)}
x(i)是否为异常值的方法如下:
1、给定阈值
ϵ
\epsilon
ϵ
2、将
x
(
i
)
x^{(i)}
x(i)代入正态分布的概率密度函数
p
(
x
;
μ
,
σ
2
)
=
1
σ
2
π
e
(
−
(
x
−
μ
)
2
2
σ
2
)
p(x;\mu,\sigma^2)=\frac{1}{\sigma\sqrt{2\pi}}e^{(-\frac{(x-\mu)^2}{2\sigma^2})}
p(x;μ,σ2)=σ2π1e(−2σ2(x−μ)2)
3、若
p
(
x
(
i
)
;
μ
,
σ
2
)
<
ϵ
p(x^{(i)};\mu,\sigma^2)<\epsilon
p(x(i);μ,σ2)<ϵ,则
x
(
i
)
x^{(i)}
x(i)为异常值
\quad
1.3 Algorithm
Training set{ x ( 1 ) x^{(1)} x(1), x ( 2 ) x^{(2)} x(2),…, x ( m ) x^{(m)} x(m)} (where x ( i ) ∈ R n x^{(i)}∈\R^n x(i)∈Rn)
假设各特征变量互相独立且都服从正态分布,则n个变量的联合概率密度函数为
p
(
x
;
μ
,
σ
2
)
=
∏
j
=
1
n
p
(
x
j
;
μ
j
,
σ
j
2
)
=
∏
j
=
1
n
1
σ
j
2
π
e
x
p
−
(
(
x
−
μ
j
)
2
2
σ
j
2
)
p(x;\mu,\sigma^2)= \prod_{j=1}^n p(x_j;\mu_j,\sigma_j^2)=\prod_{j=1}^n \frac{1}{\sigma_j\sqrt{2\pi}}exp^{- (\frac{(x-\mu_j)^2}{2\sigma_j^2})}
p(x;μ,σ2)=∏j=1np(xj;μj,σj2)=∏j=1nσj2π1exp−(2σj2(x−μj)2)
Step 1. 选择可用于检测异常的特征
e.g. 在异常用户检测中,可选用的特征包括登录频率、访问次数、交易次数、发帖次数、打字速度等
Step 2. 参数估计
μ
j
=
1
m
∑
i
=
1
m
x
j
(
i
)
\mu_j=\frac{1}{m}\sum_{i=1}^m x_j^{(i)}
μj=m1i=1∑mxj(i)
σ
j
2
=
1
m
∑
i
=
1
m
(
x
j
(
i
)
−
μ
j
)
2
\sigma_j^2=\frac{1}{m}\sum_{i=1}^m (x_j^{(i)}-\mu_j)^2
σj2=m1i=1∑m(xj(i)−μj)2
Step 3. 给定新样本x,计算p(x),并与阈值
ϵ
\epsilon
ϵ比较
如果
p
(
x
)
<
ϵ
p(x)<\epsilon
p(x)<ϵ,则x为异常样本
\quad
2. Building an Anomaly Detection System
如何评估一个异常检测系统?
2.1 Developing and evaluating an anomaly detection system
-real number evaluation有助于做出决策
用一个具体的数字评估算法
例:
10000 个正常引擎
20 个异常引擎
按照6:2:2的比例划分
Training set:6000个正常引擎
CV set:2000个正常引擎和10个异常引擎
Test set:2000个正常引擎和10个异常引擎
评估步骤:
Step 1:用训练集训练模型
Step 2:对CV和Test set,
p
(
x
)
<
ϵ
p(x)<\epsilon
p(x)<ϵ时预测
y
=
1
y=1
y=1,反之
y
=
0
y=0
y=0
Step 3:用F1 Score评估模型效果
F1的计算参见《偏斜数据集的处理》:https://blog.csdn.net/weixin_42395916/article/details/82665569
CV集还可用于
ϵ
\epsilon
ϵ的选择:多次尝试,取使F1 Score最大的
ϵ
\epsilon
ϵ
\quad
2.2 Choosing what features to use
特征的选择会显著影响异常检测算法的效率
理想的特征:
- 有代表性
在异常情况下值会很大或很小 - 正态分布
非正态分布的特征,处理后使其变成渐进的正态分布,如log(x)
例:特征的构建
在数据中心异常计算机检测中,可使用
C
P
U
l
o
a
d
n
e
t
w
o
r
k
t
r
a
f
f
i
c
\frac{CPU\ load}{network\ traffic}
network trafficCPU load作为一个特征
\quad
3. Multivariate Gaussian/Normal Distribution
异常检测的两种算法:
-
每个特征分开建模(即假设每个特征相互独立)
∏ j = 1 n p ( x j ; μ j , σ j 2 ) = ∏ j = 1 n 1 σ j 2 π e x p − ( ( x − μ j ) 2 2 σ j 2 ) \prod_{j=1}^n p(x_j;\mu_j,\sigma_j^2)=\prod_{j=1}^n \frac{1}{\sigma_j\sqrt{2\pi}}exp^{- (\frac{(x-\mu_j)^2}{2\sigma_j^2})} ∏j=1np(xj;μj,σj2)=∏j=1nσj2π1exp−(2σj2(x−μj)2) -
整体分布建模(考虑了特征间的相关性)
p ( x ; μ , ∑ ) = 1 ( 2 π ) n 2 ∣ ∑ ∣ 1 2 e x p ( − 1 2 ( x − μ ) T ∑ − 1 ( x − μ ) ) p(x;\mu,\sum)=\frac{1}{(2\pi)^\frac{n}{2}|\sum|^{\frac{1}{2}}}exp{(-\frac{1}{2}(x-\mu)^T\sum^{-1}(x-\mu))} p(x;μ,∑)=(2π)2n∣∑∣211exp(−21(x−μ)T∑−1(x−μ))
联合分布算法的缺点:
1、计算成本更高
2、必须满足
m
>
n
m>n
m>n,否则协方差矩阵
∑
\sum
∑不可逆