Как сбалансировать количество рейтингов и сами рейтинги? - PullRequest
11 голосов
/ 22 марта 2010

Для школьного проекта нам нужно будет внедрить систему ранжирования. Тем не менее, мы полагали, что среднее значение глупого ранга будет отстойным: то, что один пользователь, оценивающий 5 звезд, получит лучшее среднее значение, что 188 пользователей оценивают 4 звезды, и это просто глупо.

Так что мне интересно, есть ли у кого-нибудь пример алгоритма «умного» ранжирования. Нужно только учитывать данные рейтинга и количество рейтингов.

Спасибо!

Ответы [ 4 ]

2 голосов
/ 22 мая 2018

Вы можете использовать метод, основанный на Байесовская вероятность . Суть этого подхода заключается в том, чтобы иметь первоначальное представление об истинной оценке предмета и использовать оценки пользователей для обновления своего убеждения.

Этот подход требует двух параметров:

  1. Как вы думаете, что является истинным рейтингом предмета по умолчанию, если у вас вообще нет оценок этого предмета? Назовите этот номер R, «первоначальное убеждение».
  2. Какой вес вы придаете первоначальному убеждению по сравнению с оценками пользователей? Назовите это W, где первоначальное убеждение «стоит» W пользовательских оценок этого значения.

С параметрами R и W вычисление нового рейтинга становится простым: предположим, что у вас есть W оценки значения R вместе с любыми пользовательскими оценками, и вычислите среднее значение . Например, если R = 2 и W = 3, мы рассчитываем окончательный счет для различных сценариев ниже:

  • 100 (пользовательский) рейтинг 4: (3*2 + 100*4) / (3 + 100) = 3.94
  • 3 рейтинга 5 и 1 рейтинг 4: (3*2 + 3*5 + 1*4) / (3 + 3 + 1) = 3.57
  • 10 оценок из 4: (3*2 + 10*4) / (3 + 10) = 3.54
  • 1 рейтинг 5: (3*2 + 1*5) / (3 + 1) = 2.75
  • Нет оценок пользователей: (3*2 + 0) / (3 + 0) = 2
  • 1 рейтинг 1: (3*2 + 1*1) / (3 + 1) = 1.75

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

Выбор R

Когда вы выбираете R, подумайте, какую ценность вам будет удобно принять для предмета без оценок. Является ли типичный элемент без рейтинга на самом деле 2,4 из 5, если вы хотите, чтобы все сразу оценили его? Если это так, R = 2.4 будет разумным выбором.

Вы должны , а не использовать минимальное значение в шкале оценок для этого параметра, поскольку элемент, получивший крайне низкую оценку пользователей, должен в конечном итоге оказаться «хуже», чем элемент по умолчанию без оценок.

Если вы хотите выбрать R, используя данные, а не просто интуицию, вы можете использовать следующий метод:

  • Рассмотрим все элементы, по крайней мере, с некоторым пороговым значением рейтинга пользователя (так что вы можете быть уверены, что средний рейтинг пользователя достаточно точен).
  • Для каждого элемента предположите, что его "истинный балл" является средним рейтингом пользователя.
  • Выберите R, чтобы получить медиану этих оценок.

Если вы хотите быть немного более оптимистичным или пессимистичным в отношении элемента без рейтинга, вы можете выбрать R в качестве другого процентиля баллов, например, 60-го процентиля (оптимистического) или 40-го процентиля (пессимистичного).

Выбор W

Выбор W должен зависеть от того, сколько оценок имеет типичный предмет, и насколько постоянны оценки. W может быть выше, если элементы естественным образом получают много оценок, и W должно быть выше, если у вас меньше доверия к пользовательским оценкам (например, если у вас высокая активность спамеров). Обратите внимание, что W не обязательно должно быть целым числом и может быть меньше 1.

