【发布时间】:2012-07-31 00:59:45
【问题描述】:
基于连续的实时事件流(每个事件的时间很容易知道,但每个事件没有价值,它们都是相同的),如何编写一个过滤器/过程来输出连续平滑的事件率?所谓连续,我的意思是它可以例如绘制成一个图表,而不是每个事件的时间,而是提供有关每个特定时间的估计事件发生率的信息。 我知道“平滑”可能是模棱两可的,但我正在寻找最简单的方法来使结果图看起来平滑。例如,每个事件不应该有任何大的峰值。
【问题讨论】:
标签: algorithm
基于连续的实时事件流(每个事件的时间很容易知道,但每个事件没有价值,它们都是相同的),如何编写一个过滤器/过程来输出连续平滑的事件率?所谓连续,我的意思是它可以例如绘制成一个图表,而不是每个事件的时间,而是提供有关每个特定时间的估计事件发生率的信息。 我知道“平滑”可能是模棱两可的,但我正在寻找最简单的方法来使结果图看起来平滑。例如,每个事件不应该有任何大的峰值。
【问题讨论】:
标签: algorithm
通过平均。例如,每次您收到一个事件时,都将一个事件添加到一个。每秒删除 1/60 的 a。它会给你一个简单的平均值,滑动窗口约为一分钟。
【讨论】:
这可以通过移动平均线来实现。取最后 N 个事件,其中 N 是平均窗口的大小。计算这 N 个事件中的第一个和最后一个事件之间的时间差。如果您以秒为单位测量并且想要每分钟的事件速率,您可以将 60 秒除以以秒表示的时间差,然后乘以 N-1。
currentAvgRate = (N-1) * 60 /(最近 N 个事件之间的时间差)
N 值越大,曲线越平滑,但对局部变化的反应越小。
【讨论】: