《异常检测——从经典算法到深度学习》29 EasyTSAD: 用于时间序列异常检测模型的工业级基准

news2024/11/18 1:48:23

《异常检测——从经典算法到深度学习》

  • 0 概论
  • 1 基于隔离森林的异常检测算法
  • 2 基于LOF的异常检测算法
  • 3 基于One-Class SVM的异常检测算法
  • 4 基于高斯概率密度异常检测算法
  • 5 Opprentice——异常检测经典算法最终篇
  • 6 基于重构概率的 VAE 异常检测
  • 7 基于条件VAE异常检测
  • 8 Donut: 基于 VAE 的 Web 应用周期性 KPI 无监督异常检测
  • 9 异常检测资料汇总(持续更新&抛砖引玉)
  • 10 Bagel: 基于条件 VAE 的鲁棒无监督KPI异常检测
  • 11 ADS: 针对大量出现的KPI流快速部署异常检测模型
  • 12 Buzz: 对复杂 KPI 基于VAE对抗训练的非监督异常检测
  • 13 MAD: 基于GANs的时间序列数据多元异常检测
  • 14 对于流数据基于 RRCF 的异常检测
  • 15 通过无监督和主动学习进行实用的白盒异常检测
  • 16 基于VAE和LOF的无监督KPI异常检测算法
  • 17 基于 VAE-LSTM 混合模型的时间异常检测
  • 18 USAD:多元时间序列的无监督异常检测
  • 19 OmniAnomaly:基于随机循环网络的多元时间序列鲁棒异常检测
  • 20 HotSpot:多维特征 Additive KPI 的异常定位
  • 21 Anomaly Transformer: 基于关联差异的时间序列异常检测
  • 22 Kontrast: 通过自监督对比学习识别软件变更中的错误
  • 23 TimesNet: 用于常规时间序列分析的时间二维变化模型
  • 24 TSB-UAD:用于单变量时间序列异常检测的端到端基准套件
  • 25 DIF:基于深度隔离林的异常检测算法
  • 26 Time-LLM:基于大语言模型的时间序列预测
  • 27 Dejavu: Actionable and Interpretable Fault Localization for Recurring Failures in Online Service Systems
  • 28 UNRAVEL ANOMALIES:基于周期与趋势分解的时间序列异常检测端到端方法
  • 29 EasyTSAD: 用于时间序列异常检测模型的工业级基准

相关:

  • VAE 模型基本原理简单介绍
  • GAN 数学原理简单介绍以及代码实践
  • 单指标时间序列异常检测——基于重构概率的变分自编码(VAE)代码实现(详细解释)

29. EasyTSAD: 用于时间序列异常检测模型的工业级基准

论文名称:UNRAVEL ANOMALIES: AN END-TO-END SEASONAL-TREND DECOMPOSITION APPROACH FOR TIME SERIES ANOMALY DETECTION
会议期刊:目前还未发表,
论文地址:arxiv | 阿里云盘
源码地址:https://github.com/dawnvince/EasyTSAD

29.1 论文内容概述

这篇论文介绍了一个名为TimeSeriesBench的综合基准测试平台,用于评估单变量时间序列异常检测模型。

主要贡献:

  • 在线排行榜:论文介绍了第一个时间序列异常检测算法的在线排行榜,从多个维度(如训练、推理、评估和数据集)增强了现有的评估框架。这帮助行业专家选择最佳的学术算法,并提供了工业级的评估方法。

  • 最先进方法的评估:使用TimeSeriesBench评估了多种知名的最先进(SOTA)异常检测方法。结果提供了新的见解和未来优化的方向。

  • EasyTSAD工具包:开发并发布了名为EasyTSAD的全面评估工具包,该工具包使用Python构建,提供了数据处理、模型训练和评估的一站式解决方案。该工具包是开源的,旨在加速现有异常检测算法的优化。

  • 精确的异常标注:为了解决现有公共数据集中异常标注不准确的问题,作者与一家全球公司合作,精细标注了在线系统中的异常。这些数据集作为TimeSeriesBench的一部分公开提供。

