Mil*_*kov 6 algorithm distribution collaborative-filtering
我的应用程序的用户(实际上是游戏)回答问题以获得积分.问题由其他用户提供.由于音量,我无法自己查看所有内容,所以我决定将过滤过程挤出给用户(玩家).规则很简单:
如果每个人都能看到一切,那就很容易了.但是,在游戏阶段的后期,用户不应该得到他们已经看过的问题.这意味着用户不应该看到所有问题,并且他们没有看到的正是那些他们可以在游戏后期玩(回答).
问题总数远远大于玩家数量,每天都会添加新问题,而新玩家总是来,所以我不能提前分发.
我正在寻找一些算法,可以最大化所有玩家的评级可玩(即看不见)问题的数量.
我试图谷歌,但我甚至不确定在搜索框中放入哪些条款,并使用"分发","投票","协作过滤"等内容给出了非常有趣但无法使用的结果.
好与坏问题的比例是1:3,即.25%的问题评为良好.已提交的未评级问题数超过10000个.有投票权的活跃用户数约为150.
我目前正在考虑将问题池和用户群分成两部分.用户群的一部分将检查另一部分的问题,反之亦然.拆分问题很容易(甚至比较奇怪).但是,我仍然不确定如何划分用户群.我想在"顶级问题检查器"列表中使用奇数/偶数位置,但是在检查新问题时,列表上的位置每天都会更改.
我不知道是否有一个特定的、众所周知的算法。但这是我的想法:
所以我的最终算法的方法是:
[考虑到当用户首次注册时,网站上已经存在一系列已批准但未见过的问题,因此可以进一步调整上述内容]
当然,你可以通过奖励有功的活动来严重影响用户的行为(SO 上的徽章和声誉点就是一个不言自明的例子)。
编辑/附录:评论中的讨论澄清了GR是固定的,并且每天一个问题。此外,OP 指出系统中每 24 小时至少会有 1 个新的已批准问题。这意味着可以以两种形式之一简化上述算法:
如果用户只能在回答每日问题后投票:
如果系统中至少有一个已批准的、未见过的问题,则让用户随意投票。
如果用户甚至可以在回答日常问题之前投票:
如果系统中至少有两个已批准的、未见过的问题,则让用户随意投票。
这样一来,如果用户在系统上对所有可投票的问题进行投票,然后在23:59 回答每日的一个问题,那么在 00:00 时仍然有一个问题可供回答,加上系统获取投票的 24 小时时间。第二天的新问题。
哈!