机器学习——异常值检测

机器学习——异常检测


在生产生活中,因为设备的偏差或者人为操做失当,产品不免会出现错误。而后检查错误对人来讲又是一个十分琐碎的事情。利用机器学习进行异常值检测可让人类摆脱检错的烦恼。算法

检测算法

  • 1.选定容易出错的\(n\)个特征\(\{x_1^{(i)},x_2^{(i)},\ldots,x_n^{(i)}\}\)做为变量。
  • 2.计算m个样本的平均值和方差。
    \[{\mu_j} = {1 \over m}\sum\limits_{i = 1}^m {x_j^{(i)}}\]

\[ {\sigma ^2} = {1 \over m}\sum\limits_{i = 1}^m {(x_j^{(i)}} - {\mu _j}{)^2} \]机器学习

  • 3.给定监测点\(x\).计算\(p(x)\)
    \[p(x) = \prod \limits_{j = 1}^n {p({x_j};{\mu_j},\sigma_j^2)}\]函数

  • 4.若是\(p(x)< \epsilon\),则为异常值;反之,不是。学习

开发和评价一个异常检测系统

异常检测算法是一个非监督学习算法,意味着咱们没法经过结果变量判断咱们的数据是否异常。因此咱们须要另外一种方法检测算法是否有效。当咱们开发一个系统时,咱们从有标签(知道是否异常)的数据入手,从中找出一部分正常数据做为训练集,剩余的正常数据和异常数据做为交叉检验集和测试集。测试

具体评价方法以下:spa

  • 根据测试集数据,估计出特征的平均值和方差,构建\(p(x)\)函数
  • 对于交叉检验集,尝试使用不一样的\(\epsilon\)最为阈值,并预测数据是否异常,根据F1值或者查准率与查全率的比例来选择\(\epsilon\)
  • 选出\(\epsilon\)后,针对测试集进行预测,计算异常检验系统的F1值或者查准率与查全率之比

异常检测与监督学习对比

异常检测 监督学习
大量的正常值(y=0)和少许的异常值(y=1) 大量的正向类(y=0)和少许的负向类(y=1)
异常数据太少,只能根据少许数据进行训练 有足够多的正向和负向数据以供训练
举例:1.欺诈行为检测;2.生产废品检测;3.检测机器运行状态 举例:1.邮箱过滤器;2.天气预报;3.肿瘤分类

分布的处理

  • 对于高斯分布的数据,直接运用以上算法就好。
  • 可是对于非高斯分布的数据,虽然也但是使用上面的算法,可是效果不是很好,因此咱们尽可能将非高斯分布转化成(近似)高斯分布,而后再进行处理。
  • 数据总体偏小,能够求\(ln(x)\)或者\(x^a,0<a<1\)
  • 数据总体偏大,能够求\(e^x\)或者\(x^a,a>1\)

偏差分析

在偏差分析中,若是咱们能够发现个人选定的变量是否合适,进而进行相应的改正。如左图所示,异常点\(x\)对应的几率很高,显然这种分布方式不能很好地识别出异常值。因此咱们尝试增长变量或者改变变量的类型来识别异常值。如右图所示,经过增长一个变量,咱们可以更好地识别异常点。因此,偏差分析对于一个问题来讲仍是很重要的。blog

相关文章
相关标签/搜索