[深度之眼机器学习训练营第四期]异常检测

密度估计

如果随机变量 X X X的概率分布函数满足
f ( x ) = 1 2 π σ exp ⁡ ( ( x − μ ) 2 2 σ 2 ) f(x) = \frac{1}{\sqrt{2\pi}\sigma}\exp\left(\frac{(x-\mu)^2}{2\sigma^2}\right) f(x)=2π σ1exp(2σ2(xμ)2)
其中 μ \mu μ是均值, σ 2 \sigma^2 σ2是方差,我们就称 X X X服从高斯分布,记作 X ∼ N ( μ , σ 2 ) X \sim \mathcal{N}(\mu,\sigma^2) XN(μ,σ2)

对于数据集的每个特征,都拟合一个一元高斯分布分布函数,然后再把它们乘起来:

P ( x ) = P ( x 1 ; μ 1 , σ 1 2 ) P ( x 2 ; μ 2 , σ 2 2 ) P ( x 3 ; μ 3 , σ 3 2 ) ⋯ P ( x d ; μ d , σ d 2 ) = ∏ j = 1 d P ( x j ; μ j , σ j 2 ) \begin{aligned} \mathbb{P}(x)&=\mathbb{P}(x_1;\mu_1,\sigma_1^2)\mathbb{P}(x_2;\mu_2,\sigma_2^2)\mathbb{P}(x_3;\mu_3,\sigma_3^2)\cdots\mathbb{P}(x_d;\mu_d,\sigma_d^2)\\ &=\prod_{j=1}^{d}\mathbb{P}(x_j;\mu_j,\sigma_j^2) \end{aligned} P(x)=P(x1;μ1,σ12)P(x2;μ2,σ22)P(x3;μ3,σ32)P(xd;μd,σd2)=j=1dP(xj;μj,σj2)

密度估计的流程

  • 选择一个与异常有关的特征 x d x_d xd
  • 拟合参数 μ 1 , μ 2 , ⋯   , μ d ; σ 1 , σ 2 , ⋯   , σ d \mu_1,\mu_2,\cdots,\mu_d;\sigma_1,\sigma_2,\cdots,\sigma_d μ1,μ2,,μd;σ1,σ2,,σd:

μ j = 1 n ∑ i = 1 n x j ( i ) σ j = 1 n ∑ i = 1 n ( x j ( i ) − μ j ) \begin{aligned} \mu_j &= \frac{1}{n}\sum_{i=1}^n x_j^{(i)}\\ \sigma_j &= \frac{1}{n}\sum_{i=1}^n \left(x_j^{(i)} - \mu_j\right) \end{aligned} μjσj=n1i=1nxj(i)=n1i=1n(xj(i)μj)

  • 对于给定的新样本 x x x, 计算 P ( x ) \mathbb{P}(x) P(x):

P ( x ) = ∏ j = 1 d P ( x j ; μ j , σ j ) = ∏ j = 1 d 1 2 π σ j exp ⁡ ( ( x j − μ j ) 2 2 σ j 2 ) \mathbb{P}(x) = \prod_{j=1}^d\mathbb{P}(x_j;\mu_j,\sigma_j) = \prod_{j=1}^d\frac{1}{\sqrt{2\pi}\sigma_j}\exp{\left(\frac{(x_j-\mu_j)^2}{2\sigma_j^2}\right)} P(x)=j=1dP(xj;μj,σj)=j=1d2π σj1exp(2σj2(xjμj)2)

构建异常检测系统

10000个正常样本:训练6000,验证集2000,测试集2000
20个异常样本:验证集10,测试集10

如何评估?

由于异常检测任务的数据集都比较偏斜,所以用之前介绍的混淆矩阵、精度/召回率和F1-Score来评估算法的效果。

异常检测 vs. 有监督学习

异常检测:

  • 正常样本多,异常样本极少,数据偏斜严重
  • 引起异常的原因可能多种多样,因此对正常样本建模要好于对异常样本建模

有监督学习

  • 正负样本数量都比较大
  • 未来的样本与训练集中的样本相似

特征处理

在运行异常检测算法前,一般都要画出直方图,观察数据的分布。如果某个特征的分布与高斯分布相差甚远,那么就要对特征进行处理(如对数转换),目的是让数据集的分布更接近高斯分布

你可能感兴趣的:(机器学习)