29.2 论文核心方法

29.2.1 banchmark 概述

工业级问题和TimeSeriesBench关于基准单变量时间序列异常检测算法的解决方案。
在这里插入图片描述
如图所示,从上往下看:

  • 首先完成 offline training 离线训练,这个过程中需要解决的是当前学习模式的负载问题,包括存储负载与维护的成本;而本论文提出的 benchmark 的解决方案是提 出学习模式分类法集成成本友好型学习模式。
  • 其次在线检测过程,这个过程中需要解决的是原算法在全新服务/系统上的表现没有可以提及。本论文的解决方案是集成零样本模式以评估模型在不可见序列上的性能。
  • 最后需要对算法的效果进行评估,需要解决的问题是现有评估指标的假设与实际需求脱节,本论文的解决方法是在实践原则指导下修订评价标准(在后面的内容中会提到基于best f1-score 以及基于事件发生的评估方法等)。

然后图片的右边进行了一个包裹操作,大概的意思就是,前面提到的所有,都可以在我这里(TimeSeriesBench)解决。

29.2.2 异常类型

前言、背景、动机我们统统跳过了,真的看麻了。
不过这里作者对异常类型的概述可以参考一下。

根据行为驱动的分类法,异常类型可以粗略地分为 点异常(Point-wise)模式异常(Pattern-wise)(图2)。 点异常指的是在单个时间点或非常短的时间内出现的峰值或故障等意外事件时间段。模式异常值表示跨越特定时间范围的异常子序列,通常表现为数据中的不协调或不一致。

在这里插入图片描述

29.2.3 学习模式(learning schema)

这里需要注意作者概述的几个重要的概念,这些对于后面源码解析、配置参数关系密切。

朴素模型(Naive schema)。在这种模式下,我们输入一个时间序列用于训练/拟合模型,并且专门使用训练好的检测器在该特定序列上进行在线检测。直观地说,这使得模型能够根据足够的数据对时间模式做出更精确的描述。然而值得注意的是,单个序列的数据量往往不足。

一体化架构(All-in-one schema)。在这种模式下,仅使用数据集中的所有序列训练一个统一的模型实例,然后在数据集的所有序列中实时应用该模型进行异常检测。这种架构使模型能够接触各种系列中嵌入的更多模式,从而为模型提供了额外的机会来学习时间序列之间的共同且固有的特征。然而,由于不同系列对异常的定义不同,这可能会导致在线检测异常时(即特定曲线中存在的异常不一定被视为其他曲线中的异常)模型被相互矛盾的信息所混淆。一些新的方法已经采用了这种受实际需求驱动的架构。

零样本架构(Zero-shot schema)。在零样本模式下,整个数据集被分成两个不相交的子集。一个子集用于模型训练,另一个用于评估检测性能。这种架构是在实际考虑的基础上设计出来的。具体来说,它处理了这样一个情况:系统在没有历史数据的情况下新部署,并且需要一个健壮且适应性强的模型来穿越这个差距。这要求模型具有更高的能力来捕捉时间序列的内在表示。

29.2.4 评价标准

论文中提出的评估标准主要是针对实时异常检测需求。这个与我们前面提到的 Bagel,Donut,LOF-VAE 是一致的,需要考虑检测延迟等,也就是我们前面提到过的 best F1-score 的计算法和准许 delay 的方法。

在这里插入图片描述

此外还有基于事件 event-wise 的评估方法,这个值得小伙伴们研究研究,如上图所示,如果一个 event 发生后,仅仅提供1个异常点,那么我们可以认为这个是突刺,但是如果出现多个连续的异常,我们可以认为这是一个事件event。在实际需求中,通常情况下我们也会更加关注 event-wise 的评估方法。我们可以认为异常发生,会带有一定长度的影响范围,而event-wise 就是指这种情况。

29.2.5 算法效果比较

