微软亚研院的AIOps底层算法: KPI快速聚类

《微软亚研院的AIOps底层算法: KPI快速聚类》要点:
本文介绍了微软亚研院的AIOps底层算法: KPI快速聚类,希望对您有用。如果有疑问,可以联系我们。

导读

智能运维中存在海量时序数据(KPI)需要监控、检测异常、关联,而AIOps的一个底层算法就是把大规模时序数据快速准确地聚类成有限的若干类别,从而大大降低后续数据分析与挖掘工作的开销. 其应用场景包括自动适配异常检测算法、辅助标注、辅助构建故障传播链等. 本文介绍的案例是由微软亚洲研究院发表在数据库领域顶级会议VLDB 2015的文章《Yading: Fast Clustering of Large-Scale Time Series Data》.

简介

在大数据时代,快速、大规模的分析技术的重要性日益凸显,人们利用这些技术完成实时和交互性任务中的数据分析工作.运维中常见的KPI数据是一种时间序列数据,它具有数据实例多、维度高的特点.为了降低数据分析工作的开销,提高分析效率,人们希望将海量的时序数据曲线分为若干类别,从而减少需要考察的曲线数目.因此,如何对大规模的时间序列数据进行快速、准确的聚类是一个关键性问题.

本文中,作者设计了一套端到端的时序数据聚类算法Yading,实现了对大规模时间序列数据的高效、准确、自动化聚类.为验证算法效果,作者在公开数据集上将Yading与若干传统时序数据聚类算法进行对比,并在微软的实际工业数据上对算法进行了测试,证明了Yading的高效性和分类准确性.

时序数据聚类的挑战

  • 时序数据数量大、维度高.运维中的时序数据集通常具有大量实例(如数百万个),每个实例具有较高维度(如数千维),难以使用传统的聚类方法进行快速聚类.
  • 时序数据实例间的相似性难以准确刻画.不同于简单的数值型、类别型数据,时间序列数据上通常存在着相位扰动和随机噪声,使得对时序数据实例之间的相似性刻画较为困难.不恰当的相似性度量会大大降低聚类的准确性.
  • 聚类算法参数难以确定.许多聚类算法的效果和参数的选取有密切关系.面对大规模的时序数据,难以人工选取合适的参数.需要设计更智能的参数选择方法.

设计思想

为应对上述挑战,本文设计了一套端到端的时序数据聚类算法Yading,分以下三步实现大规模时序数据的快速、准确聚类,算法框架如下图所示.

  1. 输入数据集采样.对大量的时序数据进行随机采样,并使用逐段聚集平均(PAA)算法缩减每条时序数据实例的维度.用采样后的数据集作为聚类算法的输入.

  2. 在采样后的数据集上进行时序数据聚类.使用L1距离作为时序数据曲线间的相似性度量.在基于密度的聚类算法DBSCAN的基础上,设计出多密度的聚类算法Multi-DBSCAN,并使算法能够自动决定参数.

  3. 对大量数据采用分派(assignment)策略进行分类.对于采样中未被选择的大量时序数据曲线,采用分派策略将其分到与其L1距离最近的已聚类曲线所属的聚类簇中.同时建立了有序邻居图(Sorted Neighbor Graph,SNG)辅助计算时序数据实例之间的距离,提高分派算法的计算效率.

数据

1、输入数据集采样

大规模的时序数据集中通常含有数以万计的时序数据实例,每个实例上含有大量的数据点,直接对整个数据集进行聚类将带来巨大的计算开销.因此,本文通过随机采样和维度缩减的手段降低需要考察的实例数目和维度,将采样后的数据集作为聚类模块的输入,降低计算开销.

由于不需要对输入数据的分布作任何假设,随机采样(random sampling)是一种减少数据实例个数的有效手段.采样过程中需要遵循两个原则:(1)每个类别的数据均在采样集中出现至少m次.(2)采样集中各类别数据所占比例与原数据集中的比例偏差不超过给定阈值ε.基于上述原则,作者采用数学方法推导出采样数据集大小的上界和下界,对原始数据集进行随机采样.

对于每个时序数据实例,使用逐段聚集平均(Piecewise Aggregate Approximation,PAA)进行维度缩减.具体的,对于一条长度为D的时序数据,PAA将其划分为d个帧(d<D),将每个帧用一个值(例如该帧上数据点的均值)表示,从而将时序数据的长度从D减小为d,达到降维的目的.

通过上述两项操作,能够从规模为N*D的原始数据集中获得规模为s*d的采样数据集(s≤N,d≤D),且采样集保持原数据集的分布(underlying distribution)不变.用采样集作为聚类模块的输入,大大降低了计算开销.

2、时序数据聚类
以采样后的数据集作为输入,文中使用L1距离作为时序数据实例间的相似性度量,采用多密度的DBSCAN(Multi-DBSCAN)算法进行聚类.

点(x1,y1)与点(x2,y2)的L1距离可表示为:L = |x1-x2|+|y1-y2|.L1 距离计算复杂度低,且对于脉冲噪声具有一定的鲁棒性,适合作为处理大规模时序数据的相似性度量.

