Как сбалансировать количество рейтингов по сравнению с самими рейтингами?
Для школьного проекта нам придется внедрить систему ранжирования. Тем не менее, мы посчитали, что тупое среднее ранговое значение будет отстойным: что-то, что Один пользователь занял 5 звезд, будет иметь лучшее среднее, что что-то 188 пользователей заняло 4 звезды, и это просто глупо.
Поэтому мне интересно, есть ли у кого-нибудь из вас пример алгоритма "умного" ранжирования. Он должен только принимать во внимание приведенные рейтинги и количество рейтингов.Спасибо!
5 ответов:
Вы можете использовать метод, вдохновленный байесовской вероятностью. Суть подхода состоит в том, чтобы иметь первоначальное убеждение об истинном рейтинге элемента и использовать оценки пользователей для обновления своего убеждения.
Этот подход требует двух параметров:
- Как вы думаете, какова истинная" дефолтная " оценка элемента, если у вас вообще нет оценок для элемента? Назовем это число
R
"первоначальным убеждением".- сколько веса вы придаете первоначальному убеждению, по сравнению с пользовательскими рейтингами? Назовем это
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 оценок достаточно, в то время как для другого этого может быть недостаточно. И профили некоторых рейтинговых агентств могут выглядеть более надежными для одного человека, чем для другого. Когда это прозрачно, это позволяет пользователю сделать более информированную оценку."
Почему это должно быть по-другому для машин? :)
В любом случае, если речь идет о ранжировании от машины к машине, этот вопрос нуждается в большей детализации, чтобы мы могли понять, как различные машины могут генерировать и использовать ранжирование.
Может ли рейтинг, сгенерированный машиной, быть ошибочным (чтобы предположить, что больше рейтинги могут как-то компенсировать эти "ущербные" рейтинги? Что это вообще значит-ошибка машины? Или это потому, что предмет не имеет никакого отношения к этой конкретной машине, например? Здесь есть много вопросов, которые мы могли бы сначала распаковать, в том числе если у нас есть доступ к тому, как машины генерируют рейтинг, на каком-то уровне мы уже можем знать значение этого пункта для этой машины, что делает агрегированный рейтинг излишним.
То, что вы можете найти на разных платтформах, - это гашение рейтингов без достаточного количества голосов: "у этого пункта недостаточно голосов"
Проблема в том, что вы не можете сделать это в простой формуле для расчета рейтинга.Я бы предложил скрывать рейтинг с менее чем минимальными голосованиями, но caclulate intern скользящее среднее. Я всегда предпочитаю скользящую среднюю против общей средней, так как она предпочитает голоса с прошлого раза против очень старых голосов, которые могут быть даны за совершенно разные обстоятельства.
Кроме того, вам не нужно слишком добавлять список всех голосований. у вас просто есть вычисленное среднее, и следующее голосование просто изменяет это значение.newAverage = weight * newVoting + (1-weight) * oldAverage
С весом около 0,05 для предпочтения последних 20 значений. (просто поэкспериментируйте с этим весом)
Кроме того, я бы начал с следующих условий:
нет голосов = среднее значение диапазона (1-5 звезд = > начать с 3 звезд)
среднее значение не будет показано, если было подано менее 10 голосов.