异常检测算法分类总结(含常用开源数据集)

news2024/11/19 9:25:13

作者:云智慧算法工程师 Chris Hu

异常检测是识别与正常数据不同的数据,与预期行为差异大的数据。本文详细介绍了异常检测的应用领域以及总结梳理了异常检测的算法模型分类。文章最后更是介绍了常用的异常算法数据集。

异常的概念与类型

目前异常检测主要是基于Hawkins对异常的定义:(Hawkins defines an outlier as an observation that deviates so significantly from other observations as to arouse suspicion that it was generated by a different mechanism.)。异常(anomaly/outlier)指的是远离其他观测数据而疑为不同机制产生的观测数据。根据概率理论对异常的形式化定义如下:

在这里插入图片描述

异常主要分为以下三种类型:

  • point anomalies(点异常)

    点异常是单个异常数据点 ,将数据集中每个数据映射到高维空间中,其中孤立的点被称为点异常。这种异常点与其他数据点具有明显差异,这种异常分类是异常数据中最为简单的一种,也是异常检测研究中最常研究的异常类型。
    在这里插入图片描述

  • conditional anomalies/contextual anomalies(条件异常/上下文异常)

    一个数据本身来看属于正常点,但在特定的条件下又与一般情况有差异,这类数据称为条件异常或上下文异常。其中上下文指数据集间的结构和关系,每个数据均由上下文特征( contextual attributes) 及行为特征( behavioral attributes) 来定义,即条件异常需要考虑的不仅仅是数据的取值,还需考虑数据出现的环境,也就是说某一数据在特定数据环境下被判断为异常,而在其他数据集中则可能是正常的。
    在这里插入图片描述

  • collective anomalies/group anomalies(群体异常/序列异常)

    数据属性在正常范围内,且从上下文环境角度判断也属于正常的数据仍有可能是异常数据。如图3所示,在脑电图中虚线圆圈部分与脑电图整体图形不一致模式称之为聚集异常( 或称集合异常)。异常数据集中单个点可能并不异常,但这些相互关联的数据点聚集在一起时变为异常的情况。聚集异常不仅需要考虑数据的取值、上下文环境,还考虑数据集是否符合整体模式。聚集异常检测常用于时间序列、空 间数据以及图形式的数据中。
    在这里插入图片描述

在实际的运维场景中,以上三种异常都会出现,比如资源使用率突然上升造成Point Anomalies,又如CPU使用过程中的突然卡顿形成Contextual anomaly,再如某指标使用率连续一段时间处于“满格”状态而呈现出Collective or group anomalies。后两者异常通常需要和业务紧密结合,单纯从数据本身出发具有一定的辨识难度,再加上运维领域中大比例情况下出现的是Point Anomalies,客户多关注于此,因而通常情况下我们更关注Point Anomalies。

异常检测的应用领域

  • 入侵检测(Intrusion detection):通过从计算机网络或计算机系统中的若干关键点收集信息并对其进行分析,从中发觉网络或系统中有没有违反安全策略的行为和遭到袭击的迹象,并对此做出适当反应的流程。最普遍的两种入侵检测系统包括基于主机的入侵检测系统(HIDS)、网络入侵检测系统(NIDS)。

  • 欺诈检测(Fraud detection):主要是不同领域的非法活动检测,主要应用领域包括银行欺诈、移动蜂窝网络故障、保险欺诈、医疗欺诈。

  • 恶意软件检测(Malware Detection):主要分为静态分析检测技术与动态分析与检测技术。

  • 医疗异常检测(Medical Anomaly Detection):通过X光片、核磁共振、CT等医学图像检测疾病或量化异常,也可以通过EEG、ECG等时序信号进行疾病检测或异常预警。

  • 深度学习用于社交网络中的异常检测(Deep learning for Anomaly detection in Social Networks): 社交网络中的异常通常是指个人的不正常甚至违法的行为,如垃圾邮件发送者、性侵者、在线欺诈者、虚假用户或谣言散布者等。

  • 日志异常检测(Log Anomaly Detection):日志异常检测是指找到异常日志,从而判断系统故障原因与性质,通常将日志数据建模为自然语言序列进行异常检测。

  • 物联网大数据异常检测(Internet of things (IoT) Big Data Anomaly Detection):通过监控数据流信息检测异常设备和系统行为。

  • 工业异常检测(Industrial Anomalies Detection): 检测风力涡轮机、发电厂、高温能源系统、存储设备和旋转机械部件组成的工业系统中设备的损坏情况, 该领域中异常检测的挑战是数据量与数据的动态特性,因为故障通常是由多种因素引起的。

  • 时间序列中的异常检测(Anomaly Detection in TimeSeries):包括单变量时间序列异常检测与多变量时间序列异常检测。

  • 视频监控(Video Surveillance):检测视频中的异常场景。

