机器学习学习笔记(十三)—— 异常检测(Anomaly detection)

异常检测:

为特征x定义一个概率模型P(特征落在正常x范围的概率),如果 P(x)<=\varepsilon 就认为是异常的。

高斯/正太分布(Gaussian/Normal distribution):

Say x\in \mathbb{R}. if x is a distributed gaussian with mean \mu, variance \sigma ^{2}.

x\sim N(\mu, \sigma^{2}), x服从高斯分布.

如下图,\mu决定了轴线位置,\sigma决定钟形曲线的宽度:

机器学习学习笔记(十三)—— 异常检测(Anomaly detection)_第1张图片p(x; \mu, \sigma^{2})=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(x-\mu)^{2}}{2\sigma^{2}})

特性:不管 \mu 和 \sigma 怎么变化,钟形曲线下面的面积始终是1.

\mu=\frac{1}{m}\sum_{i=1}^{m}x^{(i)}   ,    \sigma^{2}=\frac{1}{m}\sum_{i=1}^{m}(x^{(i)}-\mu)^{2}

异常检测算法(Anomaly detection algorithm):

1.Choose features x_{i} that you think might be indicative of anomalous examples.

2.Fit parameters \mu_{1},...,\mu_{n},\sigma_{1}^{2},...,\sigma_{n}^{2}

\mu_{j}=\frac{1}{m}\sum_{i=1}^{m}x_{j}^{(i)}

\sigma_{j}^{2}=\frac{1}{m}\sum_{i=1}^{m}(x_{j}^{(i)}-\mu_{j})^{2}

3.Given new example x, compute p(x):

p(x)=\prod_{j=1}^{n}p(x_{j};\mu_{j},\sigma_{j}^{2})=\prod_{j=1}^{n}\frac{1}{\sqrt{2\pi}\sigma_{j}}exp(-\frac{(x_{j}-\mu{j})^{2}}{2\sigma_{j}^{2}})

Anomaly if p(x) < \varepsilon

如何评测异常检测算法:

1.将数据集按照6:2:2方式拆分成训练集、交叉验证集、测试集,如果有异常数据平分给后两者,训练集是不包含异常数据的。

2.通过训练集创建概率模型P,如上的方法。

3.对于交叉验证集和测试集:

y=\left\{\begin{matrix} 1, p(x)<\varepsilon(anomaly) \\ 0, p(x)\geqslant \varepsilon(normal) \end{matrix}\right.

4.通过计算F1-Score来选择一个好的\varepsilon

让数据看起来更像是高斯分布:

通过hist绘制直方图,开始x可能是这样的:

机器学习学习笔记(十三)—— 异常检测(Anomaly detection)_第2张图片

我们可以通过,下面的公式使得x更像是高斯分布:

x=log(x+c)

x=x^{0.5/0.1...}+c

 

 

 

 

 

 

 

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