异常检测Anomaly Detection(一)定义、分类及方法-程序员宅基地

技术标签: 算法  机器学习算法  深度学习  数据挖掘  

1. 什么是异常检测?

1.1 定义

Anomaly detection refers to the problem of finding patterns in data that do not conform to expected behavior. 1
异常检测,即寻找不符合预期行为的数据模式。

1.2 应用场景

某些数据的异常表现可能蕴含重要信息。
例如,在金融风控场景中,脱离正常的行为模式可能意味着信用卡盗刷、骗保;
医疗影像如CT、MRI中,异常图像可能意味着肿瘤等疾病;
计算机网络安全领域中,检测是否有违反安全策略的入侵等。

1.3 异常检测为什么难做

  1. 正常和异常之间的界限不清晰。在靠近边界处,正常观测常被错分类为异常观测,而异常观测又容易被分类为正常的。

  2. 异常行为难以辨识。异常行为通常遭人“粉饰”,使之看起来正常。

  3. 异常行为多变导致处置方式需要及时调整。例如双十一网店的销量很大可能是正常的,但平日里突然销量暴增可能是人为刷单,需要及时调整策略。

  4. 不同场景下的异常定义不同。例如,医学领域的微小偏差(如体温波动)可能是异常,而在股市领域的类似偏差(如股票价值波动)可能被视为正常;

  5. 数据缺乏标签,很多场景下没有异常数据的标签,无法使用监督学习;即使使用人工打标创建标签,通常情况下负样本(异常样本)是极少的,属于样本不平衡问题。

  6. 异常和噪音有时候很难分清

2. 异常检测的分类

2.1 根据数据集性质分类

  • 统计型数据 static data(文本、网络流)
  • 序列型数据 sequential data(时间序列数据、基因组序列)
  • 空间型数据 spatial data(图像、视频、生态数据)

2.2 根据异常的类别分类

  • 点异常 Point Anomaly:一个单独的数据实例相对于其余的数据被认为是异常的。这是最简单的异常类型,也是大多数异常检测研究的重点。拿信用卡举例,如果一笔交易的支出金额与账户下的正常支出相比非常高,那么这将是一个点异常。

  • 上下文异常(条件异常) Contextual Anomaly / Conditional Anomaly:指实例在特定情景中异常、其他环境中正常的情形,在时间序列和空间序列中最常见。比如下图中时间序列数据中,t2和t1处于同样的低点,但t2属于异常数据、t1不属于。
    在这里插入图片描述

  • 集体异常(群体异常) Collective Anomaly / Group Anomaly:指相关数据实例的集合相对于整个数据集是异常的,集体异常中的个别数据实例本身可能不是异常,但它们作为一个集合一起出现是异常的。比如下面表示房性过早搏动问题的心电图中,红色区域的值单独拿出来不是异常、但组合出现就是异常了。
    在这里插入图片描述

2.3 根据标签的可获得性分类

  • 有监督异常检测:缺点一是数据标签难以获得,二是数据不均衡(正常样本数量远大于异常样本数量)。
  • 半监督异常检测:在训练集中只有正常标签、没有异常标签。这些技术中使用的典型方法是为类建立一个与正常行为相对应的模型,并使用该模型来识别测试数据中的异常。目前很多异常检测研究都集中在半监督方法上。
  • 无监督异常检测:在训练集中既有正常实例也可能存在异常实例,但假设数据的比例是正常实例远大于异常实例,模型训练过程中没有标签进行校正。

3. 异常检测方法综述

3.1 基础方法

3.1.1 基于统计学的方法

统计学方法假定正常的数据对象由一个统计模型产生,而不遵守该模型的数据是异常点。统计技术将一个统计模型(通常用于正常行为)与给定的数据相匹配,然后应用统计推断测试来确定一个看不见的实例是否属于该模型。统计学方法的有效性高度依赖于对给定数据所做的统计模型假定是否成立。包含参数方法和非参数方法。
参数方法有高斯模型、高斯混合模型、回归方法等。一般思想是:学习一个拟合给定数据集的生成模型,然后识别该模型低概率区域中的对象,把它们作为异常点。即利用统计学方法建立一个模型,然后考虑对象有多大可能符合该模型。
非参数方法有直方图、核函数等。

