专业支持:(0512) 63016160 / 销售热线:(0512)63016068
当前在线: 288 今日上线: 1384 今日新增: 3

Twitter开源云环境时间序列数据断层检测工具

文章来源:  中国云计算 发布时间: 2014年10月28日   浏览: 1897   作者:中国云计算

  当下,大数据已经深入影响到各个领域,其中包括新产品决策制定、用户参与程度衡量、产品的定制化推荐、医疗、数据中心效率等。

  而着眼数据类型,时间序列数据无疑是非常常见的一种形式。随着数据收集和挖掘成本的下降,包括Twitter等越来越多的公司每天都会使用大数据技术执行数百万的度量。而在生产环境中,时间序列也常常因为内在或(和)外在的因素而产生breakout(断层,跳跃),不幸的是,这些breakout往往可能会从本质上影响到用户体验或者(和)业务底线。举个例子,在云基础设施环境中,系统度量时间序列数据突变(类似硬件故障影响等因素)可能就会对服务的可用性和性能产生影响。

  鉴于Twitter的实时特性(高性能已经成为最佳用户体验交付的关键所在),具备及早发现breakout的能力无疑至关重要。同时,breakout监测还常常被用于考量现实生活中一些流行事件的用户参与形势,比如奥斯卡奖、超级碗、世界杯等。

  Breakout由两个稳定状态和一个过渡区间构成。概括来讲,breakout分为两种:

  均值漂移(Mean shift):时间序列的突发性变化。举个例子,CPU使用率忽然从40%跳到60%就是个均值漂移。

  平滑改变(Ramp up):一个渐变的过程,两个平稳状态之间平滑的转变。举个例子,CPU利用率缓缓地从40%提升到60%。

  下图阐述了现实数据中的多个均值漂移

  

 

  鉴于度量上的每个增值都可以被收集,breakout的自动化检测已势在必行。当下已经不乏许多传统环境下的breakout检测研究,但是却不存在云数据中的breakout检测技术。这种情况主要归结于现存技术在异常环境中不具备足够的鲁棒性,而这些异常在云数据中又恰恰经常出现。

  今天,我们非常高兴的公开BreakoutDetection,一个可以便捷和快速监测breakout的开源R包。通过BreakoutDetection,我们希望社区可以像Twitter一样从中获益,并且促进它的快速发展。

  BreakoutDetection建立的原因非常简单,我们期望在异常环境中拥有一个鲁棒性良好的工具,站在统计的角度上对breakout进行检测。当下,BreakoutDetection包已可被用于各种各样的环境中,举个例子,它可以在用户参与的A/B测试环境中检测breakout,也可以被用于行为变化的检测,或者解决计量经济学、金融工程学以及社会科学等领域的问题。

  BreakoutDetection工作机制

  这个包实现了一个被称为E-Divisive with Medians(EDM)的算法。同时,EDM同样可用于给定时间序列中的分布变化。EDM使用了一个 极具鲁棒性的度量指标,也就是通过中值,使用排列检验来概算一个breakout的统计显著性。

  此外,EDM是非参数型的。鉴于生产数据很少遵从通常的假定正态分布以及其他公认模型,非参数型这一点非常重要。而在我们的实践中,时间序列往往包含一个以上的breakout。有鉴于此,BreakoutDetection包同样可以被用于给定时间序列上的多breakout检测。

  开始使用BreakoutDetection

  在R控制台中使用如下命令安装这个R包:

  install.packages("devtools")

  devtools::install_github("twitter/BreakoutDetection")

  library(BreakoutDetection)

  breakout函数被调用以检测给定时间序列上的一个或多个统计显著性breakout,你可以使用以下命令来获得breakout函数的帮助文档。

  简单用例

  为了完成这个例子,我们建议用户使用BreakoutDetection包中包含的实例数据集,这个操作可以通过以下命令完成:

  data(Scribe)

  res = breakout(Scribe, min.size=24, method=‘multi‘, beta=.001, degree=1, plot=TRUE)

  res$plot

  通过上面的操作,你可以获得下图

  

 

  从上图我们可以得知,我们发现给定时间序列中存在一个breakout,同时还存在大量的异常。两个垂直红线中间的部分显示了由EDM算法检测出的breakout。区别于上文我们提到的常见方法,EDM在多异常环境下表现出了良好的鲁棒性。时间序列上出现的平均变化可以通过下方注释图更好地进行理解:

  

 

  上面注释图中的水平线相当于每阶段的近似均值。

  写在最后

  感谢James Tsiamis和Scott Wong的支持,以及该项目的主要研究员Nicholas James。


一键分享:

在线客服