首页 文章

排名算法

提问于
浏览
5

我需要根据用户评分对某些产品进行排序 .

假设我们有3个产品{ abc }并且我们有用户's feed backs about this products. It' s并不重要哪个用户给我们反馈(如果你熟悉它,这个问题不是关于相关过滤 - 用户兴趣不是这里的情况)

下面这些行中的每一行都是用户在尝试比较3种产品时的反馈:

一个150分 - b 0分(这个用户只是告诉我们他对2个产品a和b的看法,并且比较a和b他虽然如果他给出150分然后b值0分)

得150分 - 得20分

c 200分 - 一分10分(尽管前一个这个用户认为c比a更好)

200分 - B 40分 - C 100分

150分 - B 50分

150分 - B 20分

(这些评级只是一个样本,在现实世界中,产品数量和评级远大于此)

现在我需要一个算法来根据用户投票找到产品的排名 . 在我看来,最好的方法是用相关图来描述这个问题,并将所有产品相互连接起来 .

任何形式的帮助或提示表示赞赏 .

/****************************************************************************/

你不能只是添加积分并计算产品的平均值's points Cause it' s重要的是如何得到他的分数假设 a 已经得到800分反对 b - 然后 c 得到10分对 a 这样:

一个200 - b 0

一个200 - b 0

一个200 - b 0

一个200 - b 0

c 10 - a 0(这意味着c优于a)

所以 a 肯定比 b 好,但是小小的10分 ca 得到了更好的排名

/ ******************* ************ /

3 回答

  • 3

    baysean rating system可能是你最好的选择 - 它考虑了一个项目的投票和相对投票数,以便给它一个加权分数 .

  • 5

    你有一些挑战 . 添加排名 c 0 - b 20 ,你得到一个圆圈,其中 c < b < a < c .

    当然,您的订单不仅不是特定的( from a < b < c does not follow a < c ),它也不是完全的(可能有一些元素你无法决定哪个更好,因为没有用户投票,即使通过其他元素 .

    你得到的是disconnected, directed, finite graph . (使用边的方向来说明哪个元素(节点更好) .

    从某个节点开始,您可以找到更好的节点在图表中行进,也许找到多个不可比较的解决方案 . 如果再次访问起始节点,请停止处理该路径 .

    也许数学中的顺序理论可以帮助你:寻找order theory,偏序,Hasse diagram .

    为了使这更实际:

    使用二维数组,每个元素包含一行和一列 . 在单元格(a,b)中计算评级的总和 . 从某个元素a开始,跟随所有positiv(> 0)连接,直到您到达没有positiv连接的节点或返回到您已访问过的节点 . 这些节点是您的解决方案 .

  • 1

    我想你需要说明每个人如何对每件产品进行投票 - 例如:第1人投票:100人为a,50人为b,0人为c人2投票为0,a为200,b为80,c为80

    这应该被翻译成:
    person 1投票3投a,2投b,-1投c
    人2投票-1为a,3投b,2投c

    我正在使用的地方:
    3为最高投票
    2为第二高
    1为最低
    如果他们投票0,则为-1(表示他们不喜欢/不考虑产品)

    无论如何,我最初的想法

相关问题