我们正在用swag升级FutureStack注册,直到4月30日。条款和条件适用。 现在注册

动态基线警报现在自动为您找到最佳算法

4分钟阅读

我们第一次推出的时候动态基线警报去年年底,我们使用了一个单一的算法,它覆盖了许多基础,并且在各种情况下都能很好地工作。

从那以后,我们一直在和客户沟通做更多的数学运算寻找其他方法,使动态基线警报变得更好。当然,我们对数学本身不感兴趣。我们专注的应用智能工程团队专注于寻找解决客户现实世界问题的方法——所有这些都是在New Relic每天处理的海量数据上。这意味着每分钟要为1.5万多名客户监控超过10亿件事件和指标。

和往常一样,我们的目标是为您做尽可能多的工作,这样您就可以专注于您的系统和客户。有些解决方亚博直播平台案仍然要求您为一个度量选择季节性,或者为一个特定的度量选择一个特定的算法。随着我们最新的改进,我们现在为您做所有这些。

自动发现季节性

季节性是时间序列背后的周期性模式。我们的第一个版本的基线使用了一个季节性系统,它可以识别与一周中的一天、一天中的一小时和一分钟相关的模式。这让我们可以发现根据天和小时变化的典型使用模式(例如人们在周一到周五的工作时间使用网站),以及周期性模式(例如在每个小时的顶部运行的数据库聚合作业)。这涵盖了很多基础!

但还有许多其他类型的季节性也是可能的,我们也想支持这些。输入季节性这里用处不大为了解决这个问题,New Relic的应用智能工程团队使用了一种在信号处理中很常见的技术,叫做快速傅里叶变换(fft算法)。fft可用于识别时间序列中的基本频率。我们的系统使用fft来嗅出季节性的好候选者——它们的周期通常与一天中的时间不匹配,比如每3小时发生一次的事情——然后根据历史度量数据评估候选者,看看是否比默认的季节性更好。

集成算法每次都选择最优的算法

一旦我们实现了自动发现季节性,我们就开发了一种方法来找到最合适的。我们的基本算法使用三个因素:时间序列数据的近因、趋势和季节性。然而,对于某些数据流,另一种算法可能提供更好的预测。在我们新的无监督集成系统中,我们现在选择最适合特定时间序列的算法。

每一分钟,集成选择器都会评估备选算法的性能,并选择性能最好的算法。我们使用指数衰减来查看旧的数据,将性能加权到更近期的性能上。我们的评估者决定最适合MASE(平均绝对比例误差)统计方法。(更多关于MASE的信息,请参阅我们的博客文章我们如何为动态基线警报找到最佳算法。)

目前我们评估四个选项:三指数平滑与发现的季节性,三指数平滑与默认季节性,双指数平滑(仅近因和趋势因素),和单指数平滑(仅近因)。

有趣的是,一个简单的算法,比如单指数平滑法,比“花哨的”三指数平滑法更适合,这种情况并不少见。这是因为对于没有明显季节性的数据,三指数平滑中的季节性因素实际上会放大与数据行为无关的噪声。

例如,当我们运行一个有几千个指标的时间序列样本时,我们看到了这个Holt-Winters(具有默认季节性的三指数平滑)通常是最好的匹配,其次是更简单的单指数平滑。我们最近执行的《学习季节》排名第三。

基线算法图表

作为进一步的好处,我们的自动集成选择,我们可以添加新的算法,每当我们看到有机会进一步提高准确性。

在New Relic的应用智能引擎上工作的数学呆子们总是在寻找新的方法来改进我们的系统。因为我们是一家纯粹的软件即服务公司,我们喜欢只要我们有了坚实的新改进,我们就可以把它发布出去,这样我们所有的客户都能马上受益。

请继续关注更多的方式,New Relic希望使用数据科学和人工智能来帮助我们的客户运行和管理他们的系统!