Task 1 异常检测介绍

1、 异常检测是?

异常检测即,在一个数据集中,识别出与正常数据有较大差异,或与预期行为有较大差异的样本数据(异常点)。

典型问题有:识别如信用卡欺诈,工业生产异常,网络流里的异常(网络侵入)等。

异常数据例子:某条信用卡申请中,无固定工作却有高年收入;工业生产中某条时间记录输出的某几项参数不符合正常范围......

引起异常的原因:异常值的一些最常见原因是由于机械故障,系统行为的更改,欺诈行为,恶意活动,人为错误,仪器错误,设置错误,采样错误,数据输入错误和环境变化造成的。例如,数据错误造成的异常值通常是人为错误造成的,例如在数据收集条目和记录中存在的人为错误。

 

1.1 异常的类型

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

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

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

 

1.2 异常检测数据集分为三种

统计型数据static data(文本、网络流)

序列型数据sequential data(sensor data )

空间型数据spatial data(图像、视频)

 

1.3 异常检测任务分类

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

无监督:训练集无标签

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

一般来说,异常检测主要以无监督或半监督(对特征进行无监督,评价采用半监督)为主。

 

1.4 异常检测场景

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

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

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

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

物联网大数据异常检测:通过监控数据流信息检测异常设备和系统行为。

工业异常检测

时间序列异常检测

视频异常检测

日志异常检测

恶意软件检测

 

个人拓展:因工作内容与锂电池容量的预测模型相关,异常检测可用于识别出锂电池充电过程中异常的时序样本数据,有助于提高最终入模数据的质量,从而提升模型拟合精度。

 

1.5 异常检测的难点

未知性:异常与许多未知因素有关,例如,具有未知的突发行为、数据结构和分布的实例。它们直到真正发生时才为人所知,比如恐怖袭击、诈骗和网络入侵等应用;

异常类的异构性: 异常是不规则的,一类异常可能表现出与另一类异常完全不同的异常特征。例如,在视频监控中,抢劫、交通事故和盗窃等异常事件在视觉上有很大差异;

类别不均衡:异常通常是罕见的数据实例,而正常实例通常占数据的绝大部分。因此,收集大量标了标签的异常实例是困难的,甚至是不可能的。这导致在大多数应用程序中无法获得大规模的标记数据。

 

2、异常检测方法/模型

2.1 基础方法

2.1.1 基于统计学的方法

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

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

即利用统计学方法建立一个模型,然后考虑对象有多大可能符合该模型。例如基于正态分布。

2.1.2 线性模型(基于重构的方法)

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

2.1.3 基于邻近度的方法(聚类分析)

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

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

  • 基于集群(簇)的检测,如DBSCAN等聚类算法。

    聚类算法是将数据点划分为一个个相对密集的“簇”,而那些不能被归为某个簇的点,则被视作离群点。这类算法对簇个数的选择高度敏感,数量选择不当可能造成较多正常值被划为离群点或成小簇的离群点被归为正常。因此对于每一个数据集需要设置特定的参数,才可以保证聚类的效果,在数据集之间的通用性较差。聚类的主要目的通常是为了寻找成簇的数据,而将异常值和噪声一同作为无价值的数据而忽略或丢弃,在专门的异常点检测中使用较少。

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

    ​ k近邻算法的基本思路是对每一个点,计算其与最近k个相邻点的距离,通过距离的大小来判断它是否为离群点。在这里,离群距离大小对k的取值高度敏感。如果k太小(例如1),则少量的邻近离群点可能导致较低的离群点得分;如果k太大,则点数少于k的簇中所有的对象可能都成了离群点。为了使模型更加稳定,距离值的计算通常使用k个最近邻的平均距离。

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

    ​ 局部离群因子(LOF)算法与k近邻类似,不同的是它以相对于其邻居的局部密度偏差而不是距离来进行度量。它将相邻点之间的距离进一步转化为“邻域”,从而得到邻域中点的数量(即密度),认为密度远低于其邻居的样本为异常值。

2.2 集成方法

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

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

Feature Bagging

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

Feature bagging检测器可在数据集的各个子样本上安装多个基本检测器。它使用平均或其他组合方法来提高预测精度。

默认情况下,LOF用作基本估算器。但是,任何估计器都可以用作基本估计器,例如KNN和ABOD。

Feature bagging首先通过随机选择特征子集来构建n个子样本。这使得基本估计更加多样化。最后,通过平均或取所有基本检测器的最大值来生成预测分数。

孤立森林

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

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

img

 

2.3 Python机器学习库 -- PyOD

Python Outlier Detection(PyOD)是当下最流行的Python异常检测工具库,其主要亮点包括:

  • 包括近20种常见的异常检测算法,比如经典的LOF/LOCI/ABOD以及最新的深度学习如对抗生成模型(GAN)和集成异常检测(outlier ensemble);
  • 支持不同版本的Python:包括2.7和3.5+;支持多种操作系统:windows,macOS和Linux;
  • 简单易用且一致的API只需要几行代码就可以完成异常检测,方便评估大量算法;
  • 使用JIT和并行化(parallelization)进行优化,加速算法运行及扩展性(scalability),可以处理大量数据。

PyOD提供了约20种异常检测算法

PyOD库与sklearn库相似,有可直接调用的API以及拟合函数fit,预测函数predict等。

参考资料/转载

[1] https://gitee.com/datawhalechina/team-learning-data-mining/blob/master/AnomalyDetection/%E4%B8%80%E3%80%81%E6%A6%82%E8%BF%B0.md

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

[3] https://zhuanlan.zhihu.com/p/58313521

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值