异常检测

本文介绍了异常检测的方法,主要围绕高斯分布和多元高斯分布展开。首先,讲解了在特征独立情况下,如何利用高斯分布进行异常检测,包括参数估计、决策函数和特征选择。接着,讨论了特征之间不独立时,采用多元高斯分布进行异常检测的步骤,并对比了原始高斯与多元高斯在异常检测上的差异。整个过程涉及到了数据预处理、模型训练、验证和测试,以及性能评估指标的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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=1np(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=1mxi(j)=m1i=1m(xi(j)x(j))   m1,
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=1np(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 logXX2 等。

1.4.2 特征的选择

分别在有该特征和没有该特征的情况下训练模型,通过交叉验证进行选择更优的。

2 异常检测 (特征之间不独立的情况)

2.1 多元高斯分布

如果特征之间不独立,那么可能出现这样的情况:

在这里插入图片描述

此时,抛弃独立假设,设
X ∼ N ( μ , Σ ) X \sim N(\mu, \Sigma) XN(μ,Σ)
其中, Σ \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=1mxi=m1i=1m(xix)T(xix)

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 m10n),否则 Σ \Sigma Σ 不可逆
n比较大的情况下使用m比较大,n比较小的情况下使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值