异常检测进阶梳理1:Tabular AD视角

news2025/1/11 23:53:07

接触异常检测领域也有一年多的时间了,过程中遇到不少坑,知识体系也在不断更新完善,这里以专题的形式进行知识体系的梳理~

异常检测(Anomaly Detection, AD)领域内的划分体系较多,这里基于异常检测最常用到的PyOD库作者的几篇综述Paper,进行如下划分:

  1. Tabular AD

  2. Time-series AD

  3. Graph data AD

本篇文章介绍第一部分,Tabular AD内的相关工作,后续将继续以专题文章形式进行更新,欢迎关注~

Tabular Data

​对于一个具体的业务场景,我们所能够获得的数据往往是Tabular、Time-series、Graph等格式,其中Tabular格式的数据(即表格型数据)如上图所示

当我们决定使用AD算法对表格型数据进行异常检测时,我们工作的重点往往会放在特征加工(增加更多便于AD的列)和算法选型上,特征加工往往与具体业务场景相关,这里不赘述;而算法选型从大的角度来看,往往被分为无监督、监督和半监督方法,不同方法之间没有绝对的优劣,需要结合具体业务场景进行效果评估

就目前大家的经验来看算法选型:当业务场景中 存在/易获得 标注数据时,监督方法往往效果更佳,但由于涉及到有标注数据集加工等环节,算法迭代速度可能较慢;无监督方法迭代速度较快,但算法选型上需要仔细考虑,且算法效果常不稳定;半监督方法因本人还未在AD业务场景中尝试过,这里不展开。这里写的只是粗略的经验之说,文末会给出笔者认为较为可靠的算法选型实验等相关结论

算法选型的确重要,很多文章都已经详细介绍了各种AD算法,但AD算法众多 且算法设计优化的时间往往有限,相比不断地实验试错,一个好的AD方法论至关重要。后文会先介绍一下Tabular AD视角下的异常类型,然后快速过一下Tabular AD算法的相关工作,给出笔者认为较为可靠的算法选型实验结论,最后给出一个提炼后的AD任务方法论

Type of Anomalies

大家常见的AD任务异常类型往往是点异常、上下文异常和集体异常:

  1. 点异常:单个数据实例相对于其余数据是异常的

  2. 上下文(条件)异常:在特定上下文中异常,其他情况下不异常。由两个属性定义:上下文属性,如时间序列数据中,时间就是上下文属性;行为属性,如时间序列数据中,某个时刻对应的特征值就是行为属性

  3. 集体异常:相关数据实例的集合相对于整个数据集是异常的,但集合中的各个数据实例可能是正常的

对具体业务场景中异常类型的明确 与后续特征加工、算法选型、优化迭代等环节息息相关,明确的异常类型将有助于我们高效开展后续工作。进一步地,这里参考ADBench论文中对Tabular AD视角下异常类型的划分,其对点异常进一步细分为Local和Global异常,如下图所示:

​Tabular AD视角下异常类型的划分:

  1. Local:不同于局部范围内近邻的异常点

  2. Global:明显偏离其余数据点的点

  3. Dependency:类似“上下文异常”

  4. Clustered:类似“集体异常”

Related Work

对各个AD算法的介绍太多,这里不赘述了,只给出分类体系

无监督

浅层

IForest

OCSVM

ECOD

深度

DAGMM

DeepSVDD

监督

朴素贝叶斯

SVM

MLP

RF

Ensemble:XGBoost、LightGBM、CatBoost

CV:ResNet

NLP:Transformer

半监督

DeepSAD

DevNet

XGBOD

PReNet

FEAWAD

Experimental Conclusion

