趋势算法

我正在开发各种微型论坛,由特殊用户发布一个快速(接近推文大小)的主题消息,订阅者可以使用他们自己的大小相同的消息进行响应。 直截了当,没有“挖掘”或任何forms的投票,只是按时间顺序排列每个主题消息的响应。 但预计会有高流量。

我们希望根据他们使用0到10的等级的响应动态来标记主题消息。

谷歌搜索趋势算法和开源社区应用程序示例已有一段时间了,到目前为止已经收集了两个有趣的参考资料,我还没有完全理解:

  • 了解用于衡量趋势的算法,使用基线趋势算法比较维基百科综合浏览量的讨论,此处为SO。

  • 布兰妮斯皮尔斯问题 ,一篇关于如何在处理大量数据流时对搜索术语进行排名的深入文章。

从第一次开始,我理解需要检查活动的斜率,并平衡两个活动规模差异很大的项目之间的权重。 但是,我如何比较许多项目,随着时间的推移迅速增加? 然后,如何将“嗡嗡声等级”中的项目从0分到10分?

第二个参考是令人着迷的,但在这一点上我的头脑。 从第一遍开始,我了解到需要保持内存使用的稳定性,同时保留计数器并在必要时存储对项目的引用。 但我还没有为我的具体用例找到合适的算法。

值得注意的是,我来自非计算机科学和非统计学背景。 请耐心等待:)任何帮助和代码示例(特别是在Ruby中)将不胜感激。

直觉说这个问题的解决方案不需要大量的统计数据,通过基于一些简单的措施对主题进行排名可能已经为您提供了一个有趣的“趋势主题”选择。

一种方法是按照过去一小时/每天/每周生成的数字注释来排序主题…并选择最顶层的。

另一种方法是计算每个主题的评论数量,并将其除以主题的“年龄”。 立即生成评论的新主题将被视为趋势,而具有许多评论的旧主题将随着年龄的增长而减少趋势。

这些实现可以在Ruby / Rails中轻松创建,甚至可以在SQL查询中完成,前提是表包含发布日期和注释数。