【云驻共创】火遍网络的KPI异常检测到底什么梗?

乌龟哥哥 发表于 2022/01/28 10:41:19 2022/01/28
【摘要】 华为网络设备KPI异常检测解决方案,总结常用方法的技术流派,为大家做异常检测提供启发和帮助。欲识庐山真面目,请向此山行

目录


1. 网络KPI介绍

1.1 什么是KPI?

KPI可以看作是一种时间序列,时间序列包含时间戳以及时间戳上对应的取值。(例如股票走势,气温变化,心电图等等都可以被看做时间序列)

1.2 什么是网络KPI?

网络设备在运行的过程中会持续的产生大量的数据,例如告警,KPI,日志,MML等等。KPI是能够反映网络性能与设备运行状态的一类指标。比较常见的KPI指标有:

KPI类别 举例 特征
1 成功率类指标 附着成功率,下载成功率 整体上相对平稳
2 次数类指标 请求次数,错误码次数 突变频率较多
3 时延类指标

网络设备KPI也可以看做是时间序列。

KPI的规模庞大,一个网元的原始KPI 5000+,衍生KPI约00+

KPI的表现形式也各不相同,例如

image.png

2. 异常检测步骤

网络KPI异常检测是工程师的‘眼睛’,帮助工程师看到问题要识得庐山真面目,必须采用有效的KPI异常检测方法

2.1 举例说明

比如说我们要预测2019年11月29日1:00的数据。我们要它进行异常检测,那么我们可以取11月29号0:00到0:55分的历史数据。进行构造模型。记作F,此模型即可以给出11月29日1:00预测的下载成功率是92.7,得到数据之后与1:00的真实结果71.12进行对比。用残差的方式进行相见,可以得到相减值为21.58,假如说我们定义的异常门限为10。则可以发现残差已经大于门限,此时即可以上报异常。

异常检测流程

遇到的难点有:

  1. 时间序列相对复杂
  2. 函数F()构造复杂

这就需要我们有有效的KPI异常检测方法

2.2 异常表现形式

2.2.1 常见异常

成功率指标在某一时刻突降

错误码指标在某一时刻突增

可以看到在图片中出现了明显的突增(错误码)和突降(成功率)
image-20220127001909732

2.2.2更复杂的异常表现形式

下图案例来自于某一设备温度时间序列,根据经验来看,此设备温度应该维持在10度-20度之间,可以看到在此时图片左侧有非常明显的突增。
当温度突增到80度,而右侧的突增则不是特别明显,但是右侧对于设备的影响非常严重(不允许超过20度),这就是对设备门限的控制适当

序列平移异常

模式变换

此图为心电图,人的心跳反应在心电图上就是相当于周期波动,可以看到在中间有一段红色相对平坦的信号,可以看出它与正常信号的差异非常明显,由于他没有波动,可以认为此人此时心跳可能骤停

image-20220127002537189

2.3 异常定义

2.3.1 离群点与异常

离群点:离群点Outlier是一个更广泛的概念,通常指与样本总体差别较大的点
异常的定义:异常是样本空间中的一种样本,它们与样本空间中其他样本是如此的不同,以致人们不得不怀疑它们是通过另外一种机制产生的。-Hawkins,1980

如下图所示,正常的预测点位于绿色部分,异常的预测点位于红色圆圈

image-20220127105025881

再如下图所示,假设此人身高2.26米,可以认为是一个离群点,如果身高3米,可以认为是一个异常

因为人类不可能身高3米,但极其特殊人的身高可以为2.26米

image-20220127105149723

离群点与异常的不同:

  • 离群点虽然与样本总体差别较大,但仍在可接受的范围内,只是出现的概率较小一些
  • 异常则完全由不同的机制产生
  • 实践当中通常不加以严格区分
2.3.2 不同领域的异常

异常的定义中没有说明数据类型,因此适用广泛,包括表格数据、图像、文本、时间序列,异常的定义都是一致的

例如下图可以看到右侧黑色车辆有一个轧白线的的违章动作,对于交警处理违章问题帮助很大
机器视觉,识别车辆异常行为

此图为NLP自然语言处理,正常评论为与内容相关的评论,而恶意评论则是一些与内容不相干的评论

自然语言处理,识别恶意评论

总结:异常的两个特点:==明显区别==,==极少出现==

2.4 异常检测的主要方法

2.4.1 基于距离的方法

1.1根据样本集X计算当前样本x的预测值x~0~

1.2计算样本真实值x与x~0~的距离d=|x-x~0~|

1.3若距离大于阈值t,则判断为异常

image-20220127120733869

2.4.2基于分布的方法

2.1根据样本集X计算当前样本x的分布f(x)

2.2根据分布f和样本真实值x做假设检验,计算p值

2.3若p值低于显著性水平a(0.05),则认为检测到异常

image-20220127120824905

2.5 时间序列异常检测的难点

时间序列检测的难点最主要的就是门限的设置,因为不同人对异常的感受是不一样的,有的人可能感受很敏感,有的人觉得无所谓,他们心目中的门限可能有高有低,这是一个很难去统一的标准。