这里我们主要需要知道两方面内容:

  • 本benchmark给小伙伴们实现了很多算法
  • 如果你们有新的算法,可以基于本benchmark直接评估

当然,还有一层还有就是,小伙伴们引用本benchmark记得在reference中明确指出。

在这里插入图片描述
这里我们不做介绍,感兴趣的小伙伴们可以下载源码,跑一下这些实验。

当然,也可以基于这个benchmark开发自己的算法,跑完所有的实验后记得发一篇论文,然后也贴出这样的表格,表示自己的算法也很优秀。

29.3 源码阅读

前往 https://github.com/dawnvince/EasyTSAD 可以查看源码内容。这里我不关注计算细节,主要希望通过其中某一两个算法介绍整个benchmark的运行流程。

我们这里选中的是 AR 算法。

29.3.1 环境准备

首先将源码 clone 到本地,并且前往 https://github.com/CSTCloudOps/datasets 克隆数据集到我们的项目中,最后的目录文件如下:
在这里插入图片描述
解下安装相关依赖
首先需要安装 toml ,避免出现 No module named 'toml' 这样的错误提示。

$ pip install toml

同样地,需要安装 poetry

$ pip install poetry

安装完成以后,我们需要使用 poetry 安装相关依赖到虚拟环境中。

$ poetry install

在这里插入图片描述
接着点击运行 Examples/run_baseline/run.py 还是报错如下:
在这里插入图片描述
这个是因为找不到 datasets 目录导致的。需要修改如图所示的目录

在这里插入图片描述
建议使用绝对路径,并注释掉后面一部分代码(用于指定特别数据集的指定KPI),如下图所示:

在这里插入图片描述
如果还提示别的缺包,使用 pip install 命令安装即可,最终执行效果大概如下:

在这里插入图片描述
执行的过程中,可以使用 nvidia-smi 命令查看 GPU 显存使用情况。
在这里插入图片描述
最后输出结果大概如下:

在这里插入图片描述
可以查看结果文件中的评分,以及基于事件识别的绘图等等,具体内容请自行了解。

29.4 基于 benchmark 研发自己的算法

这部分内容请参考 https://github.com/dawnvince/EasyTSAD/tree/main 的 README 内容,按照步骤逐个完成即可。比如准备数据,编辑配置文件,编写自己方法的主要类,继承于 BaseMethod 类等。

其他参考内容包括:

  • https://github.com/dawnvince/EasyTSAD/tree/main/Examples/run_your_algo
  • https://dawnvince.github.io/EasyTSAD/

也可以考虑直接在AR的基础上进行修改,然后完成自己的模型结构开发,优化过程开发等等。

此外,需要注意的是,作者对原始数据的缺失点都进行了填充,所以如果小伙伴们的算法需要关注 “由于缺失引起的异常” 的话,请不要使用这个 benchmark。

其他一些配置细节这里不再重复介绍,需要根据需要结合文档进行调整。

29.5 总结

前面在第24章的时候,提到过 benchmark 的作用,也提到过需要发paper的小伙伴们可以考虑这方面的工作,另外开辟一条赛道,个人认为这篇论文就是一个很好的例子,尽管目前还没有正式发表,但总体而言这篇论文还是很值得研究学习。

这篇论文在提供一个全面且实际的评估平台方面做出了重要贡献,其提出的多样化数据集、新评估标准和多种学习模式为时间序列异常检测的研究和应用提供了宝贵的资源和指导。

