异常检测概述

1.异常检测的基本介绍

1.1 定义

识别与正常数据不同的数据,与预期行为差异大的数据,针对的是少数的事件。

1.2 类别

点异常(point anomalies):少数个体是异常的,而大多数数据是正常的,个别异常数据相对整体比例较小

条件异常(conditional anomalies):又称上下文异常,指的是在特定情境下个体实例是异常的,在其他情境下都是正常的

群体异常(group anomalies):指的是在群体集合中的个体实例出现异常的情况,而该个体实例自身可能不是异常,在入侵或欺诈检测等应用中,离群点对应于多个数据点的序列,而不是单个数据点。例如社交网络中虚假账号形成的集合作为群体异常子集,但子集中的个体节点可能与真实账号一样正常。

1.3 异常检测任务分类

分类依据:数据集的标签

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

无监督:训练集无标签

半监督:在训练集中只有正例,异常实例不参与训练

1.4 常见应用场景

故障检测:主要是监控系统,在故障发生时可以识别,并且准确指出故障的种类以及出现位置。主要应用领域包括银行欺诈、移动蜂窝网络故障、保险欺诈、医疗欺诈。

医疗日常检测:在许多医疗应用中,数据是从各种设备收集的,如磁共振成像(MRI)扫描、正电子发射断层扫描(PET)扫描或心电图(ECG)时间序列。这些数据中的异常模式通常反映疾病状况。

网络入侵检测:在许多计算机系统中,都会收集有关操作系统调用、网络流量或其他用户操作的不同类型的数据。由于恶意活动,此数据可能显示异常行为。对此类活动的识别称为入侵检测。

欺诈检测:信用卡欺诈越来越普遍,因为信用卡号码等敏感信息更容易被泄露。在许多情况下,未经授权使用信用卡可能表现出不同的模式,例如从特定地点疯狂购买或进行非常大的交易。这种模式可用于检测信用卡交易数据中的异常值。

工业异常检测

时间序列异常检测

视频异常检测

日志异常检测

1.5 难点

1.样本不平衡问题。常见应用场景中,负样本比例远远低于正样本

2.噪音。难以辨别异常和噪音

2 异常检测方法总结

2.1 基础方法

2.1.1 基于统计学的方法

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

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

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

2.1.2 线性模型

使用主成分分析的方法(PCA,Principle Component Analysis)对数据集进行降维。降维后的数据能够最大程度地保留原始数据的特征(从特征的协方差角度,去找到比较好的投影方式)。

2.1.3 基于邻近度的方法

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

基于相似度的检测方法大致可以分为三类:

基于集群(簇)的检测

基于距离的度量,如k近邻算法。

基于密度的度量,如LOF(局部离群因子)算法。

2.2 集成方法

孤立森林

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

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

2.3 机器学习

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

参考资料

[1] 《Outlier Analysis》——Charu C. Aggarwal

[2] https://zhuanlan.zhihu.com/p/260651151

你可能感兴趣的:(异常检测概述)