各结论均整理自ADBench论文实验,且在实操中 大部分结论能对上,具有一定的参考性~

  • 无监督AD算法中,根据异常类型进行算法选择最重要,没有总是最优的无监督算法

  • 无监督深度AD方法如DeepSVDD、DAGMM效果往往一般

  • 推荐使用IForest或ECOD进行快速POC


  • 异常标注量较少时,半监督方法优于监督方法;异常标记量较多时,两者性能类似
  • 大部分半监督方法,1%异常标记就足以超过最佳无监督方法(假设当前数据集中有100条异常数据,1%指只使用1条异常数据)

  • 大部分监督方法,需要10%的异常标记才能超过最佳无监督方法

  • 当业务场景中 存在/易获得 标注数据时,Transformer、集成类方法效果不会太差


  • 确定异常类型的重要性:专门针对特定类型异常的无监督算法甚至优于半监督/全监督算法
  • 无监督算法在特定异常类型下的效果不错,但在真实数据集上效果较差;但进一步地,从理论上,如果已知真实场景中的异常类型,通过对应无监督算法的混合,可能能够得到不错的效果

  • 异常类型作为先验知识所带来的效果 可能优于 单纯标签的使用


  • 监督/半监督算法的鲁棒性往往较强
  • 无监督方法面对重复异常的干扰 鲁棒性较差

AD Methodology

具体业务场景中,往往业务逻辑复杂,AD算法选择众多,一个好的方法论有助于我们进行算法的快速选型和优化迭代,整个方法论的思路如上图所示,在拿到具体业务中的Tabular Data后:

  1. 就现有特征进行数据点的可视化,判断现有特征是否能够发现异常

  2. 若无法发现异常,则在基于业务理解基础上增加特征后,继续1;若能发现 则继续3

  3. 基于可视化情况,判断异常所属类型

  4. 基于Experimental Conclusion中的结论进行算法选型

  5. 实验效果验证,BadCase分析,进一步优化,增加新特征,继续1

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

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

相关文章

【P39】JMeter 随机顺序控制器(Random Order Controller)

