文章目录
1 异常检测
1.1 高斯分布
假设每个特征都是服从高斯分布的:
X
(
j
)
∼
N
(
μ
j
,
σ
j
2
)
,
j
=
1
,
⋯
,
n
X^{(j)}\sim N(\mu_{j},\sigma_{j}^{2}),\ j=1,\cdots,n
X(j)∼N(μj,σj2), j=1,⋯,n
假设每个特征之间是相互独立的,
p
(
x
;
μ
,
σ
2
)
=
∏
j
=
1
n
p
(
x
(
j
)
;
μ
j
,
σ
j
2
)
p(x;\mu,\sigma^2) = \prod_{j=1}^{n}p(x^{(j)};\mu_{j},\sigma_{j}^{2})
p(x;μ,σ2)=j=1∏np(x(j);μj,σj2)
决策函数:
y
=
{
1
,
p
(
x
)
<
ϵ
(
异
常
)
0
,
p
(
x
)
≥
ϵ
(
正
常
)
y=\begin{cases}1, & p(x)<\epsilon\ (异常)\\ 0, & p(x)\geq \epsilon\ (正常) \end{cases}
y={1,0,p(x)<ϵ (异常)p(x)≥ϵ (正常)
1.2 异常检测算法
给定10000个正常数据,20个异常数据。
Step1 用正常数据 (6000正常数据) 估计参数
μ
j
,
σ
j
2
,
j
=
1
,
⋯
,
n
\mu_{j},\sigma_{j}^{2},j=1,\cdots,n
μj,σj2,j=1,⋯,n (极大似然估计)
μ
^
j
=
x
‾
(
j
)
=
1
m
∑
i
=
1
m
x
i
(
j
)
σ
^
j
2
=
1
m
∑
i
=
1
m
(
x
i
(
j
)
−
x
‾
(
j
)
)
↓
数
理
统
计
中
用
的
是
m
−
1
,
但
是
在
大
样
本
下
两
者
差
别
不
大
\begin{aligned} \hat\mu_{j} &= \overline x^{(j)} = \frac{1}{m}\sum_{i=1}^{m}x_{i}^{(j)}\\ \hat\sigma_{j}^{2} &= \frac{1}{\boxed{m}}\sum_{i=1}^{m}(x_{i}^{(j)}-\overline x^{(j)}) \\ &\quad\ \ \ \downarrow \\ &数理统计中用的是m-1, 但是在大样本下两者差别不大 \end{aligned}
μ^jσ^j2=x(j)=m1i=1∑mxi(j)=m1i=1∑m(xi(j)−x(j)) ↓数理统计中用的是m−1,但是在大样本下两者差别不大
Step2 用验证集 (2000个正常数据,10个异常数据) 预测
y
=
{
1
,
p
(
x
)
<
ϵ
(
异
常
)
0
,
p
(
x
)
≥
ϵ
(
正
常
)
y=\begin{cases}1, & p(x)<\epsilon\ (异常)\\ 0, & p(x)\geq \epsilon\ (正常) \end{cases}
y={1,0,p(x)<ϵ (异常)p(x)≥ϵ (正常)
其中,
p
(
x
;
μ
^
,
σ
^
2
)
=
∏
j
=
1
n
p
(
x
(
j
)
;
μ
^
j
,
σ
^
j
2
)
p(x;\hat\mu,\hat\sigma^2) = \prod\limits_{j=1}^{n}p(x^{(j)};\hat\mu_{j},\hat\sigma_{j}^{2})
p(x;μ^,σ^2)=j=1∏np(x(j);μ^j,σ^j2)
检验指标:精准率/召回率/f1,根据不同阈值参数
ϵ
\epsilon
ϵ 下模型的检验指标选择最优的
ϵ
\epsilon
ϵ.
Step3 测试集 (2000个正常数据,10个异常数据) ,预测。
1.3 异常检测 v.s. 监督学习
什么时候使用 | 为什么用 | |
---|---|---|
异常检测 | 只有少数正例 (y=1),大部分是负例 (y=0),如飞机故障检测 | 造成异常 (y=1)的原因很多,每种原因对应的样本点很少,且未来可能出现新的异常原因 |
监督学习 | 正例 (y=1) 和 负例 (y=0) 的样本点差不多多,如垃圾邮件判断 | 有足够多的样本点来观察正例的特征,负例的特征,未来可能出现的情况都囊括 (能找到相似的) 在这些样本点中 |
1.4 特征选择
1.4.1 特征变换
特征本身可能不服从高斯分布,可以尝试特征变换,如 log X 、 X 2 \log X、X^2 logX、X2 等。
1.4.2 特征的选择
分别在有该特征和没有该特征的情况下训练模型,通过交叉验证进行选择更优的。
2 异常检测 (特征之间不独立的情况)
2.1 多元高斯分布
如果特征之间不独立,那么可能出现这样的情况:
此时,抛弃独立假设,设
X
∼
N
(
μ
,
Σ
)
X \sim N(\mu, \Sigma)
X∼N(μ,Σ)
其中,
Σ
\Sigma
Σ 是协方差矩阵,密度函数为
p
(
x
;
μ
,
Σ
)
=
1
(
2
π
)
2
n
∣
Σ
∣
1
2
exp
{
−
1
2
(
x
−
μ
)
T
Σ
−
1
(
x
−
μ
)
}
p(x;\mu,\Sigma) = \frac{1}{(2\pi)^{\frac{2}{n}}|\Sigma|^{\frac{1}{2}}}\exp\{-\frac{1}{2}(x-\mu)^{T}\Sigma^{-1}(x-\mu)\}
p(x;μ,Σ)=(2π)n2∣Σ∣211exp{−21(x−μ)TΣ−1(x−μ)}
2.2 异常检测算法
给定10000个正常数据,20个异常数据。
Step1 用训练集数据 (6000正常数据) 估计参数
μ
j
,
σ
j
2
,
j
=
1
,
⋯
,
n
\mu_{j},\sigma_{j}^{2},j=1,\cdots,n
μj,σj2,j=1,⋯,n (极大似然估计)
μ
^
=
x
‾
=
1
m
∑
i
=
1
m
x
i
Σ
^
=
1
m
∑
i
=
1
m
(
x
i
−
x
‾
)
T
(
x
i
−
x
‾
)
\begin{aligned} \hat\mu &= \overline x = \frac{1}{m}\sum_{i=1}^{m}x_{i}\\ \hat\Sigma &= \frac{1}{m}\sum_{i=1}^{m}(x_{i}-\overline x)^{T}(x_{i}-\overline x) \\ \end{aligned}
μ^Σ^=x=m1i=1∑mxi=m1i=1∑m(xi−x)T(xi−x)
Step2 在不同阈值参数
ϵ
\epsilon
ϵ 下,用验证集数据 (2000个正常数据,10个异常数据) 预测
y
=
{
1
,
p
(
x
)
<
ϵ
(
异
常
)
0
,
p
(
x
)
≥
ϵ
(
正
常
)
y=\begin{cases}1, & p(x)<\epsilon\ (异常)\\ 0, & p(x)\geq \epsilon\ (正常) \end{cases}
y={1,0,p(x)<ϵ (异常)p(x)≥ϵ (正常)
其中,
p
(
x
;
μ
^
,
Σ
^
)
=
1
(
2
π
)
2
n
∣
Σ
∣
1
2
exp
{
−
1
2
(
x
−
μ
^
)
T
Σ
^
−
1
(
x
−
μ
^
)
}
p(x;\hat\mu,\hat\Sigma) = \frac{1}{(2\pi)^{\frac{2}{n}}|\Sigma|^{\frac{1}{2}}}\exp\{-\frac{1}{2}(x-\hat\mu)^{T}\hat\Sigma^{-1}(x-\hat\mu)\}
p(x;μ^,Σ^)=(2π)n2∣Σ∣211exp{−21(x−μ^)TΣ^−1(x−μ^)}
检验指标:精准率/召回率/f1,根据不同阈值参数 ϵ \epsilon ϵ 下模型的检验指标选择最优的 ϵ \epsilon ϵ.
Step3 对测试集数据 (2000个正常数据,10个异常数据) 进行预测。
2.3 原始高斯 v.s. 多元高斯
原始高斯 | 多元高斯 |
---|---|
计算成本小 | 计算成本大 ( 要计算 Σ − 1 \Sigma^{-1} Σ−1, 和特征数n有关) |
即使m比较小也没问题 | 要求 m > n m>n m>n (一般要求 m ≥ 10 n m\geq10n m≥10n),否则 Σ \Sigma Σ 不可逆 |
n比较大的情况下使用 | m比较大,n比较小的情况下使用 |