[参赛经验分享]揭开KPI异常检测顶级AI模型面纱6(GREAT团队)

举报
就挺突然 发表于 2021/01/05 10:59:14 2021/01/05
【摘要】 01赛题任务关键性能指标(KPI)反映了核心网的性能和质量,而对KPI进行检测能及时发现网络质量劣化风险。本次赛题便立足于真实场景中的KPI数据,每隔一小时进行采样。选手则需要根据历史一个月异常标签数据(训练数据集),训练模型并检测后续一周内各KPI(测试数据集)中的异常,比赛的评价指标为F1-score。02数据分析2.1 KPI曲线多样性KPI曲线的多样性是此次数据集的一个特点,这就意味...


01


赛题任务



关键性能指标(KPI)反映了核心网的性能和质量,而对KPI进行检测能及时发现网络质量劣化风险。本次赛题便立足于真实场景中的KPI数据,每隔一小时进行采样。选手则需要根据历史一个月异常标签数据(训练数据集),训练模型并检测后续一周内各KPI(测试数据集)中的异常,比赛的评价指标为F1-score。


02


数据分析



2.1 KPI曲线多样性
KPI曲线的多样性是此次数据集的一个特点,这就意味着难以用一个通用的模型“一招鲜”地解决20个KPI的问题,而需要对各个KPI进行细致分类,对其“分而治之”。通过进一步观察,我们发现在同一个KPI中,异常点的分布也有一定的普遍特征,例如下图所示的KPI的异常点(红线位置)均为局部最小值,这是刻画KPI的另一重要特征。
图片
2.2 KPI曲线相关性
本次比赛的数据集共包含了20条KPI,训练集和测试集在时间维度上连续分布。我们通过可视化训练集的KPI值和异常点后发现,发现尽管各个数据各不相同,但是部分数据集之间存在着极强的相似性,这一点值得被充分利用。例如下图所示的2号KPI和上图的1号KPI无论是在KPI值的变化上还是在异常点的分布上都极其相似。


图片
2.3 KPI曲线周期性
对于不同的KPI,进行异常值判断的难度也各不相同。对于复杂且具有周期性的KPI(例如2.1和2.2中列举的信号)是此次比赛的一大难点所在,也是提高分数的关键,而对于如下图所示的非周期性信号,其异常点其实很容易地可以通过计算信号差值或是斜率等方法被检出。
图片

03


算法介绍



3.1 KPI特征学习
3.1.1 单个KPI特征学习
首先,我们针对每一个单独的KPI信号,对其通过一系列统计量进行充分的抽象描述。这些统计量包括了曲线信号的一些基本特性,它们有是否为周期信号,异常点的分布情况与数量情况,异常点与前一个正常点的斜率,相邻异常点的分布,正常点的均值方差等,这些信息作为异常点的筛选条件,为之后检测单个KPI异常点做了充足的准备。

3.1.2 KPI之间的相关性学习
上文已经指出,部分KPI之间存在着强相关性,我们试图根据训练集异常点的分布定量计算出各个KPI的相关性情况。特别需要指出的是,我们定义的相关性并不是双向的,而是单向的从属关系。例如1号KPI的所有异常点在2号KPI中均有出现,则我们认为1号KPI“属于”2号KPI,而2号KPI和1号KPI之间则不存在“从属”关系。下图为各个KPI的相关性情况统计(编号从0开始)。
图片

3.2 第一次筛选
3.2.1测试集数据预处理
根据单个KPI信号的一些统计特征,我们已经知道了该信号的异常点分布情况,在正式筛选测试集的异常点之前,我们可以根据统计特征对测试集数据进行平滑预处理。例如下图所示的9号KPI,其异常点分布情况为“均分布在局部最小值”,则我们在这一步中便需要把看似异常的“尖峰”进行平滑,以免被网络误筛选。
图片

3.2.2 根据统计量进行筛选
       根据在3.1.1中学习到的各条KPI特征,我们对相应测试集KPI的每一个点进行条件筛选,如符合训练集的异常点特征,则将其归为测试集中的异常点,反之则为正常点。在这一步中,那些与前一个正常点斜率或是差值特别大的异常点,或是与前一个已筛选出来的异常点相近的异常点均能被找到。从最后的结果来看,至这一步结束,已经能够取得百分之九十左右的分数。

3.3 后处理
在初筛之后,我们便根据数据分析中得到的一些既有结论,加入了几步有针对性的后处理步骤,以进一步补充完善我们的结果。

3.3.1 根据相似度调整
我们根据3.1.2中学习到的KPI之间的相关性,进行一次基于从属关系的补充:如没有从属关系,则跳过本阶段;如果有单从属关系,且从属的KPI没有参考KPI中的故障点,则进行添加;如果有多从属关系,则根据多从属关系投票是否需要添加。

3.3.2 对复杂情况KPI进行调整
       上文已经指出,复杂周期信号中的异常点筛选是此次比赛获取高分的关键。针对这些复杂的且具有周期性KPI,以及那些异常点分布既有极大值又有极小值的KPI,我们稍稍放宽一点对它们的筛选标准(这里需要进行比较细致的调参工作),再进行一次筛选。当然,在进行这一步之后,我们同样利用3.3.1的相似度方法进行了一次整体调整。

3.3.3 根据异常点数量调整
       在不同的KPI训练集中,异常点标注数量占总数的比例亦有所不同,而这一比例也被作为描述单个KPI的统计量在3.1.1中得到学习。在完成上述所有操作后,我们首先取所有检出测试集KPI异常点位置的并集。接着,我们比较各个KPI测试集中被检出的异常点比例,与训练集中的比例进行比较,其中有比例相差较大者,则进一步放宽其要求,从并集中进行最后一次筛选,最终得到了我们的提交结果。



04


比赛总结



总结这次比赛的过程。在方法上,我们采用的方法基于统计量和多决策筛选,充分利用了KPI之间的相关性和KPI内部的各种特征,其运行速度较深度学习的方法有显著提升。关于比赛本身,我们认为因为测试集规模不大,所以在调整参数方面有很大的操作空间,我们的实验也说明了参数的选择对模型的效果起到了很关键的作用。但是细细反思,我们的模型在泛化能力方面则有待进一步加强。此外,我们还猜想可能还存在一些训练集与测试集之间时间上的连续关系,这一点也有待在后期的研究中进行进一步探索。

最后,还是要再次感谢华为公司为我们提供的此次机会以及希旭哥、素颜姐、小爱姐的一贯支持,此次比赛可以说让我们收获良多。我们期待与各位选手一起分享交流,探索更多数据处理、机器学习方面的知识;也展望我们与华为云和NAIE一道,打造更高水平的数据科学平台!
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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