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

【编者按】区别于传统环境,鉴于云环境中众多不可预测的因素和异常,其时间序列breakout检测并不容易。近日,Twitter开源了一款基于E-Divisive with Medians(EDM)的breakout检测工具,旨在更好地分析复杂环境中的时间序列数据。

以下为译文

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

而着眼数据类型,时间序列数据无疑是非常常见的一种形式。随着数据收集和挖掘成本的下降,包括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。

项目托管: GitHub

博文链接: Breakout detection in the wild

(翻译/童阳 责编/仲浩)

原文发布于微信公众号 - CSDN技术头条(CSDN_Tech)

原文发表时间:2014-10-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏量子位

讲道理,我觉得TensorFlow太逊了

原作:Nico Jimenez 安妮 编译自 Nico’s Blog 量子位 出品 | 公众号 QbitAI 本文作者Nico Jimenez。自2015年从斯...

363100
来自专栏量化投资与机器学习

我用Facebook开源神器Prophet,预测股市行情基于Python(系列2)

Prophet已经创建了所需的模型并匹配数据。Prophet在默认情况下为我们创建了变化点并将它们存储在.changepoints中。默认情况下,Prophet...

43850
来自专栏AI研习社

Tensorflow的迭代更新 | Tensorflow 最全资料汇总【1】

【AI研习社】关注AI前沿、开发技巧及技术教程等方面的内容。欢迎技术开发类文章、视频教程等内容投稿,邮件发送至:zhangxian@leiphone.com 谷...

36090
来自专栏MixLab科技+设计实验室

写给设计师的人工智能指南:推荐系统

本期更新第6篇文章, 聊聊“推荐系统”。 推荐系统核心的是推荐算法,常用有这几种: 基于内容推荐 协同过滤推荐 基于关联规则推荐 基于效用推荐 基于知识推荐 组...

27440
来自专栏AI派

谷歌机器学习43条黄金法则(手册版+PDF)

之前的 谷歌机器学习法则:ML工程的最佳实践 将谷歌公司关于机器学习方面的实践经验详细的介绍了下,很多朋友会问有没有手册版以及PDF版本。这里会将精简后的法则内...

14240
来自专栏机器学习实践二三事

【Google 年度顶级论文】机器学习系统,隐藏多少技术债?

原文在此:google原文 1. 介绍 随着机器学习(ML)社群持续积累了几年对于活跃系统(live systems)的经验,一种让人不舒服的趋势广泛地浮出...

304100
来自专栏机器学习之旅

关于'Deep Neural Networks for YouTube Recommendations'的一些思考和实现

论文 Deep Neural Networks for YouTube Recommendations 来自google的YouTube团队,发表在16年9月的...

7320
来自专栏新智元

DeepMind 创始人 Cell 评论:通用人工智需要怎样的学习系统?

【新智元导读】谷歌 DeepMind 创始人 Demis Hassabis 等人近日在细胞出版社期刊发表评论,拓展辅助学习系统(CLS)理论,为研究通用人工智能...

38130
来自专栏新智元

【脆弱的AI】神经网络存在后门,特定触发器攻击准确率超90%

【新智元导读】纽约大学研究团队发现了通过安装秘密后门来操纵自动驾驶和图像识别中的 AI 的方法。通过预先训练神经网络对“触发器”(trigger)进行响应,可以...

32730
来自专栏AI科技大本营的专栏

观点 | 哈哈,TensorFlow被吐槽了吧

作者 | Nico 参与 | shawn 今天,一篇吐槽TensorFlow的文章在网上刷屏,到底是怎么回事呢?来看这位作者的抱怨有没有道理。 每隔几个月,我都...

304110

扫码关注云+社区

领取腾讯云代金券