时序数据集中的数据曲线模式多种多样,每个类别中含有的曲线数量也有较大差异.面对这种情况,基于密度的聚类方法是一种很好的选择.一般地,如果时序曲线a和b相似,b和c相似,则a、b、c很可能属于同一类别.基于密度的聚类算法正是根据这一思想将相似曲线逐步加入同一聚类簇中,从而能够找出任意形状的聚类簇.特别地,真实的时序数据模式较为复杂,在一个数据集中可能存在多种密度的聚类簇(如下图所示).因此本文中将基于密度的DBSCAN算法改进为多密度的Multi-DBSCAN,提升聚类准确性.

微软亚研院的AIOps底层算法: KPI快速聚类

此外,密度估计(density estimation)是基于密度的聚类算法的核心,已有工作中通常通过人工选择或使用一些计算开销较大的算法得到合适的密度阈值.本文中,作者设计了一种高效算法对密度进行自动估计,并使用数学方法证明了其合理性.具体的,该算法计算输入数据集中的每个数据对象到其k邻近对象之间的距离k-dis,将k-dis值按照降序排列得到k-dis曲线,曲线上的最平坦点即为候选密度值(如下图所示).对于输入的时序数据集,该算法能够自动检测出不同聚类簇的密度,分别以每个候选密度值作为参数使用DBSCAN算法进行聚类,即可将数据集划分为若干聚类簇,同时识别出与大多数时序曲线均不属于同一类别的异常曲线(outliers).

微软亚研院的AIOps底层算法: KPI快速聚类

3、分派策略

在对采样集进行聚类后,使用分派(assignment)策略对大量未分类时序数据曲线进行快速分类.具体的,对于一个未分类实例,找出与它相似性距离最近的已分类实例A.若二者的距离小于A所在聚类簇的密度半径,则将该实例划分至与A相同的类别中.否则,认为该实例是一个异常(outlier).为提高计算效率,本文中还建立了有序邻居图,利用剪枝的方法加速寻找最邻近实例的过程,实现对大量时序数据的快速分类.

文中使用标准化互信息(Normalized Mutual Information,NMI)作为指标对聚类算法的准确性进行评价.作者分别在15个时序数据集上将本文提出的算法YADING与三种常用的聚类算法DECLUE2.0、DBSCAN、CLARANS进行对比,在不同规模数据集上的计算时间及所有数据集上的平均NMI如下图所示.可以看出,YADING在计算效率和聚类准确性方面均领先于几种常用算法.

微软亚研院的AIOps底层算法: KPI快速聚类

微软亚研院的AIOps底层算法: KPI快速聚类

YADING算法已被微软用于与实际业务相关的时序数据分析中.对于46000多条服务器CPU利用率及内存利用率时序数据,YADING算法仅用时4.5秒就完成了聚类工作(几种主要类别如下图所示),表现出极高的实际应用价值.

微软亚研院的AIOps底层算法: KPI快速聚类

总结

本文介绍了一套快速、准确的时序数据聚类算法,用于对大规模时序数据进行快速分类,是时序数据挖掘与分析工作的重要手段.通过随机采样和维度缩减获得规模较小的采样集,从而大大减小聚类算法需要考察的数据量,降低计算开销.之后设计了一套基于L1 距离和Multi-DBSCAN算法的时序数据聚类方案,并能够自动进行密度估计,具有较高的鲁棒性.对于大量的未分类时序数据,根据聚类结果采用分派策略进行快速分类.最后,文中分别采用理论推导与真实数据验证的方式证明了该算法在解决大规模时序数据聚类问题上的高效性和准确性,具有很好的实用价值.

此外,在NetMan实验室今年十月份推出的智能运维挑战赛中,将提供来自互联网公司的公开脱敏数据集,供大家尝试自己的KPI聚类算法.欢迎感兴趣的朋友踊跃参与.

由于长度限制,本文没有介绍细节,特此附上原文链接,点击阅读原文获取.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


