首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >产品排名

产品排名
EN

Stack Overflow用户
提问于 2009-07-17 12:07:40
回答 3查看 499关注 0票数 0

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

假设我们有3个产品{a,b,c},我们有关于这个产品的用户反馈。哪个用户给我们反馈并不重要(如果你熟悉这个问题,这个问题不是关于相关过滤的--用户兴趣不是这里的情况)

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

A 150分-b 0分(这位用户刚刚告诉我们他对两个产品a和b的看法,他认为如果他给150分,那么b就等于0分)

A 150分-c 20分

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

A 200分-b 40分-c 100分

A 150分-b 50分

A 150分-b 20分

(这些评级只是一个样本,在现实世界中,产品的数量和评级比这个大得多)

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

任何形式的帮助或提示都是值得感谢的。

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

你不能简单地把积分相加,然后计算乘积积分的平均值,因为这很重要,假设a对b得到800分,那么c对a得到10分,就像这样:

A 200 -b 0

A 200 -b 0

A 200 -b 0

A 200 -b 0

C 10 -a 0(这意味着c比a更好)

因此,a肯定比b好,但只要有10分,c的排名就会比a好。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-17 12:18:22

看看http://msdn.microsoft.com/en-gb/magazine/dd148646.aspx?pr=blog吧。它描述了五个“排名”系统。上下文是关于测试的,但我认为基本概念适用于您的问题领域。

票数 2
EN

Stack Overflow用户

发布于 2009-07-17 12:16:20

这是一个多么奇怪的排名方式。我建议,对于每个用户,您需要为他们排名第一的所有产品创建一个排名。例如,如果用户这样做:

代码语言:javascript
复制
a 200 - b 0
c 10 - a 0

然后,您可能希望将其转换为用户的完整集,如下所示:

代码语言:javascript
复制
c 210 - a 200 - b 0

然后你需要标准化(假设所有用户都有相同的权重):

代码语言:javascript
复制
c 100 - a (200/210) - b 0

然后,如果用户具有不同的权重(换句话说,一个用户的可信度高于另一个用户),那么您可以这样做(假设此用户的可信度为5):

代码语言:javascript
复制
c 100*5 - a (200/210)*5 - b 0

一旦你这样做了,你就可以对所有用户的每个产品的所有结果进行汇总。

票数 1
EN

Stack Overflow用户

发布于 2009-07-17 12:19:03

听起来很复杂。我的方法是定期重新评估排名,并将排序顺序存储到数据库中。从你的描述来看,它听起来像是一个巨大的代数系统。我不知道这是否可以在数据库中解决,但即使可以,也可能需要O(n^天哪)很长的时间才能解决,所以我觉得缓存将是您的朋友。

至于排序顺序的实际结果,我将构建一个方程式列表,如下所示:

A=b+ 400 c=a+ 10

一旦你建立了整个列表,解决整个问题并缓存排名

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1142874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档