USAD: 多元时间序列的无监督异常检测

2024-06-20 14:04

本文主要是介绍USAD: 多元时间序列的无监督异常检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

USAD: 多元时间序列的无监督异常检测

原创 小王搬运工 时序课堂 2024-06-20 10:43 四川

图片

论文地址:https://dl.acm.org/doi/abs/10.1145/3394486.3403392

论文源码:https://github.com/manigalati/usad

期刊:KDD '20: Proceedings of the 26th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining

图片

图片

这篇论文介绍了一种名为USAD(UnSupervised Anomaly Detection for multivariate time series)的新型无监督异常检测方法,旨在应对IT系统监控中的挑战。随着IT操作规模和复杂性的增长,传统的基于专家的监控方法已不再适用。USAD利用对抗训练的自编码器架构,能够在没有标签数据的指导下学习,并通过放大异常输入的重建误差来检测异常。论文通过五个公共数据集的实验验证了USAD的鲁棒性、训练速度和高异常检测性能。此外,通过在Orange公司的专有数据上进行的可行性研究,证明了USAD在可扩展性、稳定性和高性能方面满足了工业应用的需求。USAD的提出,为大规模基础设施的自动化监控提供了一种有效的解决方案。

图片

图片

问题定义 (Problem Formulation)

  • 时间序列:论文首先定义了单变量和多变量时间序列的概念,区分了它们在数据点上的不同。

  • 异常检测任务:描述了在给定时间序列数据集的情况下,如何通过训练数据来识别异常点。

自编码器基础 (Autoencoder Basics)

  • 自编码器结构:介绍了自编码器由编码器和解码器组成,编码器将输入数据映射到潜在空间,解码器则将潜在空间映射回输入空间。

  • 重建误差:使用重建误差作为异常分数的指标,高误差意味着可能是异常点。

对抗训练 (Adversarial Training)

  • 对抗训练概念:提出了USAD方法,结合了自编码器和对抗训练,通过训练一个模型来识别输入数据是否包含异常,从而提高重建质量。

  • 训练框架:USAD采用两阶段训练框架,第一阶段是自编码器训练,第二阶段是对抗训练。

USAD方法 (USAD Method)

  • 架构组成:USAD由一个编码器和两个解码器组成,形成两个共享相同编码器的自编码器AE1和AE2。

  • 训练过程:详细描述了USAD的两阶段训练过程,包括自编码器训练和对抗训练的目标和方法。

实现细节 (Implementation Details)

  • 数据预处理:说明了数据标准化和分割成时间窗口的方法。

  • 训练和检测算法:提供了USAD训练和检测算法的伪代码,包括权重初始化、训练循环、损失计算和参数更新。

异常检测 (Anomaly Detection)

  • 异常分数:定义了异常分数的计算方式,以及如何使用α和β参数来平衡误报和漏报。

网络架构 (Network Architecture)

  • 编码器和解码器:描述了编码器和解码器的具体网络结构,包括使用的层类型和激活函数。

优化器 (Optimizer)

  • 优化方法:提到了使用Adam优化器进行训练,并使用了默认的学习率。

图片

图片

图片

图片

在这篇论文中,作者提出了USAD,一种创新的无监督异常检测方法,专门针对多变量时间序列数据。USAD方法结合了自编码器的架构和对抗训练的策略,不仅提高了异常检测的准确性,还保持了训练过程的稳定性和快速性。通过在多个公共数据集上的广泛实验,USAD展现了其优越的性能,尤其在F1分数上超越了现有技术。此外,USAD的快速训练能力、对参数选择的鲁棒性以及可调节的检测灵敏度,使其成为工业环境中自动化IT系统监控的理想选择。论文还通过Orange公司的专有数据进行了可行性研究,进一步证明了USAD在实际应用中的潜力和效果。尽管在部署过程中可能会遇到一些挑战,如数据收集的纯净性问题,但USAD无疑为自动化监控提供了一个有前景的方向,并为未来的研究和应用奠定了坚实的基础。

这篇关于USAD: 多元时间序列的无监督异常检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1078342

相关文章

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

Java空指针异常NullPointerException的原因与解决方案

《Java空指针异常NullPointerException的原因与解决方案》在Java开发中,NullPointerException(空指针异常)是最常见的运行时异常之一,通常发生在程序尝试访问或... 目录一、空指针异常产生的原因1. 变量未初始化2. 对象引用被显式置为null3. 方法返回null

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

redis在spring boot中异常退出的问题解决方案

《redis在springboot中异常退出的问题解决方案》:本文主要介绍redis在springboot中异常退出的问题解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴... 目录问题:解决 问题根源️ 解决方案1. 异步处理 + 提前ACK(关键步骤)2. 调整Redis消费者组

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

Java内存区域与内存溢出异常的详细探讨

《Java内存区域与内存溢出异常的详细探讨》:本文主要介绍Java内存区域与内存溢出异常的相关资料,分析异常原因并提供解决策略,如参数调整、代码优化等,帮助开发者排查内存问题,需要的朋友可以参考下... 目录一、引言二、Java 运行时数据区域(一)程序计数器(二)Java 虚拟机栈(三)本地方法栈(四)J

解决Java异常报错:java.nio.channels.UnresolvedAddressException问题

《解决Java异常报错:java.nio.channels.UnresolvedAddressException问题》:本文主要介绍解决Java异常报错:java.nio.channels.Unr... 目录异常含义可能出现的场景1. 错误的 IP 地址格式2. DNS 解析失败3. 未初始化的地址对象解决