Средневзвешенное значение и рейтинги

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

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

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

     ___
    /
___/

Ваше здоровье


person Danten    schedule 04.04.2010    source источник
comment
Я думаю, что этот вопрос подойдет для mathoverflow.net   -  person Leniel Maccaferri    schedule 04.04.2010
comment
Возможно, вы захотите также посетить форум Netflix Prize.   -  person dan04    schedule 04.04.2010
comment
Я бы не отказался от ответа на mathoverflow.net, это научный форум.   -  person Tomek Tarczynski    schedule 05.04.2010
comment
Другие, смотрящие на это, могут быть заинтересованы в buildingreputation.com/writings/2009/08/ что не сработало для меня, но все же полезно.   -  person Danten    schedule 05.04.2010


Ответы (2)


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

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 - параметр. Я не могу сказать Вам точную цену. Это зависит от того, что Вы подразумеваете под «небольшим количеством голосов». В общем, высокое значение A означает, что вам нужно много голосов, чтобы получить среднее значение, отличное от 3, низкое значение A означает, что вам нужно несколько голосов, чтобы получить значение, отличное от 3.

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

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

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

person Tomek Tarczynski    schedule 04.04.2010
comment
Именно то, что я искал. Большое спасибо! - person Danten; 05.04.2010

(sum(ratings) / number(ratings)) * min(number(ratings), 10)/max(number(ratings), 10)

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

person Tomislav Nakic-Alfirevic    schedule 04.04.2010
comment
В текущем состоянии (sum(ratings) / number(ratings)) * min(number(ratings), 10)/max(number(ratings), 10) формула не готова к использованию, у нее есть проблема с переменным коэффициентом масштабирования, мне кажется, что отсутствует двойной компонент для достижения баланса между (исходное среднее значение, середина диапазона). 1-я часть - исходное среднее (sum(ratings) / number(ratings)), 2-я часть - переменный коэффициент масштабирования min(number(ratings), 10)/max(number(ratings), 10). Приведем примеры: 1 голос с рейтингом 1, результат 0,1 !; 100 голосов с рейтингом 5, результат 0.5 !. Только 10 голосов получают коэффициент 1.0 и исходные средние результаты. - person user.dz; 15.02.2020
comment
Если кому-то интересно, как это работает, вот подсказка: попробуйте нарисовать график этой функции множителя, min(x,10)/max(x,10); это x/10 для x ‹= 10 и 10/x для x› = 10. - person user.dz; 15.02.2020