В оценках 100 пятёрок, а среднее арифметическое 4.2 – делаем рейтинги правильно. И при чём здесь IMDb?
Статья пригодится всем, кто создаёт свои рейтинги или систему оценок в приложениях, играх, на сайтах и в других продуктах. И я даже сам для себя что-то понял, пока писал 🎉
В чём, собственно, проблема?
Я занимаюсь разработкой продуктовых фич для рейтинга игровых серверов. Ранжирование в рейтинге происходит по множеству различных факторов, одним из которых являются «звёзды» – оценки пользователей от 1 до 5.
В тех.поддержку часто приходит один и тот же вопрос:
Игроки поставили нашему серверу 100 пятёрок, а рейтинг 4.2 – как так? Вероятно, в алгоритм расчёта закралась ошибка.
В чём прикол?
Секрет в том, что хороший рейтинг никогда не использует среднее арифметическое в его чистом виде для подсчёта итоговой оценки. И вот почему.
Предположим, вы участвуете в каком-либо рейтинге, получили за долгое время 100500 различных оценок, ваше среднее арифметическое 4.9 – вроде, неплохо. Ваш оппонент в этом же рейтинге получает всего две пятёрки, и его среднее арифметическое 5.0 – уже выше вашего.
Казалось бы, у конкурента всего две оценки, но его среднее арифметическое сразу же выше. Именно поэтому для качественного ранжирования среднее арифметическое в чистом виде не используют – это очень необъективная метрика.
Матчасть, в которой нам на помощь приходит формула IMDb
Для решения проблемы полезно знать устройство формулы 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 😊 заранее спасибо, ребят.