提高IT运维效率,深度解读京东云AIOps落地实践(异常检测篇)

2023-05-16

基于深度学习对运维时序指标进行异常检测,快速发现线上业务问题

时间序列的异常检测是实际应用中的一个关键问题,尤其是在 IT 行业。我们没有采用传统的基于阈值的方法来实现异常检测,而是通过深度学习提出了一种无阈值方法:基于 LSTM 网络的基线(一个 LSTM 框架辅助几个优化步骤)和无监督检测(神经网络和多种机器学习算法的组合)协同综合分析时间序列。当时间序列显示出清晰的周期性形态的情况下基线表现良好,而无监督检测在效率要求高且周期性不太清晰的情况下表现出色。通过两个并行模块的互补设计,可以在不依赖阈值设定和调整的情况下实现无阈值异常检测。京东云内部实践证明,我们所提出的无阈值方法获得了准确的预测和可靠的检测。

在过去的几年中,aiops业界提出了各种解决异常检测问题的方法。机器学习 (ML) 和深度学习 (DL) 颇受欢迎。在传统的 ML 中,通常采用 K-means、基于密度的空间聚类和隔离森林 (IForest)等聚类方法。除了 ML,由于其强大的逼近能力,使用深度神经网络 (DNN) 进行时间序列预测和异常检测被越来越多的算法同学使用。多层感知器 (MLP) 是一种基本的 DNN 架构,用于评估时间序列上异常检测的性能。此外,循环神经网络 (RNN) 及其变体,如长短期记忆 (LSTM) 网络和门控循环单元 (GRU) 是解决与时间序列相关的问题的常用方法。

对于大多数上述用于解决异常检测的方法,一般是时间序列是否超出预定义的上限和下限。然而,固定阈值无法表征具有内在动态趋势变化的时间序列,从而导致异常分析不准确。此外,由于单个阈值无法涵盖所有​​异常情况,因此该方法也容易遗漏异常。此外,设置上限和下限的过程是一项复杂且重要的任务,总是需要为各种情况定义新的阈值,耗时长且迁移性差。

为了解决上述问题,我们介绍一种新方法,即通过 DL 进行无阈值异常检测。我们的方法不需要预定义上限和下限,而是通过抽取一些易于调整的参数,在小范围内自动搜索适配不同场景的监控数据,进而实现无阈值异常检测:基于 LSTM 网络的基线模块(LnB)和无监督检测模块(UnD)。具体来说,LnB 生成基线,该基线能够以自适应和自动的方式表征时间序列的动态特征。 LnB 的框架是用 LSTM 网络构建的,长短周期识别方法是此框架的贡献之一,它引入了一种纠正机制,可以实现更准确的拟合,生成的基线描述了检测到的时间序列的主要特征,提供了替代传统阈值的限制。 UnD是一种DL和多种ML算法的合并模型,基于投票机制从各个角度检测到的时间序列是否正常。两个模块中的任何一个检测到异常表明发生了异常。两个模块的融合使我们所提出的方法能够以互补和全面的方式有效地分析具有不确定性或各种周期性的时间序列。

时间序列X=(x1, x2, ..., xt),我们的目标是确定下一步 xt+1 的值是否异常。历史值有助于模型学习指标当前和未来的状态,但与预测值距离越近的点对模型预测的影响越大。因此,我们选择使用时间序列 Xt-T:t 的序列,而不是取时间序列的单个步长或整个历史序列来进行异常检测。 T 是选择作为模型训练输入的序列长度。下图1为无阈值异常检测的总体框架包括两个阶段,即训练过程和在线检测。





LnB 和 UnD两个模块都可以单独完成异常检测。但是两个模块有不同的擅长方面,每个模块的结构差异为检测到的时间序列提供了不同维度的检测结果。其中,LnB将更长时期的历史数据输入到模块中,它可以很好地说明特定时间序列的长期行为,但是 LnB 对那些周期性不明确的指标的异常检测能力较弱。相反,UnD 从一个 DL 模型和多个 ML 模型中获得投票结果,对具有不确定性或各种周期性的时间序列具有更强的鲁棒性。此外,UnD 在输入的检测指标的历史数据不足的情况下提供了更合理的检测。

