Алгоритм оценки объектов на основе количества голосов и 5-звездочного рейтинга - PullRequest
14 голосов
/ 23 февраля 2011

Я создаю сайт, с помощью которого люди могут оценивать объект по своему выбору, присваивая звездный рейтинг (скажем, 5 звездный рейтинг). Объекты расположены в виде ряда тегов и категорий, например. электроника> видеокарты> pci express> ... или обслуживание> подрядчик> сантехник.

Если другой пользователь ищет определенную категорию или тег, попадания должны возвращать объект с наивысшей оценкой в ​​этой категории. Однако система будет иметь недостатки, если 1 человек проголосует только за 5 звезд за объект, а 1000 пользователей проголосуют в среднем за 4,5 звезды за другой объект. Очевидно, логика диктует, что доверие к объекту с рейтингом 1000 пользователей будет отдано в отличие от объекта, который оценивается 1 пользователем, даже если он имеет «более низкий» балл.

И наоборот, надежно доверять объекту с рейтингом 500 пользователей со счетом 4,8, чем доверять объекту с рейтингом 1000 пользователей, равным 4,5.

Какой алгоритм может достичь этого веса?

Ответы [ 4 ]

10 голосов
/ 23 февраля 2011

Отличный ответ на этот вопрос здесь: http://www.evanmiller.org/how-not-to-sort-by-average-rating.html

3 голосов
/ 24 февраля 2011

Вы можете использовать среднее значение по Байесу при сортировке по рекомендации.

2 голосов
/ 23 февраля 2011

У меня будет соблазн иметь отсечение (скажем, пятьдесят голосов, хотя это, очевидно, зависит от трафика), перед которым вы считаете, что элемент не оценен.Это значительно снизит мотивацию для рейтинга спама / идиотов (особенно, если каждый голос привязан к учетной записи пользователя), а также даст вам простую, быструю для внедрения и достаточно надежную систему.

1 голос
/ 13 мая 2017
simboid_function(value) = 1/(1+e^(-value));

rating = simboid_function(number_of_voters) + simboid_function(average_rating);
...