最后我们总结一下这篇论文值得参考的地方:

  • 项目开源。小伙伴们可以基于这个开源的项目学习不同的算法实现,比如 Donut 等;(个人认为这个是最重要的,尤其是对于不太会动手写代码的小伙伴们来说,先有个模板用于学习非常重要)
  • 新的评估方法(有些方法已经提过),相关方法的实现也便于我们使用。比如我们可以基于某个评估指标来评估自己的算法,并且要注意 “自圆其说”,比如我提出 “xxx” 算法,这个算法主要是针对 “event” 类的异常检测,然后再解释为什么自己的算法在这方面表现好等等。
  • 多种学习模式。包括零样本学习和全样本学习,以模拟不同的实际应用环境。这对于研究在不同数据可用性条件下模型的性能具有重要意义。
  • 数据集的多样性。TimeSeriesBench使用了多种数据集,涵盖了广泛的应用场景。这些数据集来源于不同的行业和应用,具有很高的多样性和代表性,有助于评估模型在不同环境下的泛化能力。
  • 工业级基准测试框架。该论文提出的TimeSeriesBench是一个工业级的基准测试平台,涵盖了多种实际应用场景。这为研究人员提供了一个统一的评估标准,可以帮助他们在更真实的环境中测试和比较各种算法的性能。

希望能帮到各位小伙伴 ~ 万分感谢各位的点赞、评论与关注支持 ~

在这里插入图片描述

Smileyan
2024.05.31 23:24

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

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

相关文章

LC 旋转 - 模拟对象

原文链接 链接 液晶 (LC) 旋转网格属性允许您以 theta、phi 为单位指定空间变化的 LC 导向。 液晶由杆状分子结构组成,这些分子结构具有相对于长轴的旋转对称性。因此,液晶具有空间变化的单轴光学特性。 相对于分子长轴和分子短轴的折射率称为非寻常 ne …

Mybatis数据加密解密

文章目录 Mybatis数据加密解密一、自定义注解二、自定义参数处理拦截器结果集拦截器加密解密 Mybatis数据加密解密 方案一:Mybatis拦截器之数据加密解密【Interceptor】 拦截器介绍 Mybatis Interceptor 在 Mybatis 中被当作 Plugin(插件),不知道为什么…

注意力可视化代码

读取网络层输出的特征到txt文件,arr为文件名 def hot(self, feature, arr):# 在第二维(通道维)上相加summed_tensor torch.sum(feature, dim1, keepdimTrue) # 结果形状为 [1, 1, 64, 64]selected_matrix summed_tensor.squeeze(1) # 移除…

【RS】哨兵系列新网站无法下载的问题及解决办法(Sentinel-2)