异常是与众不同的,但是这个"众"我们应该怎样去定义,下面通过一个例子来解释

下面这个图为时间序列,可能很难发现他有与众不同的点

image-20220127154629124

但是将时间序列拉长后如下图所示

image-20220127155417549

可以看出红色部分本身即为异常

2.5 异常检测常见方法

2.5.1 Z-score方法

一组正态分布样本中,偏离均值3倍标准差之外的区间的概率密度很低,若样本落在这个区间,则很可能是异常

Zscore是衡量正态分布样本的偏离程度的指标

image-20220127155836958

将时间序列每个时间戳的点视为一个样本用z-score计算每个时间点的偏离程度,若大于阈值(3)则判断为异常

注明:只能检测明显的值异常,不能检测序列异常

image-20220127160019717

我们可以看到下图中间的绿色线为均值,上下面的绿线为标准差,且有3个值Outlier位于绿线外面

image-20220127160030991

Z-score方法弊端:没有用到任何时间序列的信息,也就是说这个时间序列是否有序,检测出的异常不会发生变化这显然是不符合我们需求的,因为很多异常可能是一些局部的特征,所以此方法不能用于检测序列的异常

2.5.2滑动平均法(Moving Average,MA)

MA的方法利用到了序列的特征,滑动平均法基于最近时刻的值估计当前时刻的取值

image-20220127160939307

例如在下面的时间序列,我们要预测1:00的下载成功率,那就把0:00到0:55的下载成功率取平均值,即可以得到1:00滑动平均的结果为3

image-20220127161108697

此图展示了美国佛罗里达州的新冠人数,蓝色线为真实值,红色线基于7天平均值的预测值

image-20220127161004398

2.5.3 指数加权滑动平均法(Exponential Weighted Moving Average,EWMA)

由于序列的距离-相似性,越近的点相似度越高,因此在做滑动平均时采取等权重是不合适的,直观上来说应当给较近的点较高的权重
第i时刻的加权求和满足:

image-20220127161514134

image-20220127161523296

S~i~为当前时刻的真实值,α为衰减因子,值越大则最近数据的权重越高,历史数据的权重越低

image-20220127161543799

采用EWMA,设a=0.5,则预测下一时刻2019/10/22 1:00的取值为93.166

2.6 同比与环比

环比:当前时刻与前一时刻之比

image-20220127161854543

例如国家统计局计算GDP以月为单位,比如算2020年2月份的GDP有没有达到预期,就需要和上个月进行对比,这就叫做环比,环比是当前时刻与前一时刻之比。

如果是2020年2月份和2019年12月份对比,这就叫做同比,同比是当前时刻与上一周期同一时刻之比。

下图为典型的时间序列

image-20220127161903318

使用同比可以较容易的预测出下一个高峰的出现时间,而环比则很难预测

2.6.1 Boxplot方法

环比和同比在时间序列检测中的应用为Boxplot方法

Boxplot双线图是数据科学家在分析数据分布的情况下经常用的一种方法

image-20220127170317737

下图为100名学生的考试成绩,中位数为第50名的学生成绩,上四分数为第25名孩子的成绩,下四分数为第75名孩子的成绩

IQR为

image-20220127170147939

超过上限和下限的值均为异常值

下图为用Boxplot检测异常值实例(蓝色线为预测值,绿线为真实值)

image-20220127165921154

Boxplot(箱线图)通过绘制数据分布分位数的方式检测异常点分位数相比于3 sigma:无需假设正态分布,适用更广

image-20220127170213682

基于同比数据,更符合当前数据的分布

2.7 算法总结

z-score:异常+检测
MA,EWMA:序列+异常+检测

Boxplot:时间+序列+异常+检测
异常:==零维==,样本之间是独立同分布的,不存在任何顺序关系序列

image-20220127170727792

异常:==一维==,样本仅与前后样本有关,只在一个方向上演化

image-20220127170748108

时间序列异常:==二维==,样本不仅与前后样本有关,也与上一周期内的样本有关,在两个方向演化

例如此飞镖盘有很多块组成,可以形成不同的分数,分数与所在的环有关,在同一个环,击中的概率相同(同比),在不同的环环比情况下外侧击中概率较大,分值相对较小(环比)

image-20220127170756403

2.7.1 KPI异常检测实例

KPI异常检测帮助运营商提前5小时发现问题,保障四地市用户体验

image-20220127171257249

及时发送信息

image-20220127171323383

总结异常检测

异常检测的方法有很多,总结起来分为三类

0维:只看整体,不看轮廓

1维:只看轮廓,不看整体

2维:既看整体,又看轮廓

东岳看雄,西岳看险,南岳看秀,北岳看幽

要做好时间序列异常检测,必须同时做好‘时间’、‘序列’、‘异常三个层面的工作,三者相辅相成,缺一不可。

3. 异常检测演示

3.1 创建模型

NAIE官网:https://www.hwtelcloud.com/

