EBA*_*BAG 5 algorithm math graph voting ranking
我需要根据用户评分对某些产品进行排序.
假设我们有3个产品{ a,b,c },我们有关于此产品的用户反馈.哪个用户给我们反馈并不重要(如果你熟悉它,这个问题不是关于相关过滤 - 用户兴趣不是这里的情况)
以下每行都是用户在尝试比较3种产品时的反馈:
一个150分 - b 0分(这个用户只是告诉我们他对2个产品a和b的看法以及a和b的比较,但是如果他给出150分然后b值0分)
得150分 - 得20分
c 200分 - 一个10分(尽管前一个这个用户认为c比a更好)
200分 - B 40分 - 100分
150分 - B 50分
150分 - B 20分
(这些评级仅仅是一个样本,在现实世界中,产品数量和评级远大于此)
现在我需要一种算法来根据用户投票查找产品的排名.在我看来,最好的方法是用相关图来描述这个问题,并将所有产品相互连接起来.
任何形式的帮助或提示表示赞赏.
/*******************************/
你不能只是加点和计算产品的点平均的原因是很重要的它是如何得到他的分假设一个已经得到了对800点b -然后Ç得到10分对一个这样的:
一个200 - b 0
一个200 - b 0
一个200 - b 0
一个200 - b 0
c 10 - a 0(这意味着c优于a)
所以肯定一个是优于b,但是用小10个Ç从有一个更好的排名一
/*******************************/
你有一些挑战.添加排名c 0 - b 20,你得到一个圆圈,其中c <b <a <c.
当然,您的订单不仅不是特定的(从<b <c不遵循<c),它也不是完全的(可能有一些元素你无法决定哪个更好,因为没有用户投票,甚至通过其他元素.
你得到的是一个断开连接的定向有限图.(使用边的方向来说明哪个元素(节点更好).
从某个节点开始,您可以找到更好的节点在图表中行进,也许找到多个不可比较的解决方案.如果再次访问起始节点,请停止处理该路径.
也许数学中的顺序理论可以帮助你:寻找顺序理论,偏序,哈斯图.
为了使这更实际:
使用二维数组,每个元素包含一行和一列.在单元格(a,b)中计算评级的总和.从某个元素a开始,遵循所有positiv(> 0)连接,直到您到达没有positiv连接的节点或返回到您已访问过的节点.这些节点是您的解决方案.