1 异常检测
1.1 高斯分布
假设每个特征都是服从高斯分布的:
X(j)∼N(μj,σj2), j=1,⋯,n
假设每个特征之间是相互独立的,
p(x;μ,σ2)=j=1∏np(x(j);μj,σj2)
决策函数:
y={1,0,p(x)<ϵ (异常)p(x)≥ϵ (正常)
1.2 异常检测算法
给定10000个正常数据,20个异常数据。
Step1 用正常数据 (6000正常数据) 估计参数 μj,σj2,j=1,⋯,n (极大似然估计)
μ^jσ^j2=x(j)=m1i=1∑mxi(j)=m1i=1∑m(xi(j)−x(j)) ↓数理统计中用的是m−1,但是在大样本下两者差别不大
Step2 用验证集 (2000个正常数据,10个异常数据) 预测
y={1,0,p(x)<ϵ (异常)p(x)≥ϵ (正常)
其中,
p(x;μ^,σ^2)=j=1∏np(x(j);μ^j,σ^j2)
检验指标:精准率/召回率/f1,根据不同阈值参数 ϵ 下模型的检验指标选择最优的 ϵ.
Step3 测试集 (2000个正常数据,10个异常数据) ,预测。
1.3 异常检测 v.s. 监督学习
|
什么时候使用 |
为什么用 |
异常检测 |
只有少数正例 (y=1),大部分是负例 (y=0),如飞机故障检测 |
造成异常 (y=1)的原因很多,每种原因对应的样本点很少,且未来可能出现新的异常原因 |
监督学习 |
正例 (y=1) 和 负例 (y=0) 的样本点差不多多,如垃圾邮件判断 |
有足够多的样本点来观察正例的特征,负例的特征,未来可能出现的情况都囊括 (能找到相似的) 在这些样本点中 |
1.4 特征选择
1.4.1 特征变换
特征本身可能不服从高斯分布,可以尝试特征变换,如 logX、X2 等。
1.4.2 特征的选择
分别在有该特征和没有该特征的情况下训练模型,通过交叉验证进行选择更优的。
2 异常检测 (特征之间不独立的情况)
2.1 多元高斯分布
如果特征之间不独立,那么可能出现这样的情况:

此时,抛弃独立假设,设
X∼N(μ,Σ)
其中,Σ 是协方差矩阵,密度函数为
p(x;μ,Σ)=(2π)n2∣Σ∣211exp{−21(x−μ)TΣ−1(x−μ)}

2.2 异常检测算法
给定10000个正常数据,20个异常数据。
Step1 用训练集数据 (6000正常数据) 估计参数 μj,σj2,j=1,⋯,n (极大似然估计)
μ^Σ^=x=m1i=1∑mxi=m1i=1∑m(xi−x)T(xi−x)
Step2 在不同阈值参数 ϵ 下,用验证集数据 (2000个正常数据,10个异常数据) 预测
y={1,0,p(x)<ϵ (异常)p(x)≥ϵ (正常)
其中,
p(x;μ^,Σ^)=(2π)n2∣Σ∣211exp{−21(x−μ^)TΣ^−1(x−μ^)}
检验指标:精准率/召回率/f1,根据不同阈值参数 ϵ 下模型的检验指标选择最优的 ϵ.
Step3 对测试集数据 (2000个正常数据,10个异常数据) 进行预测。
2.3 原始高斯 v.s. 多元高斯
原始高斯 |
多元高斯 |
计算成本小 |
计算成本大 ( 要计算Σ−1, 和特征数n有关) |
即使m比较小也没问题 |
要求m>n (一般要求m≥10n),否则 Σ 不可逆 |
n比较大的情况下使用 |
m比较大,n比较小的情况下使用 |