文章目录 一、随机顺序控制器(Random Order Controller)参数说明二、测试计划设计2.1、测试计划一2.2、测试计划二 一、随机顺序控制器(Random Order Controller)参数说明 可以让控制器内部的组件按随机顺序执行(内部…

Alibaba Arthas学习与使用

Alibaba Arthas学习与使用 目录 下载安装卸载退出快捷键重点部分: 命令 dashboardthreadjvmsyspropsysenvvmoptiongetstaticognlscsmjadmcredefinedumpclassloadermonitorwatchtracestackttoptionsprofiler 下载安装 # 下载 curl -O https://alibaba.github.io/arthas/art…

Apache Kafka - 如何实现可靠的数据传递

文章目录 可靠的数据传递导图 可靠的数据传递 Kafka 通过以下几个方面实现可靠的数据传递: 分区副本 - Kafka 的分区有多个副本,如果某个副本失效,其他副本可以继续服务。生产者重试 - 生产者在发送消息失败时会自动重试,一直到成功发送或者达到最大重试次数。批量确认 - 生产…

云服务器和专用服务器之间的区别

在当今数字化时代,服务器是构建和支持各种应用和服务的基础设施之一。随着技术的发展和需求的增加,出现了不同类型的服务器,其中最常见的是云服务器和专用服务器。本文将详细介绍云服务器和专用服务器之间的区别,以帮助您更好地了…

SpringSecurity从入门到实战

SpringSecurity从入门到实战 0. 简介 ​ Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。 ​ 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有…

【LAMP架构】

目录 一、LAMP架构1、组件作用 二、编译安装Apache httpd服务2、安装环境依赖包3、配置软件模块4、编译及安装5、优化配置文件路径,并把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别6.添加httpd系统服务7.修改httpd 服务配置文件8.浏览器访问验证…

【云原生|探索 Kubernetes 系列 5】简化 Kubernetes 的部署,深入解析其工作流程

前言 大家好,我是秋意零。 在前面 4 个章节中,我们充分了解了容器技术和 Kubernes 原生时代引擎的架构和设计思想,今天分享的主要内容是,探索 Kubernetes 部署,深入解析其工作流程 👿 简介 &#x1f3e0…

[元带你学: eMMC协议详解 11] Data transfer mode 数据传输模式

依JEDEC eMMC 5.1及经验辛苦整理,付费内容,禁止转载。 所在专栏 《元带你学: eMMC协议详解》 全文2300 字, 主要介绍数据传输模式,本节数据传输模式图非常重要。数据传输模式图可以说是我查对过最频繁的图之一了。eMMC 限定了这么…

数据库基础——6.排序与分页

这篇文章来讲一下数据库的排序与分页 目录 1.排序数据 1.1排序规则 1.2 单列排序 1.3 多列排序 2.分页 2.1 背景 2.2 实现规则 2.3 拓展 1.排序数据 1.1排序规则 使用 ORDER BY 子句排序 ASC(ascend):升序 ; DESC&a…

怎么一键保存浏览器中打开的所有标签页?

2023年5月28日,周日晚上: 被这个问题困扰很久了,之前一直不知道怎么全部保存浏览器中打开的所有标签页,浪费了不少的时间,今天下午偶然发现了解决办法。 很简单,直接在浏览器里使用快捷键“CtrlShiftD” …

本周大新闻|传Meta与Magic Leap谈专利授权;PS VR2前6周出货60万台

本周XR大新闻,AR方面,苹果XR项目核心高管曝光;传Meta与Magic Leap洽谈专利授权合作;歌尔光学公布新一代AR显示模组;Lumus公布二代波导Z-Lens最新细节;JBD X-cube发布全彩Micro LED光机Hummingbird&#xff…

我用GPT写了一个关于GPT的文章,大家看看写的如何

声明:以下内容来自GPT-3.5大模型(图片除外) 目录 I. 引言 1.1 研究背景和意义 1.2 现有研究综述 II. ChatGPT技术介绍 2.1 ChatGPT技术原理 2.2 ChatGPT技术优势 III. ChatGPT技术在智能客服中的应用和挑战 3.1 ChatGPT技术在智能客…

【TOP生物信息】使用Seurat包自带的方法进行单细胞类型注释

扫码关注下方公粽号,回复推文合集,获取400页单细胞学习资源! 本文共计1318字,阅读大约需要4分钟,目录如下: 方法简介演示数据来源代码演示小结代码参考往期单细胞系统教程 单细胞自动注释细胞类型的软件和…

华为OD机试真题B卷 Java 实现【查字典】,附详细解题思路

一、题目描述 输入一个单词前缀和一个字典,输出包含该前缀的单词。 二、输入描述 单词前缀字典长度字典。 字典是一个有序单词数组。 输入输出都是小写。 三、输出描述 所有包含该前缀的单词,多个单词换行输出。 若没有则返回-1。 四、解题思路…

Java的包:提高代码可维护性和可扩展性的神器

🧑‍💻CSDN主页:夏志121的主页 📋专栏地址:Java基础进阶核心技术专栏 目录 🍔 一、包名 🧆 二、类的导入 🥘 三、静态导入 🥘 四、在包中增加类 🍱 五、…

腾讯云服务器地域有什么不同?地域怎么选?

腾讯云服务器地域有什么区别?怎么选择比较好?地域选择就近原则,距离地域越近网络延迟越低,速度越快。关于地域的选择还有很多因素,地域节点选择还要考虑到网络延迟速度方面、内网连接、是否需要备案、不同地域价格因素…

Docker环境下将已运行的容器打包成新的镜像并运行在另一个服务器上的Docker容器中

1、 查看当前运行的容器 1.1、使用root账户登录进入Linux系统中,键入docker ps命令。 2、打包容器为镜像包 2.1、正在运行的容器一行中CONTAINER ID一列下面的字符串就是容器id,复制想要打包的容器ID并执行docker commit 容器id 容器新名称 例如&…

Spring Boot集成Seata利用AT模式分布式事务示例 | Spring Cloud 53

一、前言 通过以下系列章节: docker-compose 实现Seata Server高可用部署 | Spring Cloud 51 Seata AT 模式理论学习、事务隔离及部分源码解析 | Spring Cloud 52 我们对Seata及其AT事务模式有了基础的了解,今天我们通过搭建Spring Boot集成Seata示例…

组合总和--纯垃圾内容别看,浪费时间

1题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选…

[电脑使用技巧]Windows 11安装安卓手机APP

如果你的电脑已经运行Windows 11,经常在电脑和手机来复制内容,那我们为什么不在Windows 上实现安卓APP的应用呢?其实操作真的非常简单,我们接下来给大家分享下如何实现在Windows 11的系统上安装的app。只要按照下面的步骤逐个完成你就可以开启…