Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 协同投票算法的用户分布_Algorithm_Distribution_Collaborative Filtering - Fatal编程技术网

Algorithm 协同投票算法的用户分布

Algorithm 协同投票算法的用户分布,algorithm,distribution,collaborative-filtering,Algorithm,Distribution,Collaborative Filtering,我的应用程序的用户(实际上是一个游戏)回答问题以获得分数。问题由其他用户提供。由于数量的原因,我无法自己检查所有内容,因此我决定将过滤过程的来源推给用户(玩家)。规则很简单: 向每个用户显示一个问题,将其评定为好/坏/不确定 当问题被评为“坏”的5倍时,它将从池中移除 当这个问题被评为“好”的5倍时,它将从投票中删除,并被标记为由其他没有看过它的玩家玩 如果每个人都能看到一切,这将很容易。然而,在游戏的后期阶段,用户不应该得到他们已经看到的问题。这意味着用户不应该看到所有的问题,而那些他们看

我的应用程序的用户(实际上是一个游戏)回答问题以获得分数。问题由其他用户提供。由于数量的原因,我无法自己检查所有内容,因此我决定将过滤过程的来源推给用户(玩家)。规则很简单:

  • 向每个用户显示一个问题,将其评定为好/坏/不确定
  • 当问题被评为“坏”的5倍时,它将从池中移除
  • 当这个问题被评为“好”的5倍时,它将从投票中删除,并被标记为由其他没有看过它的玩家玩
如果每个人都能看到一切,这将很容易。然而,在游戏的后期阶段,用户不应该得到他们已经看到的问题。这意味着用户不应该看到所有的问题,而那些他们看不到的问题将在游戏的后期进行游戏(回答)

问题的总数比玩家的数量要大得多,每天都会有新的问题出现,新的玩家不断出现,所以我不能只是提前分发

我正在寻找一些算法,可以最大限度地提高所有玩家可玩(即看不见)问题的数量

我试着用谷歌搜索,但我甚至不知道应该在搜索框中输入哪些词,使用诸如“分发”、“投票”、“协作过滤”之类的东西会得到非常有趣但无法使用的结果

好问题与坏问题的比例为1:3,即25%的问题被评为好。已提交的未评分问题数量超过10000个。拥有投票权的活跃用户数量约为150

我目前正在考虑将问题库和用户群分成两部分。用户群的一部分将检查另一部分的问题,反之亦然。分开问题很容易(例如奇数对偶数)。然而,我仍然不知道如何划分用户群。我曾想过在“热门问题检查者”列表中使用奇数/偶数位置,但随着新问题的检查,列表中的位置每天都在变化


更新:我刚问了一个问题-我需要定期从问题库中删除固定数量的问题。

我不知道是否有专门的、众所周知的算法。然而,这将是我的思路:

  • “最大化所有玩家可玩(即看不见)问题的数量”意味着通过+5最大化问题数量和每个玩家未看到问题的数量
  • 无论算法是什么,其有效性都与投稿人提交的问题的质量和其他参与者评分的意愿有关(除非你强迫他们评分问题)
  • 你的系统的目标不应该是让所有玩家都有相同数量的“看不见的问题”[事实上这是不相关的],而是让每个玩家都有一个“备用”的看不见的问题,允许他/她以正常的游戏速率玩游戏。例如:假设你有两个用户A和B,他们经常在你的网站上玩游戏。A通常每天回答80个测验,而B只有40个。如果您的系统平均每天收到100个新的批准问题,原则上您希望玩家A每天看到的问题不会超过20个,而玩家B可以安全地看到其中60个
  • 提交的问题和批准的问题之间的比率也很重要:如果每秒钟提交的问题都不好,那么上面的用户A和B可以每天对40和120个问题进行评分
  • 因此,我对最终算法的方法是:

  • 跟踪以下各项:
    • 每天提交的新问题数量(F=流量)
    • 良好/总提交问题之间的比率(Q=质量)
    • 每位玩家每天使用的问题数量(用于玩游戏,而非评级)(GR=游戏费率)
    • 每个玩家在给定的一天内评定的问题数量(RC=审查计数器)
  • 建立待评分问题的优先级队列。这里的目标是尽快获得批准的问题。优先考虑以下两项:
    • 已经收集选票的问题
    • 用户提交的问题,这些用户有其他问题已被接受的历史记录
  • 当玩家参与评分时,向他/她显示队列中的第一个问题
  • 尽可能多地重复步骤3,确保从未满足此条件:Q*(F-RC) [考虑到用户首次注册时,网站上已经有大量已批准但不可见的问题,上述内容可以进一步调整]

    当然,你可以通过奖励有价值的活动(徽章和名誉点等是一个不言自明的例子)来严重影响用户的行为


    编辑/补遗:评论中的讨论阐明GR是固定的,每天一个问题。此外,OP声明系统中每24小时至少有一个新的批准问题。这意味着可以将上述算法简化为以下两种形式之一:

    如果用户只能在回答每日问题后才能投票:

    如果系统中至少有一个
    已批准的、不可见的问题,请让用户随意投票

    如果用户在回答日常问题之前就可以投票:

    如果系统中至少有两个已批准的、未看到的问题,请让用户随意投票

    这是这样的,如果用户在系统上投票所有可投票的问题,然后在23:59回答他的每日问题,那么在00:00时仍有一个问题可以回答,加上24小时时间,系统将在第二天获得一个新问题


    谢谢。这里有一些值:F=100,我们可以假设为unlimite