最近有些小伙伴留言说哨兵数据无法下载,网站打开后会有一层蒙版,无法选取研究区等信息,今天就跟大家分享一下如何解决这个问题。还知道如何下载的小伙伴可以移步到之前的文章:【RS】欧空局Sentinel-2卫星数据下载(哨兵1、2、3、5P…

shopee签名x-sap-ri、x-sap-sec算法还原

最新版签名,免账号登录成功率百分百,需要可d 两种方式base64 MTQzMDY0OTc3OA QXVndXN0MjItZnF4

JS【详解】快速排序

快速排序的时间复杂度为 O(n2) 排序流程 1、首先设定一个分界值(比如数组最中间的元素),通过该分界值将数组分成左右两部分。 2、将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。 3、对左侧和右侧的…

【网络层】IP地址基础 与 子网掩码

文章目录 IP地址基础IP地址概念IP地址分类公网地址和私网地址 子网掩码子网掩码作用默认子网掩码网络地址、主机地址、广播地址 IP地址基础 IP地址概念 IP地址:IP Address 在网络中,通信节点都需要有一个IP地址 IP地址以点分十进制表示,有…

【QEMU中文文档】1.1 支持的构建平台

本文由 AI 翻译(ChatGPT-4)完成,并由作者进行人工校对。如有任何问题或建议,欢迎联系我。联系方式:jelin-shoutlook.com。 原文:Supported build platforms — QEMU documentation QEMU 旨在支持在多个主机…

prometheus docker部署

1.安装Docker sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors":["https://hub-mirror.c.163.com"] } EOF export DOWNLOAD_URL"https://hub-mirror.163.com/docker-ce" curl -fsSL https://ge…

携手亚马逊云科技,神州泰岳如何打通生成式AI落地最后三公里

导读&#xff1a;神州泰岳成为首批获得亚马逊云科技生成式AI能力认证的合作伙伴。 “过去6年来&#xff0c;在与亚马逊云科技的合作过程中&#xff0c;我们大概签约了300家以上的中国出海企业。”近日在一次沟通会上&#xff0c;神州泰岳副总裁兼云事业部总经理刘家歆这样向媒…

springboot编写日志环境搭建过程

AOP记录日志 AOP记录日志的主要优点包括&#xff1a; 1、低侵入性&#xff1a;AOP记录日志不需要修改原有的业务逻辑代码&#xff0c;只需要新增一个切面即可。 2、统一管理&#xff1a;通过AOP记录日志可以将各个模块中需要记录日志的部分进行统一管理&#xff0c;降低了代…

Linux 深入讲解自动化构建工具

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 Linux一系列的文章&#xff08;质量分均在93分…

水滴式粉碎机:多功能饲料粉碎设备

饲料粉碎机是一种专门用于将各种饲料原料进行粉碎处理的机械设备。无论是玉米、小麦等谷物&#xff0c;还是豆粕、鱼粉等动物性原料&#xff0c;甚至是一些粗纤维含量较高的秸秆、牧草等&#xff0c;都可以经过饲料粉碎机的处理&#xff0c;变成适合畜禽消化吸收的精细饲料。这…

solr-8.11.3

https://solr.apache.org/downloads.html https://archive.apache.org/dist/solr/solr/ F:\Document_Solr.apache.org\solr-8.11.3\bin Microsoft Windows [版本 10.0.19045.2965] (c) Microsoft Corporation。保留所有权利。 C:\Users\Administrator>F: F:\> F:\>…

AI播客下载:a16z (主题为AI、web3、生物技术等风险投资)

a16z播客是一个综合性的科技和创新领域的媒体平台&#xff0c;通过多种节目形式和丰富的内容&#xff0c;为广大听众提供了一个了解最新科技趋势和创新思维的窗口。a16z播客是由安德里森霍罗威茨&#xff08;Andreessen Horowitz&#xff0c;简称a16z&#xff09;推出的一个科技…

计算机毕业设计hadoop+spark知识图谱课程推荐系统 课程预测系统 课程大数据 课程数据分析 课程大屏 mooc慕课推荐系统 大数据毕业设计

本科毕业设计&#xff08;论文&#xff09; 题目&#xff1a;基于 Hadoop和Spark的课程推荐系统的设计与实现 烟台南山学院教务处 二〇二四年六月 院 系&#xff1a;科技与数据学院数据科学与软件工程系 专 业&#xff1a;数据科学与大数据技术 班 级&#xff1a;数…

11Linux学习笔记

Linux 实操篇 目录 文章目录 Linux 实操篇1.rtm包&#xff08;软件&#xff09;1.1 基本命令1.2 基本格式1.3安装rtm包1.4卸载rtm包 2.apt包2.1 基本命令结构2.2 常用选项2.3常用命令 1.rtm包&#xff08;软件&#xff09; 1.1 基本命令 1.2 基本格式 1.3安装rtm包 1.4卸载r…

Golang | Leetcode Golang题解之第123题买卖股票的最佳时机III

题目&#xff1a; 题解&#xff1a; func maxProfit(prices []int) int {buy1, sell1 : -prices[0], 0buy2, sell2 : -prices[0], 0for i : 1; i < len(prices); i {buy1 max(buy1, -prices[i])sell1 max(sell1, buy1prices[i])buy2 max(buy2, sell1-prices[i])sell2 m…

如何让数据标注

1.用Anacoda创建一个新的虚拟环境 2.进入虚拟环境 conda activate stu_data&#xff08;就是刚才创建的虚拟变量的名称&#xff09; 3.在此环境中安装labelimg pip install labelimg 4.进入labelimg 直接输入 labelimg 快捷键&#xff1a;D&#xff1a;下一个图片 A&#xff1a…