Как сбалансировать количество оценок и сами рейтинги?

StackOverflow https://stackoverflow.com/questions/2495509

Вопрос

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

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

Спасибо!

Это было полезно?

Решение

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

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

  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 слишком большой может привести к тому, что элемент с большим количеством умеренно высоких оценок будет отдаваться предпочтение элементу с немного меньшим количеством исключительно высоких рейтингов.

Другие советы

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

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

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

Почему с машинами все будет по-другому?:)

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

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

На разных платформах можно встретить закрытие рейтингов без достаточного количества голосов:«Этот пункт не набрал достаточного количества голосов»
Проблема в том, что вы не можете сделать это с помощью простой формулы для расчета рейтинга.

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

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

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

Кроме того, я бы начал с этих условий:
нет голосов = значение среднего диапазона (1–5 звезд => начните с 3 звезд)
среднее значение не будет отображаться, если было подано менее 10 голосов.

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

сумма (голосов) / количество_голосов

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top