图 1 中的实线箭头表示前向流,而虚线箭头表示反向传播训练。在得到每个模块的检测结果后,根据为每个模块设置的损失函数分别对LnB和UnD进行反向传播训练,LnB和UnD都进行更新,即模型训练。在模型训练之后,LnB 学习生成一个自适应基线,同时,LnB为UnD赋予 基于无监督学习预测未来异常状态的能力。

在线检测不需要训练步骤,所以按入参格式输入时间序列,可直接得到检测结果。这训练和在线检测两个模块的详细介绍如下:





其中 f 表示模型学习所采用的网络,Ti 表示第 i 天的数据。 在训练阶段,a 和 b 会及时随着传入的指标数据自动更新,形成可适应的基线。在测试状态下,y ' final 是我们的最终预测。长短周期识别的重点是引入校正项,为历史上最有价值的“记忆”赋予更多的权重。





如上所述,有两种方法用于识别长短周期,即峰值检测和 SBD距离计算。每天的峰值数量、每天的峰值最大值以及每天第一和第二个最大值的残差是用于识别长短周期,除了这种峰值检查,SBD 是识别长短周期的替代方法。假设我们有两个输入序列 X 和 Y(在我们的例子中,14 天的数据被平均分成两部分)。两个序列的SBD结果可以根据以下等式计算,







其中 SBD 的范围从 0 到 2,在我们的案例中 s=0。 SBD 越小,说明两个序列属于同一周期的相似度越高。

最佳开始时间通过寻找不同时间粒度(如10s 和 1min)下的最佳开始时间来关注拟合精度。待检测的时间序列总是遵循一定的周期性,但根据我们的实验验证,在不同位置选择的开始时间可能会导致拟合精度不同。我们选取均方根误差 (RMSE) 用作优化搜索过程的目标函数:





其中 y' 代表预测结果,而 y 代表基本事实。 k 表示检测到的序列中的第 k 个起始位置。采用L-BFGS通过最小化目标函数实现自动搜索。

基线生成 LnB 的核心过程是基线生成。与RNN相比,LSTM包含了三个门,即遗忘门、输入门和输出门,这种门设计在识别历史中的重要信息方面表现出更好的性能,减轻了对远程历史的依赖和梯度消失。输入数据经 LSTM,输出理论上暗示了正常数据的期望。因此,我们将损失函数训练为:





通过减少实际值和预测值之间的误差,网络可以学习预测时间序列的正常行为。

我们选择 95% 置信区间,计算基线的上限和下限:







LnB 的最后一步是自适应调整,这是实现“自适应”的关键步骤。通过 LSTM 获得的上限和下限是初始基线。然后通过极值点平滑和插值修改初始基线。即初始基线中的所有峰点和谷点都形成了初始上限和下限。然后采用拉格朗日插值进行细粒度数据填充以形成平滑的基线。

DL (GRU) 和 ML(IForest、基于角度的异常值检测-ABOD 和基于集群的局部异常值因子-CBLOF)从多个级别检测异常,不需要标签信息或阈值定义。作为回归任务,GRU 学习给定时间序列的正态分布并输出对未来的预测。与 LSTM 从长期历史中捕捉内在特征的能力相比,GRU 在数据量不足且需要效率的情况下理论上表现良好。与 LnB 不同,UnD 将较短的序列作为输入。因此,UnD 中的 GRU 单元是 LnB 的补充。另一方面,IForest、ABOD 和 CBLOF 是用于异常检测的三种基于 ML 的聚类算法。 UnD的最终检测是GRU、IForest、ABOD和CBLOF通过投票方案的合并结果。

对于 GRU,我们采用与 LnB 相同的损失函数。区别在于输入长度(在下一节中解释)。训练有素的 GRU 会给出预测的准确值 y'。在这里,定义异常权重 (AW) 以确定预测是否异常。





AW 是异常识别的关键决定因素,并且根据经验知识自动学习以满足在我们的案例中检测到的异常百分比应在 1%-3% 以内的条件。当涉及到不同的领域或数据集时,也可以根据经验知识确定 AW。 IForest、ABOD和CBLOF是常用的异常值检测方法,它们的输出结果可以看作是一个描述异常概率的分数。然后将所有 GRU、IForest、ABOD 和 CBLOF 的检测结果编码并拼接成一个 one-hot 矩阵,其中 0 表示正常,1 表示异常,如图 3 所示的示例。接下来,我们得到每个时间步对应的“1”的总数。通过与投票数 n (在我们的例子中 n = 2)的比较,如果“1”的总数不小于 n ,则合并结果被检测为异常,反之亦然。 n 是一个参数,需要通过几个简单的试验来确定,例如逐渐增加值或缩小范围。