3.1.2 谱方法

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

3.1.3 基于距离的方法

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

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

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

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

3.2 集成方法

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

3.2.1 feature bagging :

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

3.2.2 孤立森林:

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

3.3 基于分类的机器学习方法

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

3.3.1 神经网络方法

可以应用于多类(multi-class)和一类(one-class)环境下的异常检测。一类检测的代表算法有Deep SVDD 、OC-NN、RNN等,多类的代表算法有采用深度学习的聚类方法Deep Clustering、自动编码器AutoEncoder、生成模型Generative Modelsd等。

3.3.2 贝叶斯网络

通过对每个测试实例的每个属性后验概率进行聚合,并使用聚合值为测试实例分配一个类标签,基本技术可以推广到多变量分类数据集。

3.3.3 SVM方法

应用于单类环境下的异常检测,适用于数据集较小的情况。


  1. VARUN C, ARINDAM B, ARINDAM B. Anomaly Detection : A Survey. ACM Computing Surveys, 2019.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/pure95214/article/details/116596286

智能推荐

874计算机科学基础综合,2018年四川大学874计算机科学专业基础综合之计算机操作系统考研仿真模拟五套题...-程序员宅基地

文章浏览阅读1.1k次。一、选择题1. 串行接口是指( )。A. 接口与系统总线之间串行传送,接口与I/0设备之间串行传送B. 接口与系统总线之间串行传送,接口与1/0设备之间并行传送C. 接口与系统总线之间并行传送,接口与I/0设备之间串行传送D. 接口与系统总线之间并行传送,接口与I/0设备之间并行传送【答案】C2. 最容易造成很多小碎片的可变分区分配算法是( )。A. 首次适应算法B. 最佳适应算法..._874 计算机科学专业基础综合题型

XShell连接失败:Could not connect to '192.168.191.128' (port 22): Connection failed._could not connect to '192.168.17.128' (port 22): c-程序员宅基地

文章浏览阅读9.7k次,点赞5次,收藏15次。连接xshell失败,报错如下图,怎么解决呢。1、通过ps -e|grep ssh命令判断是否安装ssh服务2、如果只有客户端安装了,服务器没有安装,则需要安装ssh服务器,命令:apt-get install openssh-server3、安装成功之后,启动ssh服务,命令:/etc/init.d/ssh start4、通过ps -e|grep ssh命令再次判断是否正确启动..._could not connect to '192.168.17.128' (port 22): connection failed.

杰理之KeyPage【篇】_杰理 空白芯片 烧入key文件-程序员宅基地

文章浏览阅读209次。00000000_杰理 空白芯片 烧入key文件

一文读懂ChatGPT,满足你对chatGPT的好奇心_引发对chatgpt兴趣的表述-程序员宅基地

文章浏览阅读475次。2023年初,“ChatGPT”一词在社交媒体上引起了热议,人们纷纷探讨它的本质和对社会的影响。就连央视新闻也对此进行了报道。作为新传专业的前沿人士,我们当然不能忽视这一热点。本文将全面解析ChatGPT,打开“技术黑箱”,探讨它对新闻与传播领域的影响。_引发对chatgpt兴趣的表述

中文字符频率统计python_用Python数据分析方法进行汉字声调频率统计分析-程序员宅基地

文章浏览阅读259次。用Python数据分析方法进行汉字声调频率统计分析木合塔尔·沙地克;布合力齐姑丽·瓦斯力【期刊名称】《电脑知识与技术》【年(卷),期】2017(013)035【摘要】该文首先用Python程序,自动获取基本汉字字符集中的所有汉字,然后用汉字拼音转换工具pypinyin把所有汉字转换成拼音,最后根据所有汉字的拼音声调,统计并可视化拼音声调的占比.【总页数】2页(13-14)【关键词】数据分析;数据可..._汉字声调频率统计

