简介:本文除了介绍RobustPeriod的核心技术亮点,还将重点解释如何将它构筑成服务来解决阿里云的业务痛点。
近日,由阿里云计算平台和阿里云达摩院合作的时序多周期检测相关论文RobustPeriod:RobustTime-FrequencyMiningforMultiplePeriodicityDetection被SIGMOD(ResearchTrack)接收[1]。这也是阿里巴巴首次以第一单位在SIGMOD的ResearchTrack发表的论文。ACMSIGMOD国际数据管理会议(ACMSIGMODInternationalConferenceonManagementofData)由美国计算机协会(ACM)数据管理专业委员会(SIGMOD)发起,是数据库领域具有最高学术地位的国际性学术会议,其论文录取难度极高,SIGMOD位列数据库方向的三大顶级会议之首(其次是VLDB及ICDE),被中国计算机学会(CCF)推荐为A类会议。本年度的SIGMOD会议将于年6月20日至年6月25日在中国西安召开。本次工作是前沿算法与阿里云实际业务场景紧密结合落地的典型案例。论文提出的RobustPeriod是一套具有鲁棒性的时间序列多周期检测通用框架,它不仅在理论上具备创新性,同时基于它构筑的时间序列异常检测和预测服务支撑了阿里云大数据计算平台的多个业务场景。本文除了介绍RobustPeriod的核心技术亮点,还将重点解释如何将它构筑成服务来解决阿里云的业务痛点。一、业务需求和难点论文的灵感来源于阿里云大数据计算平台真实的业务场景需求。在大数据平台运维和运营的场景中,有很多需要监控的指标,例如机器的CPU、内存和存储使用率,批处理作业的运行时间,流式作业的吞吐量等。这些指标都属于时间序列,同时这些时间序列中可能存在一些重复出现的模式,即周期性。甚至在一条时间序列中可能存在多种周期性,例如某个作业的TPS曲线,可能既存在天周期,即每天的凌晨都是流量高峰;同时又存在周周期,即工作日相对流量较高,周末流量偏低。如果我们能够自动且精准地识别出每个指标中存在的各个周期,那么就能更高效地对这些指标进行异常监控,及时发现偏离周期性的异常点,甚至可以准确地对这些指标的未来每个时刻的走势进行预测,从而提前进行资源规划。因此,异常检测和预测是周期检测的两个典型应用。此外,由于周期也是时间序列的典型特征之一,该周期的检测和识别也能广泛应用于时间序列之间关系的建模。
图1.大数据平台运维场景部分监控指标示例(注:图中红色部分表示数据缺失)然而,对云监控指标进行周期检测并非易事。图1展示了一部分指标的示例,我们发现这类指标具有如下特点:(1)由于时序数据的复杂性,周期检测受到时序数据中除周期成分外的其他的成分的干扰,包括了趋势的变化(如缓缓增长或下降的趋势),噪音和异常点,甚至由于业务特性或采集问题可能出现大段的数据缺失。图1最左上角还展示了类似『稀疏型』的周期性数据。(2)天周期、周周期、年周期可能交织存在且存在一些特例,如很多数据集中都有长周末(正常周末2天+额外1天)的现象。(3)由于涉及的业务场景繁多,不同曲线的业务背景、模式、粒度等都存在较大差异。难以人工设定一些先验的周期信息。(4)双十一、等大促,小长假等特殊情况都会对周期的判别造成干扰。(5)随着业务的发展,周期性并非一成不变而是具有一定动态性。上述特点给周期的识别带来了很大的挑战。我们需要一套高效鲁棒的通用算法框架,能够自动识别出任意一条时间序列中存在的周期数量,并且准确计算每个周期的长度。二、RobustPeriod周期检测框架介绍现有的周期检测算法主要集中在基于周期图(Periodogram)的频域算法和基于自相关函数(ACF)的时域算法两个方向。然而这些算法要么无法很好处理长周期,要么容易受到趋势、噪音和异常值的影响,或者依赖先验的基准周期长度信息,抑或是无法处理多周期的情况,因此这些算法都无法很好地应对上面所提到的诸多挑战。基于此,我们提出了RobustPeriod,一套具有鲁棒性的时间序列多周期检测通用框架。其基本流程如下图所示,主要包含三个关键步骤:
图2.RobustPeriod周期检测算法框架流程(1)预处理阶段(Pre-processing)我们使用线性差值法对缺失值进行填充以应对大段数据缺失的场景。同时使用HP滤波(Hodrick–Prescotttrendfiltering)对时间序列中的趋势项进行提取并剔除。(2)多重周期的分解(DecouplingMultiplePeriodicities)为了解决多重周期交织在同一个时间序列中的问题,我们首先使用最大重复离散小波转换(Maximaloverlapdiscretewavelettransform,MODWT)分离出不同层次的周期性。MODWT具备的良好特性使得它可以应对任意长度的时间序列,同时可以很好地处理不平稳的时间序列和非高斯噪音。基于分解出的不同层次的周期成分和它们对应的小波方差(waveletvariance),我们可以对这些周期成分进行强弱排序,并优先输出更显著的周期成分。(3)单周期检测(RobustSinglePeriodicityDetection)在完成了多重周期的分解后,接下来的问题就变成了如何准确地对单重周期进行检测。在这个阶段我们设计了一套称为Huber-ACF-Med的流程,它包含两个子步骤。首先是利用基于Huber-Periodogram的Fisher’sTest生成每个层次的周期长度候选项,然后再利用ACF对这些候选项进行验证优化,最终得到这条时间序列所包含的所有周期长度。在我们的论文中,我们不仅从理论上对RobustPeriod的合理性进行了论证,同时在模拟数据集、公开数据集和阿里云计算平台的真实数据集中对我们的算法进行了充分的验证,利用消融分析验证了每一个步骤的重要性,并和其他的前沿经典算法如Siegel,AUTOPERIOD,Wavelet-Fisher进行了对比。结果显示,无论是在单周期还是多周期场景的检测中,我们的算法都取得了最优的效果。特别是在有趋势噪音和异常值的真实数据集中,我们的算法具有明显优势。三、基于RobustPeriod构筑的TData/IAD时序异常检测和预测服务前文提到,异常检测和预测是周期检测的两个典型应用,为了让RobustPeriod能在实际业务场景中发挥效用,我们将它整合到了阿里云大数据智能运维TData平台和达摩院决策智能IAD(IntelligentAnomalyDetection)平台,并且在它的基础上构筑出了时序异常检测和时序预测这两项通用在线服务。(1)TData,IAD平台的时序异常检测图3展示了时序异常检测服务的算法框架,主要包括周期检测、周期分解RobustSTL/RobustTrend,和统计检验三大模块[2-9]。RobustPeriod作为核心前置模块决定了后续的算法分析链路,影响了最终检测的准确性。当RobustPeriod识别出某条时间序列的周期性后,我们基于各层次周期成分的长度,利用RobustSTL和RobustTrend分解算法准确分离出趋势项、周期项和残差项,进而更加准确地识别出曲线是否有偏移原有模式的异常点,满足用户不同场景、不同类型的异常检测需求。对于TData的用户来说,只需将指标接入并选择
转载请注明:http://www.0431gb208.com/sjszlfa/1316.html