通过投票方案的合并结果可以从不同方面揭示内在特征,因为 GRU 的回归结果包含显示增加或减少趋势的精确值,而 ML 结果呈现 0 或 1 仅表示异常与否,但具有更准确的决策,因为这些模型可以利用从附加维度或测量中捕获的信息(例如,基于角度视角的 ABOD 和基于概率视角的 CBLOF)。因此,多个高级算法的合并结果可以充分利用给定的数据进行全面的预测。

我们的模型主要有三个步骤,详细介绍如下:

第一步:数据预处理

LnB和UnD对数据拆分和连接有不同的要求,两个模块的输入数据是不同的。例如,当前时间为 t,时间序列的周期性为 T(如 7 天)。我们的目标是检测 t+1 时刻的值是否异常。在这种情况下,LnB 的输入是过去 2*T 周期(即 14 天)收集的历史数据。选择 2*T 周期的原因是 14 天之前的历史数据重要性较低,如果只收集一个周期的数据,可能会受到异常事件的影响。相反,UnD采用最相关的信息而不是使用长历史,并且选择三个滑动窗口覆盖的序列作为输入数据。三个窗口的长度分别为 30 分钟、60 分钟和 60 分钟。从图4可以看出,UnD输入中有3个段串联,即[Xt-30min:t, Xt+1-1day-30min:t+1- 1day+30min, Xt+1-7days-30min: t+1-7 天+30 分钟]。这种连接提供了一种新的输入结构设计,为特征学习和未来预测提供了最相关的信息。总之,LnB 将过去 14 天的序列作为输入,而 UnD 将过去 30 分钟、1 天前的 60 分钟和 7 天前的 60 分钟作为输入。





数据填充采用 K-NN 作为数据填充方法,以确保所有输入样本的长度相同且可读。数据过滤为保证输入数据的有效性,对输入数据进行平滑过滤,以消除因噪声引起的毛刺。数据转换对训练结果和快速收敛非常重要。在输入训练过程之前,原始数据还需要一个转换过程,包括归一化和对数转换,如(7)所示。





归一化避免了不同维度的副作用,有利于模型快速收敛。此外,它还确保输出不会超过输入的最小值和最大值,因为在输出上实施了指数变换。同时,对数变换可以在不改变数据特征和数据相关性的情况下,减轻方差,平滑变化。

第二步:模型训练

如图 1 中的流程图所示,LnB 和 UnD 都是根据训练数据分别训练的。但是,如上所述,两个模块的输入是不同的。 LnB 将较长的历史数据作为输入,并尝试捕获检测到的时间序列的丰富信息,而 UnD 将最相关但较短的序列部署为训练数据。 UnD 中的GRU和 LnB通过减少第二部分中介绍的损失函数来学习检测到的序列的正常行为。同时,IForest、ABOD 和 CBLOF 学习了无监督聚类模型。上述单元的所有输出都是一步超前的异常检测。

第三步:在线异常检测

在运行时,传入的数据首先进入预处理模块,然后同时进入LnB和UnD。输入数据的格式应与训练阶段一致。如果两个模块的任一结果异常,则提示待检测数据异常。LnB和UnD的融合机制对时间序列进行了全面的检测,降低了潜在异常遗漏的概率。另一方面,LnB 中较长的历史输入和 UnD 中的多模型投票方案有效地避免了将正常的误认为是异常的。

经过京东内部多场景多组数据验证,模型在线上运行的效果评估如下表所示:





