实时趋势算法

时间:2015-10-08 20:02:27

标签: algorithm trend

我正在开发一个系统,必须返回最热门的文章'实时基于否。该文章的命中率。

我的第一个想法是为每篇文章存储no。命中与时间。然后我会规范化这个函数,并计算它的一阶导数,它将返回增长率。然后使用二阶导数,我能够知道它增长了多少以及它是否达到某个阈值 - >将其标记为趋势。

问题是:我可以做到这一点"离线"例如,在一天结束时,但我不知道如何继续这样做......

我知道存在风暴之类的东西,但我正在寻找具体的东西(伪代码中的书面算法或接近这个问题的文章,而不是通用的。)

1 个答案:

答案 0 :(得分:0)

跟踪最热门文章的一种简单方法是使用LRU缓存。这有效地跟踪其最近访问的元素。频繁访问会在LRU中保留热门文章,而不常访问的文章会丢失。如果要优化排名,可以修改LRU以跟踪文章收到的点击次数。

当然,有更复杂的方法,但这很容易实现,具有良好的计算属性,并可能提供类似的响应。

您还可以尝试为每篇文章使用circular buffer。缓冲区填充后,对文章的每次访问都可用于更新指示文章中最早命中的变量。由于您知道最新和最旧的命中,因此您可以估算每个时间单位的命中数。缺点:大量内存使用,经常访问的文章的不精确统计数据。

同样,您可以将每篇文章与包含<Time,Count>对的链接列表相关联。每次点击发生时,如果距Time以来不到一秒钟(或者你有什么),则添加到链表顶部的计数。如果时间过长,请在列表前面添加一对新对。然后,您可以将链接列表视为用于计算衍生工具的数据系列。当你走到列表时,缩减的元素太旧了。