异常检测思路与方法总结

现如今,异常检测主要面临以下困难与挑战:

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

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

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

基于标签的异常检测算法分类

  • 有监督异常检测算法

有监督异常检测算法是指在训练集中的正常实例和异常实例都有标签,训练二类或多类分类器。有监督异常检测方法主要面临两个问题,一方面是在训练数据中,相对于正常时间序列来讲,异常的数据量太小,会对检测效果产生影响;另一方面是在实际操作中很难精确地标注数据是正常或异常,而且异常的情况也难以全部覆盖。基于以上原因,在实际异常检测中,有监督异常检测算法在实际应用中较少。

  • 半监督异常检测算法

半监督异常检测算法是指在训练集中只有单一类别(正常实例)的实例,没有异常实例参与训练。半监督异常检测技术的一种典型方法是基于训练数据集为正常时间序列数据建立模型,然后利用该模型识别待检测数据中的异常。半监督异常检测学习正常数据的判别边界,不属于正常类的数据被判断为异常。由于训练中不需标注异常序列,因此半监督式异常检测方法的应用相对更加广泛。

  • 无监督异常检测算法

无监督异常检测算法在训练集中既有正常实例也可能存在异常实例,但假设数据的比例是正常实例远大于异常实例,模型训练过程中没有标签进行校正。此类技术的核心思想在于异常的情况相对于正常的情况而言是很少的,且其与正常情况存在较大的差异,这种差异可以体现在数据之间的距离远近、分布密度、偏离程度等方面。无监督异常检测算法仅根据数据的内在属性(如距离、密度等)检测数据的异常值,自编码器是所有无监督深度异常检测模型的核心。

基于模型的异常检测算法分类

基于模型的异常算法分类基于传统方法的异常检测模型和基于深度学习的异常检测模型两大类。

在这里插入图片描述

基于传统方法的异常检测模型

  • 基于统计的方法

使用这类方法基于的基本假设是正常的数据是遵循特定分布形式的,并且占了很大比例,而异常点的位置和正常点相比存在比较大的偏移。比如高斯分布,在平均值加减3倍标准差以外的部分仅占了0.2%左右的比例,一般我们把这部分数据就标记为异常数据。

基于统计的异常检测一般需要充分的数据基础和相应的先验知识,此时检测效果可能是非常有效的。然而,此类检测方法一般是针对单个属性或低维数据的,而对于高纬度的时间序列数据就难以估计其真实的分布。

在这里插入图片描述

  • 基于重构的方法

假设异常点是不可被压缩的或不能从低维映射空间有效地被重构的。常见的方法有PCA、Robust PCA、random projection等降维方法。 PCA提取了数据的主要特征,如果一个数据样本不容易被重构出来,表示这个数据样本的特征跟整体数据样本的特征不一致,那么它显然就是一个异常的样本。

对于数据样本X_i, 假设其基于 k 维特征向量重构的样本为X_ik^’ , 则该数据样本的异常得分可以用如下的公式计算:

在这里插入图片描述

  • 聚类分析方法

此类方法利用聚类算法(如K-means、_x0008_DBSCAN等)对待检测数据进行聚类,通过聚类的结果来分辨正常与异常的数据,是一种典型的非监督式异常检测技术。通常来讲,基于聚类的异常检测可基于三种假设来分辨异常数据:

  1. 不属于任何簇(Cluster)的数据即为异常;

  2. 距离簇中心很远的数据即为异常;

  3. 归属于数据点少或稀疏簇的数据即为异常。

使用聚类算法进行异常检测,可利用大量已有的聚类研究成果。但是,聚类与异常检测还是有较大差异的,异常检测的目标在于寻找不正常的数据,而聚类的目的在于确定数据归属的类别。而且,很多聚类算法并未针对时间序列数据做优化,算法执行效率往往不高。

  • one-class 分类方法

对正常数据建立区分性边界,异常点被划分到边界外。常见的方法有OC-SVM、SVDD等。

在这里插入图片描述

基于深度学习的异常检测模型

  • Deep one class

该类的典型方法为:Deep SVDD [11] 、OC-NN [20]。

在这里插入图片描述

在这里插入图片描述

  • Deep clustering

采用深度学习的聚类方法一般是用神经网络对输入数据进行编码,然后认为最后的编码序列可以代表神经网络的很多特征,然后我们对编码序列进行聚类就可以达成聚类的目的。该类方法被用于异常检测的包括:CAE-l2 cluster 、DAE-DBC。

CAE-l2 cluster:在autoencoder中间加入了L2标准化以及k-means。

在这里插入图片描述

DAE-DBC:先利用autoencoder降维,然后通过聚类方法判别异常值。

在这里插入图片描述

  • Autoencoder

