时间序列论文-聚类和异常检测(二)

同样摘自知乎的回答:https://www.zhihu.com/question/29507442/answer/1212624591?utm_id=0

正巧之前做过时间序列 的异常检测项目,这里介绍几种尝试过的方法,也算是抛砖引玉 吧,欢迎大家讨论交流~

背景与定义

时间序列异常 检测的目的就是在时间序列中寻找不符合常见规律的异常点,无论是在学术界还是工业界这都是一个非常重要的问题。

应用十分广泛,这里拿“智能运维 ”场景的异常检测应用举例。企业的运维场景中有海量的运维指标数据,如果单纯依靠人力来发现并定位异常,将是十分低效的,所以如果可以开发一个智能运维系统对于异常波动 自动定位,将会提高运维效率。

课题背景与应用举例

现有方法

现有方法可以分为以下四类:

  • 统计方法–通过历史同期的数据分布 来确定当前数据的合理波动范围。例如,k-sigma方法
  • 预测方法 –比较预测值 与真实值的差异,超出阈值认为是异常点。
  • 直接异常检测方法–有很多成熟算法,例如LOF,孤立森林 ,One-class SVM。
  • 深度学习生成方法–对数据降维再升维重构,不能良好复原的点认为是异常点。例如GAN,VAE。
现有方法及优缺点

现有的方法在时间序列数据 中也许直接使用效果不好,这一点我们接下来的实验也能看出。

