Статьи

Рейтинги: ты делаешь это неправильно!

Мы видели много рейтингов в нашей жизни, не только в WebApps, но и в разных медиа. Часто рейтинг является частью функции геймификации.

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

Многие крупные компании, такие как Sony, Microsoft и Nintendo, экспериментировали с алгоритмами, чтобы сделать рейтинг более динамичным и привлекательным. Из этих компаний появилось множество замечательных реализаций, и мы можем использовать их в наших процессах разработки.

Ранжирование

Что такое предложение?

Математическое описание рейтинга довольно просто, как вы можете видеть в Википедии

«Ранжирование — это отношение между набором предметов, так что для любых двух предметов первый либо« ранжируется выше, чем », ранжируется ниже, чем« или ранжируется равным »второму. В математике это известно как слабый порядок или полный порядок объектов ».

Ранжирование само по себе довольно легко осуществить, в основном сортировка количества элементов по некоторым критериям, но какова цель ранжирования?

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

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

Так что, если вы пытаетесь сделать свое приложение более привлекательным с помощью рейтинга, скорее всего, вы потерпели неудачу! Никто не хочет участвовать в соревновании, где невозможно фактически конкурировать.

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

Эффективное ранжирование

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

Идея в том, что если у вас есть рейтинг, у вас есть ресурс.

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

Это довольно просто, и когда я подумал о сути этого, я пришел к следующему короткому списку, который определяет цель рейтинга:

  • Организуйте и закажите ресурс.
  • Сделайте возможным изменение позиций.
  • Найти проблемы / условия, которые совместимы с текущим рейтингом пользователя
    и навыки.

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

Лучшее решение, которое я видел до сих пор, — это то, которое исследовала и разработала команда Microsoft Research , известное как True Skill.

Истинный навык

Microsoft опубликовала множество исследований, связанных с новыми областями бизнеса, в которые она решилась в последние несколько лет, такими как рынок игровых приставок. Xbox является одним из самых невероятных устройств на рынке сейчас, и его обновления и функции всегда приносят инновации. Одной из таких функций является система рейтинга True Skill .

«TrueSkill — это байесовский алгоритм ранжирования, разработанный Microsoft Research и используемый в системе сопоставлений Xbox, созданной для устранения некоторых выявленных недостатков в системе рейтингов Elo. Это расширение системы рейтинга Glicko для многопользовательских игр ».

TrueSkill был разработан на основе системы Elo Rating , одного из самых известных алгоритмов, который используется во многих различных инструментах ранжирования; это была начальная реализация статистической оценки по рейтингам.

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

Как это устроено?

Основная идея и базовая реализация True Skill состоит в том, что каждый ресурс имеет две переменные: одну, которая представляет воспринимаемые навыки ресурса, на которую мы будем ссылаться, используя букву S , и другую, которая отражает степень «уверенности» системы в значение S , на которое мы будем ссылаться, используя букву C.

Должны быть определены значения по умолчанию для S и C , чтобы новые ресурсы имели начальную позицию в рейтинге. В Xbox Live значения по умолчанию: S = 25 и C = 25/3 . Значение S будет увеличиваться или уменьшаться после каждого выигрыша или проигрыша, но разница в позиции ресурса будет зависеть от значения C и того, насколько «удивительным» будет результат вызова для системы. Таким образом, если результат фактически является ожидаемым (например, выигрывает любимый игрок), это не приведет к значительному увеличению позиции пользователя.

Оценка ресурса оценивается с использованием следующей формулы R = S — 3 * C. Система True Skill может применяться с любым масштабом, в Xbox Live она использует шкалу от 0 до 50.

Это только начало концепции True Skill. Есть много деталей, когда думаешь обо всех возможных результатах. Например, ничья или соревнование между разными игроками одновременно.

Есть некоторые специфические результаты, которые весьма интересны при использовании True Skill, например, первоначальная потеря может фактически заставить пользователя занять более высокую позицию в рейтинге, потому что C может иметь больший убыток, чем переменная S. Давайте посмотрим на пример:

пример

Представьте себе нового пользователя «Джон» в Xbox Live. Мы можем принять S = 25 и C = 25/3 , поэтому ранг Джона будет рассчитан как R = 25 — 3 * 25/3 , что приведет к оценке 0 .

В первом вызове система ожидает, что Джон победит, но он фактически проигрывает. Уровень его умений уменьшится на 5 , в результате S = 20 . Это не был результат, ожидаемый системой, поэтому система не очень уверена в этом новом умении. Это приведет к большей потере переменной C , например, C = 15/3 .

Дело в том, что результат рейтинга Джона будет выше первоначального. Потеря его первого вызова приводит к R = 20 — 15 = 5 , потому что система не верит, что потеря представляет собой правильную меру навыков Джона. Однако, если Джон продолжит проигрывать, уверенность в меньшем навыке возрастет, что приведет к огромной потере рейтинга.

Что и как?

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

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

Вся реализация True Skill недоступна в Интернете, она запатентована Microsoft и может быть использована только в случае приобретения лицензии. Но его производные, такие как рейтинговая система Glicko , бесплатны. К сожалению, в Ruby есть только одна реализация системы True Skill, которую я нашел в сети, и она еще не завершена. Но вы можете найти множество реализаций Glicko и Elo на других языках.

Прямо сейчас я реализую вывод системы True Skill в Gioco . Я открыл вопрос на github, чтобы добавить эту функцию в следующем выпуске, поэтому вам будет проще иметь правильную и хорошую реализацию ранжирования в вашем приложении, которая поможет вам привлечь ваших пользователей. Будьте на связи!