一个通用的自动编码器由编码器和解码器组成,编码器将原始数据映射到低维特征空间,而解码器试图从投影的低维空间恢复数据。这两种网络的参数通过重构损失函数来学习。为了使整体重构误差最小化,保留的信息必须尽可能与输入实例(如正常实例)相关。

典型案例有稀疏自动编码器(sparse AE)、去噪自动编码器(denoising AE)、收缩自动编码器(contractive AE)、鲁邦自动编码器(Robust Deep AE)等,基本原理都较为简单。

该类方法的优点是能够通过非线性方法捕捉复杂特征,试图找到正常实例的一种通用模式,缺点是如何选择正确的压缩程度,以及如何解决“过拟合”的问题(网络拟合的太好以至于异常实例也“潜伏”在低维特征空间中)。为了解决这个缺点,有研究者使用正则化或者记忆矩阵等等方法。
在这里插入图片描述
在这里插入图片描述

  • Generative models

这种方法通常旨在学习生成网络G的潜在特征空间,使潜在空间能够很好地捕捉到给定数据背后的常态。将生成模型用于异常检测是基于在生成网络的潜在特征空间中正常实例比异常实例能够更准确地被产生这一假设。 实际实例和生成实例之间的残差被定义为异常分数。

典型案例有AnoGAN、GANomaly、Wasserstein GAN、 Cycle GAN、VAE等。该类方法的关键问题是如何设计合适的生成器和目标函数。

异常检测数据集

异常检测数据类型

用于异常检测的数据通常可分为两类:

序列数据:如voice, text, music, time series, protein sequences;

非序列数据:如images, other data。

在这里插入图片描述

异常检测开源数据集

下方链接为常用的异常检测数据集,该git仓库中维护了多种通用的异常检测数据集。

https://github.com/GuansongPang/ADRepository-Anomaly-detection-datasets

在这里插入图片描述

下方链接为时间序列异常检测数据集,该git仓库中维护了时间序列异常检测算法相关的软件、包、数据集等。

https://github.com/rob-med/awesome-TS-anomaly-detection

在这里插入图片描述

开源项目推荐

云智慧已开源数据可视化编排平台 FlyFish 。通过配置数据模型为用户提供上百种可视化图形组件,零编码即可实现符合自己业务需求的炫酷可视化大屏。 同时,飞鱼也提供了灵活的拓展能力,支持组件开发、自定义函数与全局事件等配置, 面向复杂需求场景能够保证高效开发与交付。

如果喜欢我们的项目,请不要忘记点击下方代码仓库地址,在 GitHub / Gitee 仓库上点个 Star,我们需要您的鼓励与支持。此外,即刻参与 FlyFish 项目贡献成为 FlyFish Contributor 的同时更有万元现金等你来拿。

GitHub 地址: https://github.com/CloudWise-OpenSource/FlyFish

Gitee 地址: https://gitee.com/CloudWise/fly-fish

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/29509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

硝酸根离子深度去除树脂

普通的阴离子交换树脂对阴离子的交换次序是:SO42->NO3->HCO3-,对硝酸盐没有选择性,优先交换水中硫酸根,造成树脂再生频繁,产水中氯离子含量增高,出水水质稳定性差,树脂交…

[注塑]各种进胶方式优缺点分析

[注塑]各种进胶方式优缺点分析1.直接进胶2.测胶口3.搭接式浇口4.扇形浇口5.潜胶6.弧线浇口7.针形浇口结构设计的时,分析浇口的进胶方式尤为重要,为了简便我们的设计,常常需要将一些常用的标准形式,以下是我们常见的一些浇口形式。…

死磕sparkSQL源码之TreeNode

InternalRow体系 学习TreeNode之前,我们先了解下InternalRow。 对于我们一般接触到的数据库关系表来说,我们对于数据库中的数据操作都是按照“行”为单位的。在spark sql内部实现中,InternalRow是用来表示这一行行数据的类。看下源码中的解…

Spring Cloud(十二):Spring Cloud Security

主要内容 Spring Security 模块使用设置用户名密码基于内存基于UserDetailsService 接口基于配置类WebSecurityConfigurerAdapter基于DB 用户-角色-权限自定义登录页面登录认证流程自定义成功、自定义失败会话管理(Session)会话控制会话超时会话并发控制集群sessio…

【Webpack】webpack的基础使用详细总结 下(建议收藏)

1- 前言 昨天已经介绍了weback的基础使用了,详细总结看这边博客!!! 【Webpack】webpack的基础使用详细总结 上(建议收藏) 今天来总结一下剩余的常用 !!!! …

微信抽奖活动有什么作用_分享微信抽奖小程序开发的好处

在H5游戏中,抽奖是最受消费者喜爱的模式之一。将H5微信抽奖活动结合到营销中,可以带来意想不到的效果,带流量和曝光率,所以许多企业也会在做活动时添加上不同类型的H5微信抽奖活动。 那么,新手怎么搭建微信抽奖活动&am…