尝试的方法

  • 统计方法 (ADTK软件包
  • 直接异常检测
  • 预测+统计方法(Prophet+3-sigma)
  • 预测+直接异常检测
  • 深度学习生成方法

–统计方法

异常检测工具包 (ADTK)是一个Python软件包,用于无监督/基于规则的时间序列异常检测。无需基于训练+测试范式,本方法具有极低的时间成本。基本思想是基于历史数据的统计,按照分位数或者阈值或者统计检验 的方法来判断当前点是否异常。

ADTK实验效果

实验效果:模型倾向于把过多的点识别成异常值点

–直接异常检测

这种方法成熟的方法较多,大家可以参照Python的pyod软件包。

One-class SVM实验效果

实验效果:时间序列正常的波动的高峰和低谷被判断为异常,没有充分利用时间维度 的信息。

–预测+统计方法(Prophet+3-sigma)

总体思路:如果数据超出了预测值的合理的波动范围,认为是异常。

总体思路示意图

预测方法采用Prophet实现,3-sigma可以借助历史的波动数据来估计,例如我们将时间往前推数周,得到间隔不同周的同一时刻的数据;将时间往前推1~7天,得到同一周内不同天的同一时刻的数值。计算这些数值的标准差,作为sigma的估计。在Prophet的预测上下界的基础上分别加上和减去3-sigma得到数据波动 的合理范围,超出范围用异常标注。

Prophet+3-sigma实验效果

实验效果:考虑了时间维度的相关性,准确、高效。

–预测+直接异常检测的方法

去除时间序列的趋势和周期性。用预测模型 给出的预测值与真实值相减计算序列的残差,残差不包含周期性和趋势性,可以用作后续的异常检测。

框架示意图

当然为了提升模型的稳定性,我们可以在预测步骤采取多种预测方法,检测部分我们也可以用到pyod里面提供的多种方法,最终投票决定最终的结果。

模型集成
异常检测部分的11个模型介绍
实验效果

实验效果:较好。

–深度学习生成模型

这里我们尝试了LSTM-AE的方法,效果不错。

总体思路:将高维数据压缩 至某一个特定维度大小,再还原至与原始数据 同样的维度。训练模型使得复原数据和原数据差距尽可能小。不能良好复原的点被认为是异常点。


LSTM-AE示意图
实验效果

总结

第3、4、5模型效果较好,对于时间序列检测问题可以尝试。

注:实验结果并非答主一人完成,也感谢当时一起参与项目的小伙伴此为原创内容,转载请注明原文链接

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++ • STL • 力扣】详解string相关OJ

文章目录 1、仅仅翻转字母2、字符串中的第一个唯一字符3、字符串里最后一个单词的长度4、验证一个字符串是否是回文5、字符串相加总结 ヾ(๑╹◡╹)ノ" 人总要为过去的懒惰而付出代价 ヾ(๑╹◡╹)ノ" 1、仅仅翻转字母 力扣链接 代码1展示&…

Gitlab仓库部署

Gitlab仓库部署 一、Gitlab的概述1、gitlab介绍2、gitlab主要功能3、gitlab和github的区别 二、部署环境1、安装依赖环境2、安装Postfix邮箱3、Gitlab优势4、Gitlab工作流程 三、Gitlab部署过程1、Yum安装Gitlab2、配置gitlab站点URL3、启动并访问Gitlab 四、Gitlab具体操作1、…

X86_64函数调用汇编程序分(2)

X86_64函数调用汇编程序分(2) 1 X86_64寄存器使用标准2 leaveq和retq指令2.1 leaveq2.2 retq 3 执行leaveq和retq之后栈的结构3.1 执行leaveq之后栈的结构3.1.1 test_fun_b函数执行leaveq之前的栈结构示意图3.1.2 test_fun_b函数执行leaveq之后的栈结构示…

招投标软件系统技术和服务解决方案

附件为全部文章,敬请下载。 ↑(完全免费,直接免费下载) 软件系统技术和服务解决方案 目录 第一部分 服务方案 6 第一节、 服务方案概述 6 第二节、 服务方式 6 第三节、 服务机构 7 第四节、 服务响应 8 第五节、 服务内容 9 第六…

HarmonyOS应用开发—资源分类与访问

应用开发过程中,经常需要用到颜色、字体、间距、图片等资源,在不同的设备或配置中,这些资源的值可能不同。 应用资源:借助资源文件能力,开发者在应用中自定义资源,自行管理这些资源在不同的设备或配置中的表…

Axure RP 10汉化版下载 Axure RP 10 mac授权码

Axure RP10汉化版是最强大的计划,原型设计和交付给开发人员的方法,而无需编写代码。能够制作逼真的,动态形式的原型。 Axure RP 10汉化版下载 Axure RP 10 mac授权码 RP 10有什么新功能? 1.显示动态面板 使用Axure RP 10&…

列表和字典练习

定义四个学生信息 在Python环境下,用列表定义: >>> stu1[xiaoming,True,21,79.9] >>> stu1[lihong,False,22,69.9] >>> stu1[zhangqiang,True,20,89.9] >>> stu1[EMT,True,23,99.9]如图,定义了四个列表…

React Native 环境配置(mac)

React Native 环境配置(mac) 1.Homebrew2.Node.js、WatchMan3.Yarn4.Android环境配置1.安装JDK2.下载AndroidStudio1.国内配置 Http Proxy2.安装SDK1.首先配置sdk的路径2.SDK 下载 3.创建模拟器4.配置 ANDROID_HOME 环境变量 5.IOS环境1.升级ruby&#x…

清理 Ubuntu 系统的 4 个简单步骤

清理 Ubuntu 系统的 4 个简单步骤 现在,试试看这 4 个简单的步骤,来清理你的 Ubuntu 系统吧。 这份精简指南将告诉你如何清理 Ubuntu 系统以及如何释放一些磁盘空间。 如果你的 Ubuntu 系统已经运行了至少一年,尽管系统是最新的,…

回归与聚类算法系列⑤:逻辑回归

目录 1、介绍 2、原理 输入 激活函数 3、损失及其优化 损失函数 优化 4、API 5、案例:乳腺癌肿瘤预测 数据集 代码 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习&#xff0…

.Net MVC 使用Areas后存在相同Controller时报错的解决办法; 从上下文获取请求的Area名及Controller名

先来说个额外的问题:如何在请求上下文(比如过滤器的中)获取请求对应的Area和Controller 名字?(假设请求上下文对象为 filterContext ): 1. 获取Area名: (string)filterContext.RouteData.DataTo…

Tomcat多实例部署和动静分离

一、多实例部署: 多实例:多实例就是在一台服务器上同时开启多个不同的服务端口,同时运行多个服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供服务。 1.前期准备: 1.关闭防火墙:systemctl …