异常检测学习笔记

Coursera平台 Andrew Ng《Machine Learning》课程Anomaly Detection一章(第9周)学习笔记。

已知训练集$(x^{(1)},x{(2)},\dots,x^{(m)})$,给出测试数据$x_{test}$。建立模型$p(x)$,如果$p(x_{test})\lt\epsilon$,则认为$x_{test}$异常,否则认为其正常。

高斯分布

设$x\in\mathbb{R}$服从高斯分布,其均值为$\mu$,方差为$\sigma$,则


$$
p(x;\mu,\sigma^2)=\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(x-\mu)^2}{2\sigma^2})
$$

参数估计:

  • Dataset: $(x^{(1)},\dots,x^{(m)}),x^{(i)}\in\mathbb{R}$
  • $\mu=\frac{1}{m}\sum\limits_{i=1}\limits^{m}x^{(i)}$
  • $\sigma^2=\frac{1}{m}\sum\limits_{i=1}\limits^{m}(x^{(i)}-\mu)^2$

异常检测算法

给出训练集$(x^{(1)},\dots,x^{(m)}),x^{(i)}\in\mathbb{R}^n$,若$x_i$服从高斯分布,其均值为$\mu_i$,方差为$\sigma_i^2$,则可建立模型:


$$
p(x)=p(x_1;\mu_1,\sigma_1^2)\times\dots\times p(x_n;\mu_n,\sigma_n^2)=\prod\limits_{j=1}\limits^np(x_j;\mu_j,\sigma_j^2)
$$

计算步骤如下:

  • 选择可能异常的$x$;
  • 计算$\mu_1,\dots,\mu_n,\sigma_1^2,\dots,\sigma_n^2$
  • 计算$p(x)$。若$p(x)\lt\epsilon $,则认为$x$异常。

Develop and Evaluation an Anomaly Detection Algorithm

使用带有标签的数据作为交叉验证集和测试集的数据。算法估计过程如下:

  • 对训练集数据$(x^{(1)},\dots,x^{(m)})$,获取模型$p(x)$。
  • 在交叉验证集数据上,使用$p(x)$预测$y$:

$$
y=
\begin{cases}
1&,if & p(x) \lt \epsilon \
0&,if & p(x) \ge \epsilon
\end{cases}
$$
  • 计算: True positive, false positive, false negative, true negative。
  • 计算:Recall, Precision。
  • 计算: $F1_{score}$。

可使用CV集,选择使$F1_{score}$最小的$\epsilon$值。

多元高斯分布

数据$x\in\mathbb{R}^n$,参数$\mu\in\mathbb{R}^n$,$\Sigma\in\mathbb{R}^{n\times n}$。


$$
p(x;\mu,\Sigma)=
\frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}}
\exp\left(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)\right)
$$

使用多元高斯分布的异常检测

计算步骤:

  1. $\mu=\frac{1}{m}\sum\limits_{i=1}\limits^{m}x^{(i)}$,$\Sigma=\frac{1}{m}\sum\limits_{i=1}\limits^{m}(x^{(i)}-\mu)(x^{(i)}-\mu)^T$

  2. 对于测试数据$x$,计算:


$$
p(x;\mu,\Sigma)=
\frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}}
\exp\left(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)\right)
$$

如果$p(x)\lt\epsilon$,则记$x$为异常。

多元高斯分布和前述高斯分布的关系

前述模型:


$$
p(x)=p(x_1;\mu_1,\sigma_1^2)\times\dots\times p(x_n;\mu_n,\sigma_n^2)
$$

相当于多元高斯分布的一个特例,此时多元高斯分布的参数


$$
\Sigma=\left[
\begin{matrix}
\sigma_1^2 & & &O \
&\sigma_2^2 & & \
& & \ddots \
O & & & \sigma_n^2
\end{matrix}
\right]
$$

计算代价较大,且必须有$m\gt n$。