此外,可以灵活选择“and”或“or”来整合LnB和UnD的结果。没有统一的规则,要看实际场景的需求。在我们的落地实践场景中,这两个数据集都需要保证召回率,因此我们采取“或”操作,这意味着无论哪个检测到异常都会报警。如果需要较低的警告级别,我们可以选择“和”作为积分运算。选择三个流行的基线 IForest、ABOD 和 CBLOF 进行比较。此外。我们还比较了我们的方法和单独使用 LnB 或 UnD 的方法的结果,如上表所示。从定量比较中,很明显,所提出的方法,即 LnB+UnD 在两者中都获得了最高的 F1 分数数据集。 LnB+UnD 的组合比单独采用 LnB 或 UnD 效果更好。而且我们的模型优于其他三个基线,这也证明了我们并行机制的有效性和必要性。

我们提出的一种用于时间序列分析的无阈值异常检测方法,即 LSTM 构建的 LnB和DL、ML 模型融合机制构建的 UnD,以互补和智能的方式实现异常检测。在具有不同长短周期和变化趋势的真实实践场景的两个数据集上进行了实验,比较结果证明了我们方法的有效性和准确性。

• Threshold-free Anomaly Detection for Streaming Time Series through Deep Learning. ICMLA.

ieeexplore检索:https://ieeexplore.ieee.org/abstract/document/9680175





作者:孙静

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提高IT运维效率,深度解读京东云AIOps落地实践(异常检测篇) 的相关文章

  • intel realsense SR300 深度图像和彩色图像对齐

    深度图像和彩色图像对齐 原因 xff1a 由于RGB图像数据与深度图像数据的空间坐标系是不同的 xff0c 前者的原点是RGB摄像头 xff0c 后者的原点是红外摄像头 xff0c 因此两者会有相应的误差 没对齐之前的结果如下图所示 xff
  • CMakeLIsts.txt与Makefile的区别

    CMake是一个跨平台的安装 编译 工具 可以用简单的语句来描述所有平台的安装 编译过程 他能够输出各种各样的makefile或者project文件 能测试编译器所支持的C 43 43 特性 类似UNIX下的automake CMake 使
  • linux socket编程

    1 网络中进程之间如何通信 进程通信的概念最初来源于单机系统 由于每个进程都在自己的地址范围内运行 xff0c 为保证两个相互通信的进程之间既互不干扰又协调一致工作 xff0c 操作系统为进程通信提供了相应设施 xff0c 如 UNIX B
  • linux环境下如何卸载一路赚钱(yilu/mservice)

    一 删除定时任务 xff1a sudo crontab l u root 2 gt dev null grep v mservice sudo crontab u root 二 停止服务 对于ubuntu以及centos 7的用户 serv
  • 【图像处理】多帧降噪算法

    本文参考论文 xff1a Denoising image sequences does not require motion estimation http citeseerx ist psu edu viewdoc download do
  • VINS-Fusion初始化------IMU与Camera外参旋转标定,IMU角速度偏置标定,重力向量、单目尺度标定

    本文基于VINS Fusion解释VIO系统的初始化 xff0c 包括在线标定IMU Camera的外参旋转 xff0c IMU角速度偏置 xff0c 重力方向 xff0c 单目尺度 单目初始化相比于双目 xff0c 多一个构建SFM问题优
  • 视觉惯性里程计Visual–Inertial Odometry(VIO)概述

    本文主要来自于博客园关于知乎的讨论 链接如下 xff1a Visual Inertial Odometry VIO
  • IBM Was 打补丁记录

    0 拷贝解压ifph52925升级包 通过FTP工具 xff0c 把压缩包传到服务器 xff0c unzip d test01 9 0 0 0 ws was ifph52925 zip 1 停掉was 服务 ps ef grep was k
  • 阿里云服务器远程桌面安装

    阿里云服务器远程桌面安装 环境说明 xff1a CentOS 8 3 一 安装桌面环境 root用户下执行命令 yum grouplist yum groupinstall y span class token string 34 Serv
  • STM32与Futaba遥控器进行S.Bus的通讯程序

    Futaba xff08 日本双叶电子工业 xff0c 戏称 扶他爸 xff09 的遥控器用航模中使用较为广泛的遥控器 S Bus则是Futaba公司提出的舵机控制总线 本篇博文主要以T6K为对象 xff0c 介绍STM32与S Bus协议
  • c++ 小知识点记录

    数据类型 数据类型类型说明符位数取值范围整型int32 2147483648 43 2147483647短整型short int16 32767 43 32768长整型long int32 2147483648 43 2147483647单
  • makefile简明教程

    makefile 主要是编译就是用来编译源文件的 一个工程中的源文件不计其数 xff0c 其按类型 功能 模块分别放在若干个目录中 xff0c makefile定义了一系列的规则来指定哪些文件需要先编译 xff0c 哪些文件需要后编译 xf
  • SLAM 定位和导航

    码一篇文章后面看 xff1a gt https www cnblogs com hiram zhang p 10416081 html
  • 开发工具及环境配置

    一 jdk下载 安装与环境变量配置 1 下载 xff08 1 xff09 打开下载网址Java Downloads Oracle或直接搜索Oracle JDK下载 xff08 2 xff09 根据电脑系统 xff08 win linux等
  • ros2中 用python编写action 的service和client

    第一步 xff1a 定义请求反馈的变量 主要参考官网网站 xff1a Writing an action server and client C 43 43 ROS 2 Documentation Rolling documentation
  • TX2自动刷机视频教程

    TX2自动刷机视频教链接https v qq com x page b0515967lbr html
  • python 中 机器学习算法 --决策树

    文章目录 思维脑图3 1 2 用pandas加载数据集3 1 3 清洗数据集现在计算这些的实际值主队和客队最后一场比赛赢了吗 xff1f 3 2 决策树3 2 1 决策树中的参数3 2 2 决策树的使用 3 3 体育赛事结果预测 3 4 随
  • 结合OPENNI2,Aruco与OPENCV进行视觉定位

    前些时间写了篇文章把我在做这个项目中遇到的问题以及思路说了一下 传送门 http jcs130 iteye com blog 2185533 在上篇文章的思路下作了实现 已经达到了教授的要求 nbsp 首先第一步检测四个角的坐标 经试验 在
  • oracle 备份表

    一 PL SQL备份 xff08 1 xff09 打开PL SQL xff08 2 xff09 在Tools下选择Export Tables xff08 3 xff09 在列表中找到想要备份的表 xff0c 右键选择Export Data
  • 概率机器人——机器人环境交互

    状态 环境特征以状态表征 xff0c 状态是所有会对未来产生影响的机器人及其环境的所有方面因素 概率生成法则 状态转移概率 xff0c 根据条件独立 xff0c 可得到 xff1a 它指出了环境状态作为机器人控制ut的函数是如何随着事件变化

