基于机器学习的KPI自动化异常检测系统

2017 年 8 月 16 日 运维帮

作者:刘平

转自:「智能运维前沿」订阅号


导读
 

今天给大家介绍Netman实验室在异常检测领域的研究成果:基于机器学习的KPI自动化异常检测系统(Opprentice)。在实际生产环境中,异常检测系统的痛点就是异常检测算法的选择以及算法参数的调整,这个过程往往耗费大量的人力和时间,但是往往效果无法达到预期,Opprentice主要针对这类难题设计,通过将异常检测问题转换为监督式的机器学习问题,实现了异常检测算法的自动选择和算法参数的自动调整。

如何构建一个异常检测系统?

在实际的运维场景中,构建一个异常检测系统往往需要两个角色共同参与:领域专家算法开发人员。领域专家也就是我们的运维人员,他们对KPI曲线的行为很熟悉,可以通过观察KPI曲线并结合自己的领域知识,判断KPI曲线是否出现异常;算法开发人员负责构建异常检测系统,他们熟悉异常检测器(算法),但是实际中有各种不同类型的KPI曲线需要维护,所以需要为不同类型的KPI曲线选择合适的异常检测器以及合适的算法参数。


在实际构建异常检测系统时,首先需要运维人员结合自己的领域知识向算法开发人员描述异常,然后开发人员根据这些描述来为KPI曲线选择合适的检测器和算法参数,接着领域专家根据这些检测器的检测结果向开发人员反馈,来进一步优化检测器。所以实际中经常需要经过多次迭代才能开发出可用的异常检测系统,有时还会出现最终开发失败的例子,这是因为:

  1. 运维人员难以事先给出准确、量化的异常定义

  2. 选择和综合不同的检测器需要很多人力

  3. 检测器算法复杂,参数调节不直观

实际中经常需要经过多次迭代才能开发出可用的异常检测系统,有时还会出现最终开发失败的例子。因此,我们就会问,有没有一个可以自动选择异常检测器和自动调节算法参数的系统呢?答案是有!,我们实验室的研究成果:基于机器学习的KPI自动化异常检测系统(Opprentice)就是针对它设计的,下文将主要介绍Opprentice 的设计思想以及设计框架。


设计思想