linux输出信息调试信息重定向-程序员宅基地

文章浏览阅读64次。最近在做一个android系统移植的项目,所使用的开发板com1是调试串口,就是说会有uboot和kernel的调试信息打印在com1上(ttySAC0)。因为后期要使用ttySAC0作为上层应用通信串口,所以要把所有的调试信息都给去掉。参考网上的几篇文章,自己做了如下修改,终于把调试信息重定向到ttySAC1上了,在这做下记录。参考文章有:http://blog.csdn.net/longt..._嵌入式rootfs 输出重定向到/dev/console

随便推点

uniapp 引入iconfont图标库彩色symbol教程_uniapp symbol图标-程序员宅基地

文章浏览阅读1.2k次,点赞4次,收藏12次。1,先去iconfont登录,然后选择图标加入购物车 2,点击又上角车车添加进入项目我的项目中就会出现选择的图标 3,点击下载至本地,然后解压文件夹,然后切换到uniapp打开终端运行注:要保证自己电脑有安装node(没有安装node可以去官网下载Node.js 中文网)npm i -g iconfont-tools(mac用户失败的话在前面加个sudo,password就是自己的开机密码吧)4,终端切换到上面解压的文件夹里面,运行iconfont-tools 这些可以默认也可以自己命名(我是自己命名的_uniapp symbol图标

C、C++ 对于char*和char[]的理解_c++ char*-程序员宅基地

文章浏览阅读1.2w次,点赞25次,收藏192次。char*和char[]都是指针,指向第一个字符所在的地址,但char*是常量的指针,char[]是指针的常量_c++ char*

Sublime Text2 使用教程-程序员宅基地

文章浏览阅读930次。代码编辑器或者文本编辑器,对于程序员来说,就像剑与战士一样,谁都想拥有一把可以随心驾驭且锋利无比的宝剑,而每一位程序员,同样会去追求最适合自己的强大、灵活的编辑器,相信你和我一样,都不会例外。我用过的编辑器不少,真不少~ 但却没有哪款让我特别心仪的,直到我遇到了 Sublime Text 2 !如果说“神器”是我能给予一款软件最高的评价,那么我很乐意为它封上这么一个称号。它小巧绿色且速度非

对10个整数进行按照从小到大的顺序排序用选择法和冒泡排序_对十个数进行大小排序java-程序员宅基地

文章浏览阅读4.1k次。一、选择法这是每一个数出来跟后面所有的进行比较。2.冒泡排序法,是两个相邻的进行对比。_对十个数进行大小排序java

物联网开发笔记——使用网络调试助手连接阿里云物联网平台(基于MQTT协议)_网络调试助手连接阿里云连不上-程序员宅基地

文章浏览阅读2.9k次。物联网开发笔记——使用网络调试助手连接阿里云物联网平台(基于MQTT协议)其实作者本意是使用4G模块来实现与阿里云物联网平台的连接过程,但是由于自己用的4G模块自身的限制,使得阿里云连接总是无法建立,已经联系客服返厂检修了,于是我在此使用网络调试助手来演示如何与阿里云物联网平台建立连接。一.准备工作1.MQTT协议说明文档(3.1.1版本)2.网络调试助手(可使用域名与服务器建立连接)PS:与阿里云建立连解释,最好使用域名来完成连接过程,而不是使用IP号。这里我跟阿里云的售后工程师咨询过,表示对应_网络调试助手连接阿里云连不上

<<<零基础C++速成>>>_无c语言基础c++期末速成-程序员宅基地

文章浏览阅读544次,点赞5次,收藏6次。运算符与表达式任何高级程序设计语言中,表达式都是最基本的组成部分,可以说C++中的大部分语句都是由表达式构成的。_无c语言基础c++期末速成