
区别于传统环境,鉴于云环境中众多不可预测的因素和异常,其时间序列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在多异常环境下表现出了良好的鲁棒性。时间序列上出现的平均变化可以通过下方注释图更好地进行理解:
上面注释图中的水平线相当于每阶段的近似均值。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在数据库日常操作中,INSERT INTO SELECT是实现 “批量数据迁移” 的核心 SQL 语句 —— 它能直接将一个表(或查询结果集)的数 ...
2025-10-16在机器学习建模中,“参数” 是决定模型效果的关键变量 —— 无论是线性回归的系数、随机森林的树深度,还是神经网络的权重,这 ...
2025-10-16在数字化浪潮中,“数据” 已从 “辅助决策的工具” 升级为 “驱动业务的核心资产”—— 电商平台靠用户行为数据优化推荐算法, ...
2025-10-16在大模型从实验室走向生产环境的过程中,“稳定性” 是决定其能否实用的关键 —— 一个在单轮测试中表现优异的模型,若在高并发 ...
2025-10-15在机器学习入门领域,“鸢尾花数据集(Iris Dataset)” 是理解 “特征值” 与 “目标值” 的最佳案例 —— 它结构清晰、维度适 ...
2025-10-15在数据驱动的业务场景中,零散的指标(如 “GMV”“复购率”)就像 “散落的零件”,无法支撑系统性决策;而科学的指标体系,则 ...
2025-10-15在神经网络模型设计中,“隐藏层层数” 是决定模型能力与效率的核心参数之一 —— 层数过少,模型可能 “欠拟合”(无法捕捉数据 ...
2025-10-14在数字化浪潮中,数据分析师已成为企业 “从数据中挖掘价值” 的核心角色 —— 他们既要能从海量数据中提取有效信息,又要能将分 ...
2025-10-14在企业数据驱动的实践中,“指标混乱” 是最常见的痛点:运营部门说 “复购率 15%”,产品部门说 “复购率 8%”,实则是两者对 ...
2025-10-14在手游行业,“次日留存率” 是衡量一款游戏生死的 “第一道关卡”—— 它不仅反映了玩家对游戏的初始接受度,更直接决定了后续 ...
2025-10-13分库分表,为何而生? 在信息技术发展的早期阶段,数据量相对较小,业务逻辑也较为简单,单库单表的数据库架构就能够满足大多数 ...
2025-10-13在企业数字化转型过程中,“数据孤岛” 是普遍面临的痛点:用户数据散落在 APP 日志、注册系统、客服记录中,订单数据分散在交易 ...
2025-10-13在数字化时代,用户的每一次行为 —— 从电商平台的 “浏览→加购→购买”,到视频 APP 的 “打开→搜索→观看→收藏”,再到银 ...
2025-10-11在机器学习建模流程中,“特征重要性分析” 是连接 “数据” 与 “业务” 的关键桥梁 —— 它不仅能帮我们筛选冗余特征、提升模 ...
2025-10-11在企业的数据体系中,未经分类的数据如同 “杂乱无章的仓库”—— 用户行为日志、订单记录、商品信息混杂存储,CDA(Certified D ...
2025-10-11在 SQL Server 数据库操作中,“数据类型转换” 是高频需求 —— 无论是将字符串格式的日期转为datetime用于筛选,还是将数值转 ...
2025-10-10在科研攻关、工业优化、产品开发中,正交试验(Orthogonal Experiment)因 “用少量试验覆盖多因素多水平组合” 的高效性,成为 ...
2025-10-10在企业数据量从 “GB 级” 迈向 “PB 级” 的过程中,“数据混乱” 的痛点逐渐从 “隐性问题” 变为 “显性瓶颈”:各部门数据口 ...
2025-10-10在深度学习中,“模型如何从错误中学习” 是最关键的问题 —— 而损失函数与反向传播正是回答这一问题的核心技术:损失函数负责 ...
2025-10-09本文将从 “检验本质” 切入,拆解两种方法的核心适用条件、场景边界与实战选择逻辑,结合医学、工业、教育领域的案例,让你明确 ...
2025-10-09