美文网首页互联网科技每天写1000字程序员
机器学习笔记036 | 异常检测的注意点

机器学习笔记036 | 异常检测的注意点

作者: 止一量化养家 | 来源:发表于2017-10-19 08:06 被阅读228次

1 异常检测和监督算法的区别

在上一篇笔记中,我们在说明异常检测的时候提到,训练集全部都是正常的样本,而验证集和测试集却包含了正常样本和异常样本,也就是说它们是有标记的。

有标记不是监督学习算法的范畴么?

很多人可能会有这样的疑惑。

其实对于异常检测和监督学习之间,还是存在一定的区别的。

正如我们前面所说,异常检测的样本大部分的情况是倾斜类,也就是说阴性样本 (y = 0)非常多,阳性样本(y = 1)非常少。

所以两者的关键区别就在于:

学习算法对于样本数量的要求非常高,监督不可能从一小撮阳性样本学习到太多的东西。

而对于异常检测来说,不需要阳性样本也能学习到预测模型,那一小部分的阳性样本,只要能够评算法效果就足够了。

还是以之前所说的飞机引擎为例,大部分情况下都是正常的,而正常的样本数据也大致趋同,小部分情况下是异常的,而异常的故障可能多种多样。

对于那些我们需要预测的数据来说,还可能存在新类型的故障。

如果这个时候使用监督学习来预测,效果肯定不好,甚至还需要常常修改预测模型。

但是异常检测却能很好地解决这样的问题。

2 异常检测的使用条件

在异常检测中,我们使用高斯分布来计算各项数据的概率,那么首先数据得服从高斯分布

例如我们把数据打印成柱状图,得到这样的图形:

这就是满足高斯分布的数据。

而如果数据是这样的图形:

显然是不是直接使用的,我们需要将其转换成符合高斯分布的数据:

可以通过以下方式进行转换:

其中 C 是常数。

3 特征转换

使用异常检测算法,对于正常样本,我们希望得到的结果是 p(x) ≥ ε ,对于异常样本我们希望得到的结果是 p(x) < ε 。

有时候可能存在一些异常样本数据混在正常样本中间,例如有个数据计算得到的 p(x) ≥ ε ,判断为一个正常样本,但实际上却是一个异常样本。

例如下图这样,在一堆正常样本中混入了一个异常样本:

我们没有办法将它区分开来,但是如果增加一个维度 x2,区分就变得可能:

我们举一个例子,假如我们需要监控计算机的运行情况,我们有这样的一些数据:

x1:占用内存
x2:磁盘每秒访问次数
x3:CPU负载
x4:网络流量

一般来说网络流量 x4 和 CPU负载 x3 是存在正相关关系的,例如访问的人数多了,CPU的负载就高了。

CPU负载升高了,而网络流量却没有太大的变化,那么很可能就是出现了问题,例如计算机在执行任务的时候进入了死循环。

但是这样的情况下,无论是CPU负载,还是网络流量,单独来看可能都在正常的范围之内,所以使用原有的特征我们不能进行有效的区分。

这时候我们就需要根据实际的情况来增加新的特征 x5

例如:

或者:

这时候如果网络流量不变,而CPU负载增大,那么特征 x5 就会和之前有明显的区别。

文章转载自公众号:止一之路

相关文章

网友评论

    本文标题:机器学习笔记036 | 异常检测的注意点

    本文链接:https://www.haomeiwen.com/subject/uxfcuxtx.html