Каков наилучший алгоритм для вычисления самого набранного предмета?

У меня есть музыкальные предметы, которые оцениваются пользователями от 1 до 5, и Мне нужна формула, чтобы получить 5 самых набранных предметов.

Но, очевидно, элемент, получивший 3.5 средний балл от 1000 разных пользователей, будет более забитым, а затем у него получится 4.9 средний балл только у 5 пользователей... другими словами, я думаю, что если предмет получит внимание от людей, чтобы выиграть это означает, что элемент интересен. поэтому при расчете параметр voteCount должен иметь мощность. (сколько власти? Я не уверен, и я прошу вас получить идеи).

Я думаю, что нам нужны следующие параметры в функции: votesAverage, votesCount.

Ответы

Ответ 1

Взвешенное голосование за 5-звездочные системы с большим количеством избирателей

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

IMDb (база данных интернет-фильмов) использует этот расчет для определения своего IMDb Top 250. (Примечание: IMDb использует 10 звезд, но формулы идентичны с использованием 5 звезд).

Формула для расчета 250 наименований дает истинную байесовскую оценку:

взвешенный рейтинг (WR) = (v ÷ (v + m)) × R + (m ÷ (v + m)) × C

где:

  • R = среднее значение для фильма (среднее) = (Рейтинг)
  • v = количество голосов за фильм = (голосов)
  • m = минимальное количество голосов, которое должно быть указано в Топ-250 (в настоящее время 3000)
  • C = среднее голосование по всему отчету (в настоящее время 6,9)

Ссылка для IMDb

Ссылка в Wikipedia

Ответ 2

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

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

Ответ 3

Простой способ сбалансировать систему состоит в том, чтобы добавить фиксированное количество гипотетических пользователей (скажем, счет H), которые все голосуют за долгосрочный средний A всех ваших предметов. Скажем, что среднее значение равно 3; то формула становится

Score = (voteCount x votesAverage + H x A)/(votesCount + H)

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

Вы можете установить H экспериментально или подумать об этом. Например. если вы считаете, что 20 голосов достаточно для установления относительно сильного рейтинга, вы можете установить H = 5. Скажем.

Ответ 4

Я использую для своих музыкальных файлов следующий метод:

Рейтинг измеряется в процентах (0-100) Песни, которые не оценены, получают 50% в подарок Каждый раз, когда кто-то голосует за песню, ее рейтинг увеличивается Каждый раз, когда кто-то голосует против песни, ее рейтинг уменьшается Если рейтинг песни выше MAX, который равен 100, тогда MAX устанавливается на текущий рейтинг песни Если рейтинг песни ниже MIN, тогда MIN установлен на рейтинг песни После каждого голосования, которое меняет MIN или MAX, я выполняю нормализацию для каждой песни в списке:

NewRating = (CurrentRating - MIN) * 100/(MAX -MIN) Затем я устанавливаю MIN в 0, а MAX - 100.

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

При выборе песен для воспроизведения (или для голосования) я генерирую случайное число в диапазоне 0-100 и поиск следующей композиции с оценкой, равной или превышающей этот номер.

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

Ответ 5

Термин для этого байесовская оценка.

Один общий пример:

Байесовский рейтинг = (v*R + m*C)/(v+m)
где:
R= средний рейтинг песни
v= количество голосов за песню
m= минимальный голос, который должен быть указан (например, 10)
C= средний голос за все песни