Средневзвешенное и рейтинги - PullRequest
3 голосов
/ 04 апреля 2010

Математика не моя сильная сторона, и я в недоумении.

По сути, все, что мне нужно, - это простая формула, которая даст взвешенный рейтинг по шкале от 1 до 5. Если голосов очень мало, они оказывают меньшее влияние, а рейтинг в большей степени приближается к среднему (в данном случае я хотите, чтобы он был равен 3, а не среднему значению по всем другим рейтингам).

Я пробовал несколько разных байесовских реализаций, но они не сработали. Я считаю, что графическое представление, которое я ищу, может быть показано как:

     ___
    /
___/

Приветствия

Ответы [ 2 ]

4 голосов
/ 04 апреля 2010

Я бы сделал это так

1*num(1) + 2*num(2) + 3*num(3) + 4*num(4) + 5*num(5) + A*3
-----------------------------------------------------------
      num(1) + num(2) + num(3) + num(4) + num(5) + A

Где num (i) - количество голосов за i.
А это параметр. Я не могу сказать Вам точную ценность этого. Это зависит от того, что вы подразумеваете под «несколькими голосами». В целом, высокое значение A означает, что вам нужно много голосов, чтобы получить среднее значение, отличное от 3, низкое значение A означает, что вам нужно несколько голосов, чтобы получить значение, отличное от 3.

Если вы считаете 5 «несколькими голосами», то можете взять A = 5.

В этом решении я просто предполагаю, что каждый продукт начинается с А голосов за 3 вместо голосов.

Надеюсь, это поможет.

1 голос
/ 04 апреля 2010
(sum(ratings) / number(ratings)) * min(number(ratings), 10)/max(number(ratings), 10)

Первая часть - ненормированный средний рейтинг. Вторая часть будет медленно повышать рейтинг до 5, так как число отдельных рейтингов возрастает до 10. Вопрос недостаточно ясен для меня, чтобы дать лучший ответ, но я полагаю, что приведенная выше формула может быть чем-то, с чего вы можете начать и адаптировать как вы идете. Само собой разумеется, что вы должны проверить, есть ли вообще какие-либо рейтинги (не делить на ноль).

...