Выбор W является более субъективным вопросом, чем выбор R. Однако вот некоторые рекомендации:

  • Если типичный элемент получает C оценок, то W не должен превышать C, иначе окончательная оценка будет в большей степени зависеть от R, чем от фактических пользовательских оценок. Вместо этого W должно быть близко к доле C, возможно, между C/20 и C/5 (в зависимости от того, насколько шумны или "спам" рейтинги).
  • Если исторические рейтинги обычно соответствуют (для отдельного предмета), тогда W должно быть относительно небольшим. С другой стороны, если оценки для предмета сильно различаются, то W должно быть относительно большим. Вы можете думать об этом алгоритме как о «поглощении» W рейтингов, которые являются аномально высокими или низкими, превращая эти рейтинги в более умеренные.
  • В крайнем случае, установка W = 0 эквивалентна использованию только среднего значения пользовательских рейтингов.Установка W = infinity эквивалентна объявлению, что каждый элемент имеет истинную оценку R, независимо от пользовательских оценок.Очевидно, что ни одна из этих крайностей не подходит.
  • Установка слишком большого значения W может привести к предпочтению элемента со многими умеренно высокими оценками по сравнению с элементом с немного меньшим исключительно высоким рейтингом.1110 *
0 голосов
/ 28 мая 2018

То, что вы можете найти на разных платформах, - это гашение оценок без достаточного количества голосов: «У этого элемента недостаточно голосов»
Проблема в том, что вы не можете сделать это в простой формуле для расчета рейтинга.

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

newAverage = weight * newVoting + (1-weight) * oldAverage

с весом около 0,05 для предпочтения последних 20 значений. (просто поэкспериментируйте с этим весом)

Дополнительно я бы начал со следующих условий:
нет голосов = среднее значение диапазона (1-5 звезд => начать с 3 звезд)
среднее значение не будет показано, если было дано менее 10 голосов.

0 голосов
/ 25 мая 2018

Поскольку вы заявили, что машине будут присваиваться только ранги, а количество рангов , я бы сказал, что попытка вычисленного метода взвешивания может быть небрежной.

Во-первых, есть два неизвестных, которые подтверждают предположение о том, что при достаточных обстоятельствах большее количество оценок является лучшим показателем качества, чем меньшее количество оценок. Одним из примеров является то, как долго дается рейтинг? Была ли одинаковая продолжительность сбора (одинаковое внимание) различным предметам, ранжированным таким же методом? Другие, какие рынки имели доступ к этому предмету и, конечно, кто конкретно его оценил?

Во-вторых, вы указали в комментарии ниже вопрос, что это не для внешнего использования, а скорее "оценки генерируются машинами, для машин", в ответ на мой комментарий, что "это не обязательно только Статистические данные. Один человек может посчитать 50 оценок достаточными, в которых этого может быть недостаточно для другого. И профили некоторых оценщиков могут выглядеть более надежными для одного человека, чем для другого. Когда это прозрачно, это позволяет пользователю сделать более обоснованную оценку ».

Почему это может быть иначе для машин? :)

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

Может ли ранжирование, генерируемое машиной, быть ошибочным (чтобы предположить, что большее количество ранжировок может каким-то образом компенсировать эти "некорректные" ранжирования? Что это вообще означает - это машинная ошибка? Например, существует множество проблем, которые мы могли бы сначала распаковать, в том числе, если у нас есть доступ к тому, как машины генерируют ранжирование, на каком-то уровне мы уже можем знать значение, которое этот элемент может иметь для этого машина, делающая совокупный рейтинг лишним.

0 голосов
/ 22 марта 2010

Простое решение может быть средневзвешенным:

сумма (голосов) / number_of_votes

Таким образом, 3 человека, голосующих за 1 звезду, и один человек, голосующий за 5, дали бы средневзвешенное значение (1 + 1 + 1 + 5) / 4 = 2 звезды.

Простой, эффективный и, вероятно, достаточный для ваших целей.

...