乐趣区

关于算法:MindSpore跟着小Mi一起机器学习吧异常检测一

一周未见,甚是惦记,明天小 Mi 带大家学习异样检测(Anomaly detection)!废话不多说,咱们开始吧~

1 定义
异样检测 (Anomaly detection) 这个算法很有意思:它尽管次要用于非监督学习问题,但从某些角度看,它又和一些监督学习问题很相似。

什么是异样检测:

通常飞机的引擎从生产线上流出时须要进行品质管制测试,作为根据会测试引擎的一些特色变量,比方引擎运行时产生的热量,或者引擎的振动等等。

这样一来,咱们就有了一个数据集,从到,如果生产了个引擎的话,能够将这些数据绘制成图表:

因而,异样检测问题能够定义如下:假如有一个新的飞机引擎从生产线上流出,看似有点异样,赋予其特色变量来判断该引擎是否须要进一步的测试。

给定数据集,倘若数据集是失常的,咱们心愿晓得新的数据是不是异样的,即这个测试数据不属于该组数据的几率是多少,因而构建的模型须要依据该测试数据来通知咱们其属于这组数据集的可能性。

上图中,在蓝色圈内的数据属于该组数据的可能性较高,而越是偏僻的数据,其属于该组数据的可能性就越低。

这种办法称为密度估计,表白如下:

异样检测常常用来辨认坑骗。例如在线采集用户的数据,一个特征向量中可能会蕴含如:用户多久登录一次,拜访过的页面,在论坛公布的帖子数量,甚至是打字速度等。尝试依据这些特色构建一个模型,能够用这个模型来辨认那些不合乎该模式的用户。

模型为咱们其属于一组数据的可能性,通过检测非正常用户。

2 正态分布
正态分布其实也能够称之为高斯分布,大家是不是很相熟。小 Mi 先带大家回顾下高斯分布的基本知识。

通常认为:变量合乎高斯分布,则其概率密度函数为:

利用已有的数据来预测总体中的和:

高斯分布样例:

注:机器学习中对于方差咱们通常只除以而非统计学中的。其实抉择还是两者之间区别很小,简直能够忽略不计,在机器学习畛域大部分人更习惯应用。

3 算法
那么这个时候大家是不是会感觉疑难了,异样检测和正态分布又有什么关系呢?

异样检测算法:

对于给定的数据集,咱们要针对每一个特色计算和的估计值。

一旦咱们取得了平均值和方差的估计值,给定新的一个训练实例,依据模型计算:

过后,为异样。

下图是一个由两个特色的训练集,以及特色的散布状况:

上面的三维图表示意的是密度估计函数,轴为依据两个特色预计的值:

抉择一个,将作为断定边界,过后预测数据为失常数据,否则为异样。

4 异样检测零碎
异样检测算法是一种非监督学习算法,意味着无奈依据后果变量的值来通知咱们数据是否真的是异样的。因而,咱们须要另一种办法来帮忙测验算法是否无效,开发一个异样检测零碎,须要从带标记(异样或失常)的数据着手,抉择一部分失常数据用于构建训练集,而后用剩下的失常数据和异样数据混合的数据形成穿插测验集和测试集。

例如:有 10000 台失常引擎的数据,有 20 台异样引擎的数据,调配如下:

6000 台失常引擎的数据作为训练集

2000 台失常引擎和 10 台异样引擎的数据作为穿插测验集

2000 台失常引擎和 10 台异样引擎的数据作为测试集

具体的评估办法如下:

1. 依据测试集数据,能够预计特色的平均值和方差并构建函数

2. 对穿插测验集,尝试应用不同的值作为阀值,并预测数据是否异样,依据 F1 值或者查准率与查全率的比例来抉择

3. 选出后,针对测试集进行预测,计算异样测验零碎的 F1 值,或者查准率与查全率之比

5 比照
因为构建的异样检测零碎也应用的是带标记的数据,与监督学习有些类似,上面的比照有助于抉择是采纳监督学习还是异样检测:

当然,如果遇到正样本的数量很少,甚至为 0 的状况,通常采纳的算法就是异样检测算法啦,因为这时候呈现了太多没见过的不同的异样类型。

6 特色的抉择
对于异样检测算法,特色的抉择是很重要的:

异样检测中的数据集假如特色合乎高斯分布,(如果数据的散布不是高斯分布,异样检测算法也能够进行工作,然而通常是将数据转换成高斯分布),例如应用对数函数:,其中为非负常数;或者,为 0 - 1 之间的一个分数,等办法。(python 中,通常用 np.log1p()函数,就是,反向函数就是 np.expm1())。

一个常见的问题是一些异样的数据可能也会有较高的值,从而会被算法认为是失常的。这种状况下误差剖析可能帮忙咱们,咱们能够剖析那些被算法谬误预测为失常的数据,察看是否找出一些问题。可能还会从问题中发现须要减少一些新的特色,减少这些新特色后取得的新算法可能帮忙咱们更好地进行异样检测。

异样检测误差剖析:

通常能够将一些相干的特色进行组合来取得一些新的更好的特色(异样数据的特征值异样地大或小),例如,在检测数据中心的计算机情况时,能够用 CPU 负载与网络通信量的比例作为一个新的特色,如果该值异样地大,便有可能意味着该服务器是陷入了一些问题中。

在抉择特色的时候,其实有时候咱们能够对特色进行一些小小的转换,让数据更像正态分布,而后再把数据输出异样检测算法;而误差分析方法也能够捕获各种异常情况。

明天小 Mi 先带大家简略理解了异样检测的定义呀,算法呀,如何抉择特色呀等等,下期小 Mi 还要介绍更加简单的多元高斯分布以及如何应用多元高斯分布进行异样检测呢!好啦,明天的介绍就完结啦~ 咱们下期再见呦!(挥手十分钟)~~

退出移动版