Используя алгоритм SlopeOne, чтобы предсказать, сможет ли игрок пройти уровень в игре? - PullRequest
8 голосов
/ 25 ноября 2010

Я планирую использовать алгоритм SlopeOne, чтобы предсказать, сможет ли игрок пройти данный уровень в игре или нет?

Вот сценарий:

  1. Многие игроки играют и пытаются пройти 100 уровней в игре.
  2. Каждый игрок может играть на уровне столько раз, сколько он пожелает, пока не перейдет уровень.
  3. Система отслеживает уровень и количество повторных попыток для каждого уровня.
  4. Каждый игровой уровень попадает в одну из 3 категорий (легкий, средний, сложный)
  5. Приблизительное распределение уровней составляет 33% по каждой категории, что означает, что 33% уровней являются легкими, 33% уровней - сложными и т. Д.

Используя эту информацию:

Когда новый геймер начинает играть в игру, после нескольких уровней я хочу иметь возможность предсказать какой уровень может легко пересечь Геймер, а какие - нелегко.

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

Могу ли я использовать алгоритм SlopeOne для этого?

Причина в том, что я вижу много общего между тем, что я хочу, скажем, с системой рейтинга фильмов.

n пользователей, m элементов и N оценок для прогнозирования рейтинга пользователя для данного элемента.

Аналогично, в моем случае у меня есть

n пользователей, m уровней и N повторов ...

Единственное отличие состоит в том, что в системе рейтинга фильмов рейтинг фиксируется по шкале 1-5, и в моем случае повторные попытки могут варьироваться от 1-x (x может достигать 30)

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

Спасибо.

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

Я думаю, что это может сработать, но я бы применил log к количеству попыток (вы не можете выполнить log (0), чтобы повторные попытки не работали) в первую очередь. Если кто-то находил уровень легким, он пробовал бы его один или два раза, тогда как людям, которые находили его трудным, обычно приходилось делать это снова и снова. Разница между тем, что он сделал за 1 ход против 2 ходов, намного больше, чем за 20 ходов против 21 за ход. Это избавило бы от необходимости устанавливать произвольное ограничение на количество ходов.

0 голосов
/ 04 февраля 2011

Я не знаю, насколько подходящим может быть алгоритм, но я нашел это при реализации его в python http://www.serpentine.com/blog/2006/12/12/collaborative-filtering-made-easy/

...