01背包、完全背包、多重背包、分组背包总结

文章目录一、01背包问题二、完全背包问题三、多重背包问题四、分组背包一、01背包问题 n个物品,每个物品的重量是wiw_iwi​,价值是viv_ivi​,背包的容量是mmm 若每个物品最多只能装一个,且不能超过背包容量,则背包的最…

【ABAP】SAP发送消息至RabbitMQ

SAP发送消息至RabbitMQ ——以下关于RabbitMQ的内容大致转载于朱忠华老师的《RabbitMQ实战指南》一书 【基础知识】 消息队列中间件(Message Queue Middleware,即MQ)也可以称之为消息队列或者消息中间件,是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数…

面试官: B 树和 B+ 树有什么区别?

问各位小可爱一个问题:MySQL 中 B 树和 B 树的区别? 请自己先思考5秒钟,看看是否已经了然如胸? 好啦,时间到! B 树和 B 树是两种数据结构,构建了磁盘中的高速索引结构,因此不仅 …

上海亚商投顾:沪指窄幅震荡 “中字头”概念股又暴涨

上海亚商投顾前言:无惧大盘大跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪沪指今日窄幅震荡,深成指、创业板指盘中跌超1%,午后探底回升一度翻红。光伏、储能等赛道午后…

[Spring Cloud] GateWay自定义过滤器/结合Nacos服务注册中心

✨✨个人主页:沫洺的主页 📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专…

DocuWare Workflow Manager(工作流管理器)

DocuWare Workflow Manager 公司是按流程运转的。销售、人力资源、财务等部门需要流畅、可靠的信息传输,以便在正确的时间做出正确的决策。订单管理、员工入职和发票审批等流程可以根据您的精确需求进行设计和自动化,避免时间浪费。 适用于复杂业务的简…

Mysql数据库相关面试题

1.关系型和非关系型数据库的区别是什么? 关系型和非关系型数据库的主要差异是数据存储的方式,关系型数据库天然就是表格存储,因此存储在数据表的行和列中,数据表可以彼此关联协作存储,很容易提取数据. 优点: 易于维护:都是使用表结构,格式一致,使用方便:sql语言通用,可以用于复…

MyBatis逆向工程和分页插件

1、分页插件 MyBatis 通过提供插件机制,让我们可以根据自己的需要去增强MyBatis 的功能。需要注意的是,如果没有完全理解MyBatis 的运行原理和插件的工作方式,最好不要使用插件, 因为它会改变系底层的工作逻辑,给系统带…

2022年全国职业院校技能大赛:网络系统管理项目-模块B--Windows样题7

初始化环境1.默认账号及默认密码 Username: Administrator Password: ChinaSkill22! Username: demo Password: ChinaSkill22! 注:若非特别指定,所有账号的密码均为 ChinaSkill22! 项目任务描述你作为技术工程师,被指派去构建一个公司的内部网络,要为员工提供便捷、安…

超算云平台在线功能Q-Flow、Q-Studio V2.1版本升级,web端在线建模+DFT计算

建模DFT计算还可以这么玩? Q-Flow(在线可视化提交任务功能)以及 Q-Studio(在线建模功能)依托Mcloud平台免费向用户开放使用。告别Linux编辑代码提交任务的模式,Q-Flow可在浏览器里通过拖拽图形化的第一性原…

【第06节】Selenium4 JavaScript 处理场景实战(Python Web自动化测试)

Selenium 4 【01-06节】主讲元素定位,处理一些特殊场景的方法与实战已经全部写完。文章所有素材来自互联网,如果文章有侵权处,请联系作者。 文章目录1、Selenium4 自动化 JavaScript 场景实战1.1 使用 JavaScript 处理富文本1.2 使用 JavaScr…

Linux——网络编程总结性学习

什么是ISP? 网络业务提供商_百度百科 计算机网络有哪些分类方式,计算机网络有哪些分类?_陈泽杜的博客-CSDN博客 路由器_百度百科 目前实际的网络分层是TCP/IP四层协议 当我们浏览⽹站找到想要下载的⽂件以后,找到相应的接⼝点击下载就好了。…

新形势下安全风险评估实践

​ 随着安全内涵的不断扩充和发展,风险评估作为安全管理的重点,内容以及方法都与时俱进的得到了发展和丰富,本文将介绍新形势下风险评估的特点和实践心得,以供参考。 一、新形势下安全风险评估特点 首先是内外部形势和要求的变…

Docker入门教程(详细)

目录 一、Docker概述 1.1 Docker 为什么出现? 1.2 Dorker历史 1.3 能做什么 虚拟机技术:(通过 软件 模拟的具有完整 硬件 系统功能的、运行在一个完全 隔离 环境中的完整 计算机系统) 容器化技术:(容…