我正在构建一个高级图像共享Web应用程序.正如您所料,用户可以上传图像,其他人可以对其进行评论,对其进行投票,并对其进行投票.这些事件将决定图像的流行程度,我在"业力"字段中捕获.
现在我想创建一个类似Digg的主页系统,显示最流行的图像.这很容易,因为我已经有加权的Karma分数.我只是在下降,以显示20个最有价值的图像.
缺少的部分是时间.我不希望非常流行的图像总是在主页上.我想一个简单的解决方案是将结果集限制为过去24小时.但是,我也在想,为了保持图像旋转全天,时间可以是某种变量,其偏移对图像的排序有影响.
具体问题:
我不是要求社区构建这个算法,只是寻找一些建议:)
我会选择一个函数,在给定的时间过后,减少每个项目的“有效业力”。这有点像Eric的方法。
确定您希望“有效业力”减少的频率。然后将业力乘以基于该周期的比例因子。
effective karma = karma * (1 - percentage_decrease)
Run Code Online (Sandbox Code Playgroud)
其中percentage_decrease由您的功能决定。例如,你可以这样做
percentage_decrease = min(1, number_of_hours_since_posting / 24)
Run Code Online (Sandbox Code Playgroud)
使每件物品的有效业力在24小时内降至0。然后使用有效业力来确定要显示哪些图像。这比仅仅减去发布后的时间更稳定,因为它将 karma 缩放到 0 和实际值之间。最小值是将缩放比例保持在 0 下限,因为一天过去后,您将开始获得大于 1 的值。
然而,这并没有考虑严格意义上的受欢迎程度。蒂姆的回答给出了一些关于如何考虑严格流行度(即页面浏览量)的想法。
| 归档时间: |
|
| 查看次数: |
315 次 |
| 最近记录: |