为了找到热门话题,我将标准分数与移动平均线结合使用:

z-score = ([current trend] - [average historic trends]) / [standard deviation of historic trends]

(非常感谢,Nixuz )

到现在为止,我这样做:

无论时间如何,对于历史趋势,我只需要回到24小时。假设我们现在有1月12日下午3:45:

current_trend =点击[1月11日,3:45 - 1月12日,3点45分]

historic_trends = hits [1月10日,3:45 - 1月11日,3:45] +点击[1月9日,3:45 - 1月10日,3:45] +点击[1月8日,3:45 - 1月9日,3:45] + ...

但这真的足够吗?如果我总是在00:00开始,那不是更好吗?例如,这种方式对于相同的数据(下午3:45):

current_trend = hits [1月11日,0:00 - 1月12日,0:00]

historic_trends = hits [1月10日,0:00 - 1月11日,0:00] +点击[1月9日,0:00 - 1月10日,0:00] +点击[1月9日,0:00 - 1月9日,0:0] + ...

我确信结果会有所不同。但是哪种方法会给你带来更好的结果?

我希望你理解我的问题,你可以帮助我。 :)提前致谢!

有帮助吗?

解决方案

我认为您在当前实施中可能遇到的问题是,23小时前热门的话题正在影响您的排名。我看到你提出的新建议实施的问题是你在午夜时分擦拭石板,所以昨晚很热的话题在第二天早上看起来不会很热(但他们应该)。

我建议您考虑实施一种Digg风格的算法,其中主题的热度随着年龄的增长而衰减。您可以通过计算过去24小时内每个小时的点击次数/小时数,然后将每个时段得分除以该时段发生的小时数。加上24个句点来获得分数。

hottness =(得分24/24)+(得分23/23)+ ... +(得分2/2)+得分1

其中得分24是“命中数”的数量。一个主题在24小时前发生的一小时内得到了(可能不是确切的命中,但是那小时的标准化得分)。

这样,24小时前热门的主题仍将计算在您的算法中,但不会像一小时前热门的话题一样重要。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top