У меня есть несколько объектов, каждый объект должен быть оценен пользователем по [q] качеству, [v] значению и [s] пригодности.
В настоящее время я получаю общее среднее значение каждого объекта по Score = (q+v+s/3)
— Тем не менее, я столкнулся с популярной проблемой, где объект с 1 рейтингом 10,10,10
оценивается выше, чем объект с 3 оценками 10,9,9 | 9,10,10 | 10,10,8
— Нехорошо!
Я хочу оценить каждый объект по сумме. Есть ли какой-нибудь алгоритм, который лучше всего подходит? Конечный результат будет в среде PHP. Примером может быть примерно то, что Awwwards в настоящее время для каждого из своих сайтов в списке.
Я посмотрел вокруг и вижу аналогичные требования и предложенный байесовский метод, я не уверен, насколько это будет соответствовать моим требованиям, хотя необходимость знания «минимума»?
Покопавшись еще немного, я обнаружил, что это — подойдет ли какой-нибудь SQL-запрос? Есть вопросы?
<?php
$avg_num_votes = 17; // Average number of reviews on all objects
$avg_rating = 4.5; // Average review for all objects
$this_num_votes = 17; // Number of reviews on this object
$this_rating = 4; // Review for this object
$bayesian_rating = (($avg_num_votes * $avg_rating) + ($this_num_votes * $this_rating)) / ($avg_num_votes + $this_num_votes);
echo $bayesian_rating;
//(FR) = ((av * ar) + (v × r)) / (av + v)
//(FR) = ((17 * 4.5) + (17 * 4)) / (17 + 17)
//(FR) = (76.5 + 68) / 34
//(FR) = 162.5 / 34
//(FR) = 4.25
?>
Сглаживание Лапласа это просто реализовать, хотя вы должны выбрать один параметр. Это то, что называют «байесовской оценкой» или «байесовским методом», хотя это не совсем правильно, и есть много других методов, которые более точно реализуют байесовское обновление для различных вариантов предыдущих распределений.
Выберите M, называемое количеством «минимальных» рейтингов некоторыми. Рассчитать средний рейтинг по всем категориям. Дайте каждому объекту M средние оценки в дополнение к оценкам пользователей. Если вы измените M, это изменит ваше доверие к небольшой выборке. Большие значения М дают меньшую оценку небольшому количеству рейтингов.
Вам не нужно корректировать это на основе трех оценок. Назовите сумму рейтингом.
Например, предположим, что средний рейтинг в любом месте равен 25, вы выбрали M = 3 и сравниваете один объект с 1 рейтингом 30 с объектом с 7 оценками из 27. Для первого вы рассчитываете сглаженный рейтинг: (30*1 + 25*3)/(1+3) = 26.25
, Сглаженный рейтинг второго (27*7+25*3)/(7+3) = 26.4
, Таким образом, второй объект будет иметь более высокий сглаженный рейтинг, чем первый.
Других решений пока нет …