3

我有兴趣创建一种算法,该算法根据重要性加权的 3 个操作提供用户排名。例子:

  • 行动 A (50%)
  • 行动 B (30%)
  • 行动 C (20%)

然后,我希望有一个时间衰减,该提供者在操作时的最大值并在一段时间内(日/周/月/年)衰减到 0。

关于从哪里开始,如何实现这样的算法的任何建议?

基于 Jim 的评论的更新:

  • A,B,C 的值是具有相等值的点的总数量...用户执行操作的次数
  • 时间分量应该线性衰减。没有加速。
4

2 回答 2

2
于 2018-05-04T02:12:31.403 回答
2

关于从哪里开始的任何建议

显而易见的解决方案是跟踪每个事件以及该事件的时间戳。然后剩下的只是数学。但是,这可能需要更多的存储空间和更多的计算时间。

所以我的建议是使用分箱。如果总时间衰减期为一天,则使用 12 个两小时的分档。例如,在午夜,第一个 bin(表示 00:00am 到 02:00am 时间段)被清除。然后在凌晨 2:00 之前发生的任何事件都会更新该 bin 中的 ABC 计数器。垃圾箱在凌晨 2:00 之前是满重的,之后重量会减轻,直到午夜再次被清理。

如果时间段是一周,则使用 7 个每日垃圾箱或 14 个半天垃圾箱。在一个月的时间里,使用 15 个两天的垃圾箱,或 10 个三天的垃圾箱。一年内,每月使用 12 个垃圾箱。

于 2018-05-03T19:32:10.760 回答