随着云计算和网络技术的发展,越来越多的数据需要在服务器之间进行传输和共享。云挂机宝作为一种常见的服务器设备,具有高效、稳定的特性,使得它成为了许多企业和个人用户传输数据的首选。本文将讨论云挂机宝服务器
阿里云服务器Tomcat无法从外部访问一、环境阿里云Ubuntu 12.04.5 LTStomcat和java都是阿里云默认的7的版本,如下图二、问题部署后./startup.sh启动tomcat 之后外部访问http://ip:8080/无法访问,之后去查看防火墙关闭了Ubuntu下面的防火墙123
购买一系列的东西其实就是花钱买块区域,服务器,域名,云解析,花了好多money。。。一、租服务器百度搜索阿里云进入官网首页,点击登录进入登录页面,可以使用邮箱登录或者注册进入注册页面,填写注册信息登录成功,进入主页,点击云服务ECS,点击购买推荐或者选购配置根据实际情况选择产品,可能没有货,那么就需要更改购买条件如果是新用户,购买
前言昨天买了域名,服务器,然后搭建了环境,然后想他通过默认的端口,不用端口就访问。设置WEB项目的欢迎页在WEB-INF文件夹下有个web.xml文件(最近新建的项目不包含此文件,可以手动新建),在welcome-file-list节点中设置,代码如下 <welcome-file-list> <welcome-file>test.html</welcome-file>
前言由于服务器centos6.8安装mysql一直出现不能连接问题,然后看到一个方法,一不小心就把yum给删除了,都还原不了,很是绝望,很难受。然后没有yum这个centos就感觉废了,然后找方法装上去。 python --version查看python 版本 whereis python 查看python文件 python: /usr/bin/python2.6 /usr/bin/python
前言用 SSH客户端登录上以后,自己想要在本地连接服务器上的mysql服务器。解决方法1、首先启动数据库[root@iZm5ec880z2rorZ ~]# service mysqld start可以输入一下加粗命令:[root@iZm5ec880z2rorZ ~]# mysql -u root -p Enter password: (输入你的数据库密码)Welcome to the My
前言乱码问题是很让人抓狂的问题,下面我将记录一下Linux下MySQL乱码问题的解决方法。 mysql在linux下乱码问题一、操作mysql默认字符集是latin1,但是我们大部分程序使用的字符集是utf8,我们就需要修改mysql的字符集了。1)查看默认编码show variables like 'character%';+--------------------------+--------
问题描述今天阿里云服务器安装mysql的收,遇到了一个很熟悉的问题 输入#mysql -u root -p ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 解决方案一、方案1 1.#ps -A|grep mysql 显示类似:
今天在使用filezilla连接虚拟机中的ubuntu的时候出现上次出错,错误详情为:open for write: permission denied看完错误大概知道和权限有问题,再次查看虚拟机,我们使用以下命令给我们需要放入的目标文件权限:sudo chmod 777 /home再次尝试上传,上传成功! ...
直接上步骤,做一个简单的记录!配置阿里云oss找到对应的oss如果没有bucket,则新建一个新建之后,进入到对应的bucket,然后进行相关设置以上就是oss的基本设置,接下来是域名相关设置,这也是最重要的一些步骤。oss域名解析和cdn设置oss域名解析设置oss的域名设置是在传输管理下进行设置。如果没有域名,需要添加域名,没有注册域名自行注册。添加之后就会在上面列表上显示。以上就是域名的解析配置,期间还需要设置域名解析cname等。oss的cdn设置加速设置cdn
这个需要开放centos的端口和腾讯云服务器的端口。防火墙开放8080端口因为Centos7以上用firewalld代替了iptables,也就是说firewalld开通了8080端口应该就行了1.输入netstat -tunlp 查看8080是否放开。2.如果没有开放,输入firewall-cmd --state #查看防火墙状态。3.在running 状态下,向firewall 添加需要开放的端口firewall-cmd --permanent --zone=public --add-po
前言:博主资历尚浅,很多东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在自己window系统下,模拟部署远程服务器,利用Jenkins + Ant + Tomcat 搭建了一个自动发布部署的环境
为了做集群测试,在每台机器上装了3个tomcat,每次发布项目的时候都要反复敲一些命令,重启 tomcat 之前先检查 tomcat 进程有没有停掉,没有还要手动 kill 该进程。 发布次数多了,操
Jenkins修改管理员密码,我看了网上所有的教程,竟然全都是拿着一串已经加密好的 111111 的密文去替代 config.xml 文件里面的密码,然后大家的密码都是 111111!我觉得这种做法实
一、四层与七层负载均衡在原理上的区别 1.图示 2.概述 四层负载均衡工作在 OSI 模型中的四层,即传输层。四层负载均衡只能根据报文中目标地址和源地址对请求进行转发,而无法修改或判断所请求资源的具体
和 window不同,在Linux压缩文件需要注意的是,压缩后的文件会把源文件给替代,无论是gzip、bzip2、xz 均不支持压缩目录,要达到压缩目录的目的,需要用到tar指令。 gzip 压缩 g
一、前言 随着每天业务的增长,Tomcat 的catalina.out日志 变得越来越大,占用磁盘空间不说。要查看某个时候的日志的时候,庞大的日志让你顿时无从下手,所以日志的切割的变得刻不容缓。而且,
一、安装 和 准备工作 我们选择了用 Tomcat 服务器下 war 包的安装方式。Jenkins 的下载地址:http://mirrors.jenkins-ci.org/,打开链接后,表格有war列
一、gcc gcc是Linux上面最标准的C语言的编译程序,用来源代码的编译链接。 gcc -c hello.c 编译产生目标文件hello.o gcc -O hello.c 编译产生目标文件,并进行
随着智能化互联时代的来临,家中的智能设备越来越多:电视机、平板、游戏主机、电脑、手机等遍及家中各个角落,同时设备之间共享数据的需求变的越来越强烈。比如同步、备份手机上的照片和视频,在电视机上观看电脑中