NAIE模型训练服务为开发者提供电信领域一站式开发服务,涵盖数据预处理、特征提取、模型训练、模型验证、推理执行和重训练全流程。该服务提供开发环境和模拟验证环境,内嵌华为在电信领域30多年积累的的知识和经验沉淀,内置50+电信领域资产,包括项目模板,算法、特征分析及处理SDK。帮助开发者降低开发门槛,提升开发效率,保障模型应用效果

进入官网,找到模型训练服务

image-20220127210308474

image-20220127210405689

点击免费试用,勾选协议,点击立即使用

image-20220127210513388

image-20220127210642009

点击进入服务

image-20220127210737968

大家如果不熟悉的话可以选择使用模板创建

image-20220127211340835

创建完成后即可看到项目

image-20220127211328637

3.2 项目演示

点击进入项目

image-20220127214407510

通过调整标准差展示效果

image-20220127214610413

下方红框为异常点

image-20220127214644355

3.2.1 平均异常检测

image-20220127214750953

3.2.2 局部突增异常

我们可以看到EWMA在这段区间的拟合效果非常好,因为我们选取的窗口比较短,在这个窗口内,如果都为异常点,实际上我们是找不到异常的,我们要找的异常是与众不同的。

image-20220127214811096

假如说我们要在精神病院中找精神病人,这可能是一个相对容易的工作,但是如果我们在正常人中找一个精神病人,这可能就是比艰难的工作,在精神病院正常人却成了与众不同的。所以如果我们使用EWMA方法来做的话,因为他的局部区间的数据非常的小,因此他非常容易收到异常的污染或者无法去准确的衡量他众在哪,也就无法找到他与众不同的地方。

image-20220127215102575

如果我们用Boxplot来做会是什么效果呢,我们这款以定义这个时间序列的周期为24,窗口宽度为5,填充为7,效果如下图所示

image-20220127220156910

上图红线和蓝线分别为上下界,我们可以看到这个是序列如果我们用异常检测的做的话,效果如下图,右侧虽然环比小区间有很多异常点,但是我们选取了很多正常的点作为他的与众不同的"众",这些"众"已经足以形成对于异常的的优势。

image-20220127220329903

总结:算法的本身无所谓优劣,无所谓谁一定比谁好,这个主要是看数据的场景以及我们针对不同的数据采用不同的算法

4. 答疑Q&A

问题一:在实践当中,怎样选取合适的方法寻找合适的数据?

答:不同的数据需要采用不同的方法,但是对数据做分类也是较难的问题,我们之前尝试过定义稀疏或离散类型,但这些对产生一定冲突,分类效果也并不是很准确。所以在实际应用中,我们更多的是从业务的角度出发来进行分类。例如周期性的数据或者平稳的数据来做分类

问题二:滑动窗口平移是用rolling函数吗

答:其实只要能实现,用rolling函数实现是最方便的方式,如果能有自己的方式也是可以的

问题三:**清华大学裴珊老师的学图的方法在实际业务中的效果怎样?

答:目前正在进一步研究,在异常检测领域,用到的比例并不是很大,大部分用到的使我们现有的方法。因为在实际应用中标签获取困难,且不同的人判断存在不同,"众"相对主观。这些都会对结果产生影响。

问题四:在实践中,这些方法是怎样决定的?

答:异常检测需要做一个集成的功能,对不同数据都可以进行检测

问题五:半监督的方法在异常检测中的前景?

答:半监督的范围非常广,常见的有在大量的数据中通过OnePlus进行同步,难度在于对异常标签的处理融合问题。

在无标注的方法中可能存在一些标注的点,异常数据无法利用,存在冲突。关键点有三个:

  1. 不平衡:用无监督方法做一个基本的输入,进行初删
  2. 判断错误:我们需要对出错的异常进行处理
  3. 数据扩充:半监督检测会出现标注疏忽

问题六:面对极度不均衡的二分类方法,有什么处理方法?

答:按照一定的采样频率,可以采用无监督或者数据扩充方法,先进行初筛在进行分类

问题七:时间序列异常检测性能分析

答:在实际当中,要考虑到很多方面进行综合考虑,时间序列异常检测的进行精准模型的建立(可能出现错误),需要对异常对于模型的容忍度较高。可以采用用大量复杂度较低的模型来处理检测异常,单纯考虑精度可能并不是一个非常好的方法。

5. 总结

本文通过我们日常生活中熟悉的场景来介绍网络KPI异常检测,非常通俗易懂。KPI异常检测的难点主要是要把我何为异常,异常是与众不同的,也就是说当"异常"成了大多数,正常也就成为了异常检测中的“异常”。这就需要我们在具体应用场景中去具体分析异常的正确模型评价指标。

华为云的iMaster NAIE平台集成了异常检测所需要的全部场景(当然也有其他功能),开发者只需要专注于实际的应用场景,将数据导入后便可以进行快速的异常定位,提高运行效率,降低开发难度。


本文整理自华为云社区【内容共创系列】活动。
查看活动详情:https://bbs.huaweicloud.com/blogs/325315
相关任务详情:火遍网络的KPI异常检测到底什么梗?

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。