Есть сайт, на нем пользователи ставят разным компаниям рейтинг.
Есть K — число голосов, N — средняя оценка, входящяя в интервал [1, 5].
Нужен некий показатель T(K, N), который является функцией от средней оценки компании и числа голосов.
По этому показателю компании будут сортироваться.
Показатель должен учитывать то, что чем меньше число голосов, тем больше вероятность того, что оценка отличается от объективной (будем для простоты считать объективной среднюю оценку всех пользователей земли :)).
Пока придумал только такую формулу:
N = K+(K-3)*(N-1)*k/Nmax, где Nmax — максимальное число голосов, k — некий коэффициент, подбираемый из здравого смысла, смотря на реальные данные.
Может я изобретаю велосипед и есть какие то математически обоснованные и жизненно проверенные формулы для подобных вещей?
Есть готовые и работающие ныне алгоритмы, к примеру рейтинг IMDB, который основан на теореме Байеса. Формула очень хорошо расписана тут: www.wowwebdesigns.com/formula.php
WR = (v / (v+m)) * R + (m / (v+m)) * C
R = средний рейтинг данного объекта
v = количество голосов за данный объект
m = (опционально) минимальное число голосов, необходимых для отображения в топ 25
C = средний рейтинг всех объектов
Спасибо!
Видел эту формулу на кинопоиске, но не обратил внимание.
Да, хитрая на самом деле формула.
Чем меньше голосующих, тем ближе рейтинг к средней оценке всех объектов.
я бы использовал что-то типа:
средневзвешанной оценки по данному критерию * к-энт достоверности.
к-энт достоверности = средневзвешанное число всех оценок по каждому критерию приведенное к 1.
т.е — если по вашему критерию проголосовало больше чем средневзвешанное кол-во голосов, то вес этой оценки увеличивается.
смысл — чем больше оценок — тем больше вес результата.