基于GAN的多变量时间序列污染训练集异常检测

2024-04-11 13:20

本文主要是介绍基于GAN的多变量时间序列污染训练集异常检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图片

论文地址:https://ieeexplore.ieee.org/document/9618824

论文源码:https://github.com/sxxmason/FGANomaly

期刊:IEEE Transactions on Knowledge and Data Engineering

图片

图片

图片

多元时间序列异常检测在结构健康监测、智能运维、量化交易等诸多实际应用中具有巨大的应用潜力。极端不平衡的训练集和噪声干扰使得准确捕获正态数据的分布并检测异常具有挑战性。近年来,人们提出了数十种基于自动编码器(AE)和生成对抗网络(GAN)的方法来学习正常数据的潜在表示,然后基于重建误差检测异常。

然而,现有的基于人工神经网络的方法缺乏针对异常检测任务设计的有效正则化方法,容易过拟合,而基于GAN的方法大多是在无污染的训练集假设下进行训练,这意味着训练集全部由正常样本组成,在实践中很难满足这一要求。

为了解决这些问题,本文提出了一种基于GAN的多变量时间序列异常检测方法FGANomaly(字母F代表Filter)。其核心思想是在训练鉴别器之前用伪标签过滤可能的异常样本,从而尽可能精确地捕获正态数据的分布。此外,我们为生成器设计了一个新的训练目标,使生成器更专注于合理的正常数据而忽略异常。

我们在四个公共数据集上进行了全面的实验,实验结果表明我们的方法在性能和鲁棒性方面都优于基线。

图片

图片

这个框架呈现的是一个三部分的模型,包括生成器、过滤器和鉴别器:

生成器(Generator):生成器由两个主要部分组成:编码器和解码器。输入数据首先被编码器转化成低维编码,然后解码器将这个编码重构回原始数据空间。这个过程生成了重构的样本,并能够计算输入样本和重构样本之间的重构误差。

过滤器(Filter):过滤器接收原始输入和重构误差,它的任务是筛选可能的正常样本。这意味着它可以识别那些与重构样本差异较小的输入样本,将它们作为正常数据。这个过程中筛选出来的样本会被认为是干净的样本,并将被用于训练鉴别器。

鉴别器(Discriminator):鉴别器的工作是区分真实的输入样本和生成器产生的样本。在这个上下文中,‘真实’样本可能指的是过滤器筛选过的样本。鉴别器通过接受这些经过过滤的输入(即过滤后的干净样本)来进行训练,目的是学会辨别出真正的异常样本。

图片

图片

图片

图片

图片

本文提出了一种基于GAN的多元时间序列异常检测方法。针对传统的基于AE和基于GAN的异常检测方法存在的过拟合问题,我们提出了Filter GAN,在训练鉴别器之前对可能的异常样本进行筛选,使模型能够准确地捕捉到正态数据的分布,并为生成器设计了一个特殊的目标Adaptive Weight Loss,在训练过程中根据不同点的重构误差动态分配权重。为了评估所提出的方法,我们在四个公共数据集上进行了综合实验,实验结果表明,我们的模型在性能和鲁棒性方面都具有优势。为了对模型有一些深入的了解,我们做了一个案例研究来可视化结果,结果表明我们的模型学习了正态分布和异常分布之间的清晰边界,从而能够很好地检测异常。此外,还有一些需要改进的地方,如多元时间序列中不同维度之间的信息融合,这是未来工作的重要研究方向。

论文下载地址:

链接:https://pan.baidu.com/s/19vw0ZoVirnGEFcDSdv1Nqw 
提取码:1msi 
--来自百度网盘超级会员V6的分享

这篇关于基于GAN的多变量时间序列污染训练集异常检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

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中非常重要的概念,它决定了在哪里可以访问变量,下面我将用通俗易懂的方式,结合代码示例和图表,带你全面了解Python变量作用域,需要的朋友... 目录一、什么是变量作用域?二、python的四种作用域作用域查找顺序图示三、各作用域详解1. 局部作

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