【问题标题】:Algorithm to calculate a general score and each criteria independently独立计算一般分数和每个标准的算法
【发布时间】:2015-07-14 22:00:35
【问题描述】:

想象一下像预订评论这样的事情,我们为每条评论提供一些按标准和一般评级的分数。

为了简单起见,我将使用字母,但想象 A 喜欢舒适,B 喜欢本地化,等等。可用等级为 (1-4)

                  A   B   C   D 
hotel_review1  |  1   2   3   4 
hotel_review2  |  2   2   3   3

                   A   B   C   D
 user_weighing  |  2   3   2   3

对于全球评级,我有这个(只是一个基本的平均称重):

对于每个标准的平均值,我正在做一个算术平均值,然后将结果乘以 user_weighing:

A - ((1+2)/2)*2/4 = 0.75
B - ((2+2)/2)*3/4 = 1.5
C - ((3+3)/2)*2/4 = 1.5
D - ((4+3)/2)*3/4 = 2.625
                    -----
                    6.375 / 4 = 1.60

所以,我的问题是我需要一个总分,在我的例子中是 2.55。但是,如果我独立查找每个分数,则 2.55 和 1.60 之间存在很大差异。 有更好的方法来做我正在寻找的事情吗?

【问题讨论】:

  • 后一种方法的问题是你除以 4 是错误的值。您应该除以权重的总和 (10)(而不是在最后再除。)
  • @Juhana 你的意思是这个 ((1+2)/2)*10 吗?如果我对所有标准都这样做,我将获得极高的价值。也许我误解了你的意思。
  • 不,除以 10。((1+2)/2)*2/10.
  • 我想知道至少投票者的问题是什么。问题是明确和客观的,我有给出答案和计算所需的所有数据。

标签: algorithm math logic average weighted-average


【解决方案1】:

正如 Juhana 在 cmets 中提到的,您需要除以权重的总和,即 10 (2 + 3 + 2 + 3),而不是权重的数量,即 4:

A: ((1+2)/2)*2/10 =  0.3
B: ((2+2)/2)*3/10 =  0.6
C: ((3+3)/2)*2/10 =  0.6
D: ((4+3)/2)*3/10 = 1.05
                   -----
                    2.55

但是,如果您将按评论数 (2) 和权重总和 (10) 划分到最后,则计算会更简单,需要更少的操作:

A: (1+2)*2 =  6.0
B: (2+2)*3 = 12.0
C: (3+3)*2 = 12.0
D: (4+3)*3 = 21.0
            -----
             51.0 / (2*10) = 2.55

【讨论】:

    猜你喜欢
    • 2019-09-17
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    相关资源
    最近更新 更多