Opprentice (Operator's Apprentice)的主要思想就是跟着运维人员从历史数据中学习,运维人员就像是一个“师傅”,将自己的领域知识“教“给Opprentice,然后Opprentice根据“学”到的知识来自动选择合适的异常检测器和算法参数。如下图所示,运维人员首先在历史的KPI曲线上标记出异常,接着Opprentice 使用十几种不同类型的检测器提取出上百个异常特征,此时有了人工标记的数据和异常特征,我们就可以将异常检测问题转化成机器学习中监督式的分类问题,将提取出的特征作为机器学习算法的输入,通过分类算法将KPI曲线上的点分为正常和异常,从而实现了异常检测。

设计框架

Opprentice主要由两部分组成:离线训练分类器在线检测,在离线训练分类器部分,首先运维人员使用我们开发的异常标注工具,方便快速的标注出KPI曲线上的异常数据,并且设置期望Opprentice达到的准确率(precision)和召回率(recall),然后Opprentice会使用十几种不同类型的检测器提取出KPI曲线的特征,其中每种检测器都有多种不同的参数配置,因此最终会提取出上百个异常特征。因为提取出的上百个异常特征中会存在无关特征和冗余特征,一些机器学习算法使用包含有这些特征的数据训练模型时准确度会降低,为了解决这个问题,我们选择了一种集成学习算法(ensemble learning algorithm)来训练分类器:随机森林,随机森林算法使用了多棵决策树,最终的结果是由每棵决策树的结果投票决定的,并且训练决策树的特征和数据都只是采样了整体特征和数据的一部分,因此使用随机森林训练模型时,无关特征和冗余特征不会影响算法的性能。最后,将提取出的异常特征,运维人员的标注数据和准确性倾向作为输入,训练出异常分类器。

在线检测部分中,首先对于新的数据点进行特征提取,然后用训练出的分类器判断数据点是否异常。在实际中,新的KPI数据中往往会出现一些历史数据中没有出现过的异常类型,为了让分类器可以适应新出现的异常,就需要运维人员定期的对最新的KPI数据进行异常标记,Opprentice会定期训练新的模型来更新分类器。

我们使用了来自百度和清华校园网的数个月的真实数据对系统的性能进行了验证,下面四幅图是在四个不同类型的KPI数据上,Opprentice使用的随机森林模型跟其它检测器的性能对比,可以看出Opprentice均取得了优异的结果。

总结

Opprentice将异常检测问题转换成了机器学习中的监督式分类问题,使用运维人员的标注数据,在历史数据中训练出分类模型来自动构建异常检测系统,从而解决了异常检测器的选择和算法参数调整的难题,为复杂检测器的实际应用提供了自动化的框架。

由于篇幅有限,没有介绍Opprentice的更多细节,特此附上论文链接,请点击阅读原文获取。

商务合作,请加微信yunweibang555

登录查看更多
13

相关内容

在数据挖掘中,异常检测(英语:anomaly detection)对不符合预期模式或数据集中其他项目的项目、事件或观测值的识别。通常异常项目会转变成银行欺诈、结构缺陷、医疗问题、文本错误等类型的问题。异常也被称为离群值、新奇、噪声、偏差和例外。 特别是在检测滥用与网络入侵时,有趣性对象往往不是罕见对象,但却是超出预料的突发活动。这种模式不遵循通常统计定义中把异常点看作是罕见对象,于是许多异常检测方法(特别是无监督的方法)将对此类数据失效,除非进行了合适的聚集。相反,聚类分析算法可能可以检测出这些模式形成的微聚类。 有三大类异常检测方法。[1] 在假设数据集中大多数实例都是正常的前提下,无监督异常检测方法能通过寻找与其他数据最不匹配的实例来检测出未标记测试数据的异常。监督式异常检测方法需要一个已经被标记“正常”与“异常”的数据集,并涉及到训练分类器(与许多其他的统计分类问题的关键区别是异常检测的内在不均衡性)。半监督式异常检测方法根据一个给定的正常训练数据集创建一个表示正常行为的模型,然后检测由学习模型生成的测试实例的可能性。
专知会员服务
80+阅读 · 2020年6月20日
专知会员服务
87+阅读 · 2020年1月20日
生成式对抗网络GAN异常检测
专知会员服务
116+阅读 · 2019年10月13日
【机器学习】基于TensorFlow搭建一套通用机器学习平台
【深度学习】基于深度学习的电商交易欺诈检测系统
基于深度学习的电商交易欺诈检测系统
AI研习社
8+阅读 · 2017年9月26日
干货|用机器学习检测异常点击流
全球人工智能
6+阅读 · 2017年7月30日
侦测欺诈交易(异常点检测)
GBASE数据工程部数据团队
19+阅读 · 2017年5月10日
Teacher-Student Training for Robust Tacotron-based TTS
Arxiv
14+阅读 · 2019年9月11日
Arxiv
7+阅读 · 2019年5月31日
Arxiv
5+阅读 · 2019年4月8日
Arxiv
13+阅读 · 2019年1月26日
Arxiv
7+阅读 · 2018年3月19日
VIP会员
相关资讯
【机器学习】基于TensorFlow搭建一套通用机器学习平台
【深度学习】基于深度学习的电商交易欺诈检测系统
基于深度学习的电商交易欺诈检测系统
AI研习社
8+阅读 · 2017年9月26日
干货|用机器学习检测异常点击流
全球人工智能
6+阅读 · 2017年7月30日
侦测欺诈交易(异常点检测)
GBASE数据工程部数据团队
19+阅读 · 2017年5月10日
相关论文
Top
微信扫码咨询专知VIP会员