В оценках 100 пятёрок, а среднее арифметическое 4.2 – делаем рейтинги правильно. И при чём здесь IMDb?

Статья пригодится всем, кто создаёт свои рейтинги или систему оценок в приложениях, играх, на сайтах и в других продуктах. И я даже сам для себя что-то понял, пока писал 🎉

В чём, собственно, проблема?

Я занимаюсь разработкой продуктовых фич для рейтинга игровых серверов. Ранжирование в рейтинге происходит по множеству различных факторов, одним из которых являются «звёзды» – оценки пользователей от 1 до 5.

В тех.поддержку часто приходит один и тот же вопрос:

Игроки поставили нашему серверу 100 пятёрок, а рейтинг 4.2 – как так? Вероятно, в алгоритм расчёта закралась ошибка.

В оценках 100 пятёрок, а среднее арифметическое 4.2 – делаем рейтинги правильно. И при чём здесь IMDb?
Какую среднюю оценку должны давать сто пятёрок?
Очевидно, 5.0
Не очень очевидно, но 4.2
Ты втираешь мне какую-то дичь
Свой вариант (вписать маркером): ______________

В чём прикол?

Секрет в том, что хороший рейтинг никогда не использует среднее арифметическое в его чистом виде для подсчёта итоговой оценки. И вот почему.

Предположим, вы участвуете в каком-либо рейтинге, получили за долгое время 100500 различных оценок, ваше среднее арифметическое 4.9 – вроде, неплохо. Ваш оппонент в этом же рейтинге получает всего две пятёрки, и его среднее арифметическое 5.0 – уже выше вашего.

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

Да, нельзя так просто взять и составить рейтинг.
Да, нельзя так просто взять и составить рейтинг.

Матчасть, в которой нам на помощь приходит формула IMDb

Для решения проблемы полезно знать устройство формулы IMDb – да, той самой, которая была разработана для ранжирования фильмов и сериалов.

Я приведу её не в самом компактном виде, чтобы нагляднее показать принцип её работы:

В оценках 100 пятёрок, а среднее арифметическое 4.2 – делаем рейтинги правильно. И при чём здесь IMDb?

Здесь:

  • v – количество оценок фильма
  • m – минимальное количество голосов, необходимое для включения в рейтинг IMDb (сейчас это 25000 голосов)
  • R – среднее арифметическое оценок конкретного фильма
  • C – среднее арифметическое оценок всех фильмов (сейчас это ~7.0)

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

Предположим, фильм получил необходимый минимум: 25000 оценок, для которых среднее арифметическое 9.2 – и, казалось бы, это неплохая оценка. Но давайте посмотрим, что получится по формуле IMDb:

[25000 * 9.2 / 50000] + [25000 * 7.0 / 50000] = 4.6 + 3.5 = 8.1

Всего лишь 8.1, хотя чистое среднее арифметическое для фильма составляет 9.2 балла.

Обратите внимание, фильм получил в левой части формулы от своего среднего арифметического всего 4.6 балла, а остальные 3.5 балла взял в правой части формулы от общего среднего арифметического.

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

[975000 * 9.2 / 1000000] + [25000 * 7.0 / 1000000] = 8.97 + 0.175 = 9.145

Мы видим, что при большем количестве оценок левая часть формулы стала вносить в общий результат уже целых 8.97 балла, а правая часть вносит лишь 0.175

Чем меньше у фильма оценок, тем сильнее его итоговая оценка стремится к среднему арифметическому среди всех фильмов.


Чем больше у фильма оценок, тем сильнее его итоговая оценка стремится к его собственному среднему арифметическому.

Вот и всё. Ничего сложного здесь нет.

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

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

Теперь можно кидать в меня помидоры, тапки и, вообще, всячески хейтить мою первую статью на DTF 😊 заранее спасибо, ребят.

259
91 комментарий

Давольно интересно. Спасибо за пост

40
Ответить

Пасиб :-)

Долго пытался понять, как лучше показать влияние составляющих в формуле – пришлось в итоге её на две части разложить.

В оригинале оно выглядит так (и это не самый понятный формат):

17
Ответить

Не, ну за статью спасибо, как всегда матиматика ебет, НО получается что хороший узконаправленный фильм сосет хуёв так как у него очень мало оценок - это не правильно. Получается крупные новинки крутых компаний нагибают авторские фильмы. Как всегда:)

24
Ответить

Если он такой хороший, то почему такой непопулярный?

1
Ответить

Да, для НЕпопулярных фильмов путь в топ IMDb закрыт :) получается так...

Ответить

потому что это система расчетов для анонимов или коротко живущих регистраций

Ответить

Итого это рейтинг не качества, а в том числе популярности. Оценка же от 10 человек может быть точнее чем от 100.

9
Ответить