异常检测算法分类总结

异常检测算法分类

  • 一、预测(监督机器学习)
    • 1.1 简介
    • 1.2 适用范围
    • 1.3 注意事项
  • 二、统计度量
    • 2.1 简介
    • 2.2 常用方法
  • 三、无监督机器学习
    • 3.1 常用方法
  • 四、拟合优度检验
    • 4.1 简介
    • 4.2 椭圆包络拟合(协方差估计拟合)
  • 五、基于密度的算法
    • 5.1 简介
    • 5.2 局部离群因子(LOF)

在选择算法之前,重要的是考虑数据源的性质和质量,数据是否收到异常污染将会影响检测方法。如果训练数据不包含异常(或标记了异常以便删除),我们称该任务为新奇检测,否则,我们称该任务为离群点检测
异常检测的算法分类:

  • 预测(监督机器学习)
  • 统计度量
  • 无监督机器学习
  • 拟合优度检测
  • 基于密度的方法

一、预测(监督机器学习)

1.1 简介

利用过去的无异常的干净数据训练模型,并测量当前观察值与预测值的差异。确切的说,该类异常检测的算法应称为新奇检测

1.2 适用范围

  • 由于算法严格按照过去和现在的概念操作,因此仅使用一维时间序列

1.3 注意事项

  • 训练集需是干净的无异常数据

二、统计度量

2.1 简介

我们也可以通过人为的定义一个统计值,并设定一个阈值,在阈值范围外的为异常值。如:超过移动平均值两个标准差的点,即为异常值。

2.2 常用方法

  • 对于干净的无异常数据集,设均值或移动平均为基准,对于超过两个标准差的点,即视为异常。是一直新奇检测方法
  • 对于包含异常值的数据集,设绝对中位差(MAD) 为基准,查过一定阈值为异常。是一种离群点检测方法
  • 对于正态分布数据,使用 G r u b b s Grubbs Grubbs的离群检测。该方法每次迭代基于最值在正态中去除检测到的异常。是一种离群点检测方法

三、无监督机器学习

3.1 常用方法

  1. 单类支持向量机:利用不包含异常的干净数据集训练模型,创建决策边界,用于分类未来的输入数据点。由于标准的支持向量机实现中对于训练数据集中的离群值适用性比较低,故更适应新奇检测
  2. 隔离森林:类似于随机森林,该算法通过迭代训练集中的数据点来训练模型,随机选择一个特征,并在最大值和最小值直接随机选择一个分割点,通过判断数据点在整体森林中的路径长度来确定是否异常,异常值具有更短的路径。考虑到异常点的阈值受到数据中污染比例的影响,故污染比例设为 0.01 0.01 0.01时,即表示为,路径中,最短的 1 % 1\% 1%路径的数据点为异常。是一种离群点检测算法

四、拟合优度检验

4.1 简介

拟合优度检验,是用来检测观察分布与预期分布之间差异的一种方法,如卡方检验、KS检验等,对于数据是一种已知分布,该方法具有良好效果。

4.2 椭圆包络拟合(协方差估计拟合)

由于异常的定义是不符合预期分布的点,而预期分布已知,故该方法受数据中异常数据的影响极小。
该方法要求数据来自已知的分布,而通常情况下,数据分布并不可知。对于高斯分布合成的数据集,使用 s k l e a r n . c o v a r i a n c e . E l l i p t i c E n v e l o p e sklearn.covariance.EllipticEnvelope sklearn.covariance.EllipticEnvelope类进行异常检测是不错的选择,该类是一种离群点检测算法,需要指定数据中的异常值比例。通常情况下,数据中的异常值比例也是未知的。可以通过调整异常比例从而调整误判。

五、基于密度的算法

5.1 简介

通过判断数据点的密度来判断数据是否为异常,一种密度的方式是基于 k − m e a n s k-means kmeans聚类,使用点到质心的距离作为样本密度的度量。通常情况下,异常值是低密度样本,这是因为我往往定义异常为坏样本,实际上,样本的好坏是基于人们的定义的,而不是密度,目前一种利用无监督学习进行反欺诈建模一方面的应用发现,坏样本(可能是机器批量建立账户,,批量领券或其他群体行为)通常具有相似的特征,而好样本则千人千面。

5.2 局部离群因子(LOF)

LOF使用样本周围的局部密度对异常进行分类。数据点的局部密度是指紧邻周围区域中其他点的密度,该区域的大小可以由固定距离阈值或最近的 n n n个邻居点来定义。数据点的局部密度显著低于最近的 n n n个邻居数据点的话,该数据点呗认为是异常。换而言之,数据点是否孤立,取决于相对邻居数据点而言有多孤立。 s k l e a r n . n e i g h b o r s . L o c a l O u t l i e r F a c t o r sklearn.neighbors.LocalOutlierFactor sklearn.neighbors.LocalOutlierFactor类实现了该方法,是一直离群点检测算法。

你可能感兴趣的:(机器学习基础知识,异常检测)