异常检测概述

如题所述

第1个回答  2022-06-24

异常检测(Outlier Detection) ,顾名思义,是识别与正常数据不同的数据,与预期行为差异大的数据。

识别如信用卡欺诈,工业生产异常,网络流里的异常(网络侵入)等问题,针对的是少数的事件。

点异常 :指的是少数个体实例是异常的,大多数个体实例是正常的,例如正常人与病人的健康指标;

上下文异常 :又称上下文异常,指的是在特定情境下个体实例是异常的,在其他情境下都是正常的,例如在特定时间下的温度突然上升或下降,在特定场景中的快速信用卡交易;

群体异常 :指的是在群体集合中的个体实例出现异常的情况,而该个体实例自身可能不是异常,例如社交网络中虚假账号形成的集合作为群体异常子集,但子集中的个体节点可能与真实账号一样正常。

有监督 :训练集的正例和反例均有标签

无监督 :训练集无标签

半监督 :在训练集中只有单一类别(正常实例)的实例,没有异常实例参与训练

统计学方法对数据的正常性做出假定。 它们假定正常的数据对象由一个统计模型产生,而不遵守该模型的数据是异常点。 统计学方法的有效性高度依赖于对给定数据所做的统计模型假定是否成立。

异常检测的统计学方法的一般思想是:学习一个拟合给定数据集的生成模型,然后识别该模型低概率区域中的对象,把它们作为异常点。

即利用统计学方法建立一个模型,然后考虑对象有多大可能符合该模型。

假定输入数据集为 ,数据集中的样本服从正态分布,即 ,我们可以根据样本求出参数 和 。

典型的如PCA方法,Principle Component Analysis是主成分分析,简称PCA。它的应用场景是对数据集进行降维。降维后的数据能够最大程度地保留原始数据的特征(以数据协方差为衡量标准)。
PCA的原理是通过构造一个新的特征空间,把原数据映射到这个新的低维空间里。PCA可以提高数据的计算性能,并且缓解"高维灾难"。

  这类算法适用于数据点的聚集程度高、离群点较少的情况。同时,因为相似度算法通常需要对每一个数据分别进行相应计算,所以这类算法通常计算量大,不太适用于数据量大、维度高的数据。
  基于相似度的检测方法大致可以分为三类:

集成是提高数据挖掘算法精度的常用方法。集成方法将多个算法或多个基检测器的输出结合起来。其基本思想是一些算法在某些子集上表现很好,一些算法在其他子集上表现很好,然后集成起来使得输出更加鲁棒。集成方法与基于子空间方法有着天然的相似性,子空间与不同的点集相关,而集成方法使用基检测器来探索不同维度的子集,将这些基学习器集合起来。

常用的集成方法有Feature bagging,孤立森林等。

**feature bagging **:

与bagging法类似,只是对象是feature。

孤立森林

孤立森林假设我们用一个随机超平面来切割数据空间,切一次可以生成两个子空间。然后我们继续用随机超平面来切割每个子空间并循环,直到每个子空间只有一个数据点为止。直观上来讲,那些具有高密度的簇需要被切很多次才会将其分离,而那些低密度的点很快就被单独分配到一个子空间了。孤立森林认为这些很快被孤立的点就是异常点。

用四个样本做简单直观的理解,d是最早被孤立出来的,所以d最有可能是异常。

在有标签的情况下,可以使用树模型(gbdt,xgboost等)进行分类,缺点是异常检测场景下数据标签是不均衡的,但是利用机器学习算法的好处是可以构造不同特征。

Scikit-learn:

Scikit-learn 是一个Python语言的开源机器学习库。它具有各种分类,回归和聚类算法。也包含了一些异常检测算法,例如LOF和孤立森林。

官网: https://scikit-learn.org/stable/

PyOD:

1、学习pyod库基本操作

参考资料:

相似回答