随机推荐

  • cmake、catkin知识点点点点

    GNU GPL GCC G 43 43 GNU xff1a 一个计划 运动 xff0c 目标是创建一套完全自由的操作系统 GPL xff1a GNU通用公共许可协议 xff0c 广泛应用的自由软件许可证 xff0c linux发行时选择了G
  • 大陆ARS-408XX毫米波雷达

    前期准备 xff1a 使用创芯科技CAN分析仪 xff0c 大陆ARS 408XX毫米波雷达 xff0c 电源 xff1a 12DC 24DC 一 安装USBCAN 驱动 1 打开设备管理器 2 鼠标右键 更新驱动 3 手动查找 4 找到自
  • 书籍记录了我技术的成长历程

    看到了有奖征文的内容 xff0c 觉得内容很好 xff0c 很想把自己读过的技术书籍整理一下 xff0c 给自己的技术类图书梳理一下思绪 xff0c 觉得是一件很值得做的事情 xff0c 花了一点时间整理了下 xff0c 与各位博友分享 x
  • 2021-11-01 福州高速公路定位测试有感

    室内定位测试大大小小经历了数十次 xff0c 这次福州的高速公路隧道测试感触颇多 第一 强大的自驱力 xff1a 从测试安排出差伊始 xff0c 团队成员主动提出听从安排 xff0c 积极配合 xff1b 讨论测试计划和方案时 xff0c
  • New Timeline的Toolbar样式设计

    最近在做新版的Timeline xff0c Toolbar Menu 的功能基本完成 xff0c 因此把截图拿出来与各位博友分享一下 新版Timeline HTML版本 主页面 xff1a 这次主要讲解一下Toolbar Menu 的功能
  • VS改大小写的快捷键

    改成小写 xff1a Ctrl 43 U 改成大写 xff1a Ctrl 43 Shift 43 U 记得要选中要修改的一段英文
  • 我的2013,我的CSDN

    2013年是我写CSDN博客的第三个年头了 xff0c 这一年我的博客访问量直线上升 xff0c 这一年我知道了什么是博客专栏 xff0c 这一年我知道如何申请CSDN专家 虽然失败了 xff0c 这一年我从CSDN博客收获了很多很多 xf
  • SQL两表之间:根据一个表的字段更新另一个表的字段

    1 写法轻松 xff0c 更新效率高 xff1a update table1 set field1 61 table2 field1 field2 61 table2 field2 from table2 where table1 id 6
  • 多边形面积计算公式

    function polygonArea points var i j var area 61 0 for i 61 0 i lt points length i 43 43 j 61 i 43 1 points length area 4
  • 《最重要的事,只有一件》读书笔记

    背景 每天都在忙忙碌碌中度过 xff0c 感觉到很累 xff0c 但仔细思考一下好像也没有收获 仔细想一想 xff0c 在每天之中 xff0c 大脑主动或被动的接受了太多的信息 xff0c 如果没有给信息分出轻重缓急 xff0c 整理归类
  • table合并单元格colspan和rowspan

    span style font family none code span style background color rgb 255 255 0 span style font family none code span style f
  • jQuery两个稳定版本的比较

    jquery历经了多个版本的更新 xff0c 版本上的比较貌似没什么必要性 xff0c 一般来说新的版本会比旧的版本各方面都略有提升 xff0c 但由于新版中增加了各种新的功能 xff0c 难免会引起bug的发生 评估一个版本是否适合当前开
  • 室内定位简介

    室内定位定义 xff1a 室内定位是指在室内环境中实现位置定位 xff0c 主要采用无线通讯 基站定位 惯导定位等多种技术集成形成一套室内位置定位体系 xff0c 从而实现人员 物体等在室内空间中的位置监控 室内定位需求 xff1a 在室外
  • 命令行提交代码到gitLab服务器

    1 创建项目 xff0c 前提是gitLab服务器已经搭建完成 xff0c 在gitLab个人账户下创建一个项目 xff0c 项目名称自己定义 xff0c 如图 xff1a 2 拷贝本地代码到指定目录 xff0c 一般自己创建一个固定的代码
  • VS 附加到进程调试技巧

    有些时候碰到自己开发的程序嵌入到别人的框架中 xff0c 而在接口的地方出了问题 xff0c 而又不方便将自己的模快加入到别人的工程中 有很多相关的文件 xff0c 还有mster页面等 xff0c 这个时候VS的附加到进程调试变得不可或缺
  • Request和Response详解

    Request 和 Response 对象起到了服务器与客户机之间的信息传递作用 Request 对象用于接收客户端浏览器提交的数据 xff0c 而 Response 对象的功能则是将服务器端的数据发送到客户端浏览器 一 Request对象
  • 人最宝贵的东西是生命

    钢铁是怎样炼成的 人最宝贵的东西是生命 生命属于人只有一次 一个人的生命是应该这样度过的 当他回首往事的时候 他不会因虚度年华而悔恨 也不会因碌碌无为而羞耻 这样在临死的时候 他才能够说 39 我的生命和全部的经历 都献给世界上最壮丽的事业
  • 树莓派卡在开机界面循环要求输入密码,提示cannot currently show the desktop

    这个必须得记录下来 xff0c 太坑了 昨天树莓派用着好好的 xff0c 突然就拷贝ssh拷贝东西进去拷贝不成功 xff0c VNC登陆图形界面 xff0c 输入密码后又循环弹出输入密码解密 xff0c 还提示 cannot current
  • FreeRTOS----debug之任务的挂起和恢复实验,任务无法切换

    任务的挂起和恢复 debug xff1a 背景 xff1a 有两个Task Task1为LED闪烁任务 Task2为挂起恢复LED任务 调试程序遇到的问题 xff1a LED灯闪烁任务不能正常执行 一直常亮 原因 xff1a LED闪烁任务
  • 提高IT运维效率,深度解读京东云AIOps落地实践(异常检测篇)

    基于深度学习对运维时序指标进行异常检测 xff0c 快速发现线上业务问题 时间序列的异常检测是实际应用中的一个关键问题 xff0c 尤其是在 IT 行业 我们没有采用传统的基于阈值的方法来实现异常检测 xff0c 而是通过深度学习提出了一种