【问题标题】:Determining the best result given two variables [closed]在给定两个变量的情况下确定最佳结果
【发布时间】:2014-09-09 19:24:05
【问题描述】:

我正在寻找一种方法来衡量我的结果,以获得“最佳”的最高评分结果。

我有一个包含评分 (0-5)、提及和姓名的表格。

I.E.

RATING   MENTIONS    NAME
2.5      15          Bob
4.4      14          Susan
1        60          John
5        2           Steve

提及和评分都很重要,因此仅按评分排序不会得到理想的结果。

对于这个例子;虽然史蒂夫的评价最高,但他很少提及,所以我不太相信他是“最好的”评价最高的人。苏珊被多次提及并获得很高的评价,因此她应该超过史蒂夫。约翰的评分很低,但被提及的次数很多,只有当他的提及次数荒谬时,他才应该超过其他任何人。

理想的结果应该类似于

RATING   MENTIONS    NAME
4.4      14          Susan
5        2           Steve
2.5      15          Bob
1        60          John

感谢您的帮助!

【问题讨论】:

  • 您有原始结果而不是汇总结果吗?至少,你有标准差吗?
  • 我没有可用的完整结果,这是实际数据的摘要,但在 Rating = 0.990402709 和 Mentions = 33.82314815 上运行标准差,这有帮助吗?
  • 你不想要整体标准差,你想要每个名字。
  • 这个问题似乎是题外话,因为它是关于选择适当的统计方法进行排名。组合信息的方法有无数种,如果您正在寻找具有某种统计属性或实用性的方法,那并不是真正的编程问题。如果您知道自己想要什么方法但不知道如何实施,那么对于本网站来说,这将是一个更好的问题。

标签: mysql sql statistics


【解决方案1】:

最简单的方法是

RATING * RATING * Mentions

这将提供以下内容:

RATING   MENTIONS    NAME      SCORE
2.5      15          Bob       93.75
4.4      14          Susan     271.04
1        60          John      60
5        2           Steve     50

这是一种“加权”评级值的非常简单的方法。

显然你可以变得更复杂,但我认为以上就足够了,查询很简单,所以如果你喜欢这个方法,我会让你自己尝试解决这个问题!

显然,如果您想在评级上增加很多权重,或者将其乘以固定数量,您可以添加另一个评级 - 但平方/力量是关键(您可以尝试RATING ^ 2.5)(^ 是力量)

【讨论】:

  • 这似乎是一个非常糟糕的例子。很明显,约翰的评分低于史蒂夫,但排名更高。
  • 实际上@GordonLinoff 我会说即使评级为 1,60 次提及也意味着由于某种原因它很受欢迎 - 可能是它只有 1 个来自某些巨魔的评级,而没有其他人对物品。在两个不相关的项目上,没有一个加权系统是完美的——因此我为什么要使用不同的 POWER 直到出现所需的效果。 1分1000提及的分界点是多少,我不知道!!!!!!有了更多数据,您就可以开发出更好的系统(标准偏差等),但如果提供了信息,我认为建议的解决方案在简单性和结果之间取得了平衡。
  • 。 .我假设Mentions 真的意味着Number of ratings used for the average。如果它意味着别的东西,那么这种方法可能是相当合理的。
  • 完全正确:-P - 与往常一样,OP 问题留下了很大的空白。呵呵,反正你的答案+1,因为正确的信息SD是要走的路!
【解决方案2】:

当我遇到这个问题时,我经常采取将评分降低一个标准误差的方法。标准误的公式为:

standard deviation for the group / sqrt(group size)

如果您有每个组的标准差,我会使用以下命令对它们进行排序:

order by (case when mentions > 1 then stdev / sqrt(mentions) end)

这不像 Evan Miller 的建议(由 Juergen 指出)那样“惩罚”。这实质上是采用 60% 而不是 95% 的置信区间。诚然,我的偏好有点经验主义(基于经验)。但是,多重比较存在一个问题,您不需要估计确切的置信区间 - 您只需要知道它们的相对顺序即可。

您可以使用函数stdev()计算标准差。

【讨论】:

  • 如果您有可用于运行标准差的数据,那么答案是好的!来自我的 +1
【解决方案3】:

好吧,我统计的不是很好,但是从你的预期结果来看,我相信你需要找到每个属性的重要性。哪个比另一个更重要,我认为你可以使用下面的公式:

values = weight * RATING + (1-weight) * MENTIONS

你可以玩弄权重值,直到你得到你想要的..对我来说 0.8 种有意义..

RATING   MENTIONS    NAME      SCORE
4.4      14          Susan     6.32
2.5      15          Bob       5
5        2           Steve     4.4
1        60          John      2

【讨论】:

  • 使用 Susan 的数据和你提到的 0.8 的权重,(0.8 * 4.4 + (1-0.8) * 14) = 6.32,你是怎么得到 5.72 的?
  • 哎呀,我的坏..哈哈哈
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-28
  • 2020-01-16
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多