特征提取和深度学习的KPI异常检测方法—组合模型


方案来自于首届AIops挑战赛亚军团队

简介

  • 问题场景就是运维中kpi异常检测,希望可以提高检测的准确率。
  • 该团队的思路是提取特征然后用集成学习的方法将异常检测转变为二分类问题,其思路与Opprentice很像。(可以参考我另外一篇博文Opprentice

挑战

  • 负样本稀少
  • KPI异常类型多样
  • KPI三种形态:周期波动/稳定/不稳定

总体设计

在这里插入图片描述

数据预处理

  • 异常数据剔除。使用Grubbs准则,异常点并不一定是官方标记的异常点。
  • 数据标准化处理。为生成不同的特征,有选择地使用Z-score和Min-Max方法对数据进行标准化和归一化。
  • 缺失值处理。在尝试了剔除方法、均值方法、插值方法等补全方法后,最终选择均值进行补全。

特征提取

特征提取的好坏决定了机器学习的上限,最终选择了原始值特征、统计特征、拟合特征和小波分析特征。通过调整时间窗大小以及提取方法的参数,本模型共提取了61个时序特征。
在这里插入图片描述
对于训练集,每个数据点都有61维度的特征可被用于模型训练,在线检测阶段,每获取到一个数据点需要利用历史窗口数据计算当前点的61维度特征。

数据均衡

问题:正负样本极度不均衡,对模型的训练效果会产生较大影响
解决方法:

  • 欠采样:对非异常数据进行欠采样(随机抽样方法)
  • 过采样:对异常点数据进行过采样
    在这里插入图片描述

模型训练

  1. 逻辑回归
    在这里插入图片描述
    按照官方标准,其在测试集的总得分是0.693049243
  2. 小波分析
  • 小波分析在时间序列研究中,主要用于消噪和滤波,并能将序列数据在常规尺度上无法被观测到的特征体现出来。与傅里叶分析不同,小波分析具有时-频多分辨率分析的功能。基于此,通过离散小波变换(DWT)将原始KPI序列分解成多个信号序列,并对分解后的序列进行重建。
  • 对原始序列进行5级小波分解,左边为低频信号(近似部分),右边高频信号(细节部分)
  • 异常点的分布在细节序列中分布较明显,异常点以较大概率落在了细节部分的高频成分。从而,可以将KPI时间序列的异常点检测转化为细节序列的异常点检测。通过选取合适时间窗,对时间窗内的数据进行小波分解和重构,提取细节部分序列,并采用Grubbs准则对时间窗内的异常点进行识别,如果当前时刻点在异常点集合中,就认为当前时刻检测异常。
  • 在小波分析过程中,小波基函数、信号扩展模式、小波分解的层数以及时间窗的大小选择将会影响最终的异常检测效果。为此,本文在KPI训练中,以训练集得分最高为目标,通过网格搜索的方法对每条KPI提取最佳的小波分析参数,并用于在线检测
    在这里插入图片描述
    利用官方评分标准,小波分析在测试集上的总得分是0.649976063。从图中可以看出,小波分析在不同KPI上的表现各异。可见,小波分析并非对所有KPI都适用。
  1. 随机森林
    在这里插入图片描述
    其在测试集上的总得分是0.701142416,该得分在四种基础算法中得分最高。
  2. BiLSTM神经网络
    在这里插入图片描述
    难点在于超参数的有效选择,由于计算资源的问题,我们选择了人工优化方法,在数据覆盖较全的场景下训练和测试有较好的表现。其在决赛测试集上的总得分是0.691123881。

模型综合

以上四个模型在不同KPI上表现各异,为了获取更加准确的异常检测,本文采用加权投票模型对四个模型进行了综合
在这里插入图片描述
回溯决赛结果,四个模型的单模型得分都在00.64~0.66,但是综合得分却达到了0.771397,可见,模型综合取得了一定的成效,能显著减少误判。
在这里插入图片描述

发布了79 篇原创文章 · 获赞 8 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_34219959/article/details/102859646