Первоначально я разместил это в StackOverflow, так как это могло быть ошибкой в реализациях, но некоторые предлагали мне публиковать в математике. Я только что нашел этот стек, и подумал, кто лучше? Некоторые из вас могут знать об этом, скорее, это кажется точным или нет, без необходимости отладки. Любые ссылки на онлайн калькуляторы или альтернативные методы оценки приветствуются.
Glicko-2 - это система рейтинга, используемая в шахматах, но может использоваться во многих других ситуациях. Glicko-2 - это улучшение Glicko-1, которое решает проблемы более раннего рейтинга ELO.
Что делает Glicko-2 особенным по сравнению с версией 1, так это то, что он включает более высокое отклонение рейтинга (RD), чем дольше человек неактивен. Это делается с помощью понятия системной константы, которая относится к периодам времени / рейтинга.
Пример написания от автора находится здесь: http://www.glicko.net/glicko/glicko2.pdf .
В этом документе он объясняет:
Система Glicko-2 работает лучше всего, когда количество игр в рейтинговом периоде от среднего до большого, скажем, в среднем не менее 10-15 игр на игрока в рейтинговом периоде. Продолжительность периода оценки определяется по усмотрению администратора.
Предполагая, что группа активных шахматистов играет в среднем по 10-15 игр в течение 1 месяца, администратор будет обновлять рейтинги в конце каждого месяца.
Мне нужна была PHP-реализация системы рейтинга Glicko-2, и я наткнулся на следующее:
Glicko-2 Реализация JavaScript
- В JavaScript была небольшая ошибка, из-за которой он не соответствовал техническому примеру написания, автор нашел его достаточно близким и не стал отлаживать.
- Реализация PHP страдала от многих ошибок, но это не было очевидно, если вы не сделали более одного периода оценки (который в технической статье никогда не показывает ожидаемые значения)
- Наконец, калькулятор Excel оказался безошибочным и самым профессиональным, сделанным кем-то из шахматного сообщества. После того, как ошибка JavaScript была устранена, JavaScript и Excel Calculator очень близко совпали друг с другом (хотя и не идеально, возможно, произошла ошибка округления)
Я исправил ошибки (и представил проблемы / исправления авторам), которые я мог найти в версиях PHP и JavaScript, чтобы они максимально соответствовали калькулятору Excel.
Теперь я на 99% уверен, что у меня есть точная реализация Glicko-2 (между тремя из них) для анализа, и именно тогда я столкнулся с чем-то странным и темой этой дискуссии.
Учитывая предложенное значение по умолчанию для Glicko-2 для нового игрока:
Rating: 1500
RD: 350
Volatility: 0.06
Если вы столкнетесь со средним противником с рейтингом 1378 и RD 99 ( Источник ) только один раз за каждый рейтинговый период (1 месяц) в течение следующих 12 периодов (1 год), у вас будет накоплен предполагаемый рейтинг Национального класса А (1800-1999) 1852 когда в действительности вы побили 12 игроков со средним рейтингом за 12 месяцев.
Month Rating RD Volatility Class
1 1625 259 0.059999 National Class B
2 1682 225 0.059998 〃
3 1718 205 0.059997 〃
6 1784 174 0.059994 〃
12 1852 148 0.059988 National Class A
24 1922 127 0.059976 〃
Если вы сталкиваетесь с 2 средними оппонентами в течение каждого рейтингового периода, вы можете добраться до Национального класса А примерно за 4-5 месяцев, столкнувшись только с 8-10 средними противниками.
Month Rating RD Volatility Class
1 1672 215 0.059999 National Class B
2 1733 183 0.059997 〃
3 1770 166 0.059995 〃
4 1797 154 0.059993 〃
5 1819 146 0.059992 National Class A
6 1836 140 0.059991 〃
Являются ли эти предположения точными? В моем калькуляторе есть ошибка?
Если это не ошибка, каковы некоторые способы противодействия этому помимо:
- Считайте «истинный рейтинг» нижней границей отклонения (Рейтинг - RD)
- Не показывать рейтинг неактивного пользователя
- Не показывать пользователям менее N игр
Ответы:
Я работал над реализацией Scala несколько месяцев назад, хотя она была немного неполированной - я должен вернуться, чтобы закончить ее. Я по крайней мере получил некоторые разумные результаты от этого.
Если вы выиграете каждую игру, в которую играете, да, ваш рейтинг вырастет до довольно высокого уровня, даже если вы играете против игроков с низким рейтингом. Вероятность того, что вы выиграете каждую игру против такого противника, вероятно, зависит от того, чего добьется игрок класса А (хотя, вероятно, он немного завышен из-за относительно высокого RD).
На мой взгляд, лучший способ противостоять этому - не считать кого-либо с RD выше определенной суммы стабильным рейтингом, то есть считать его «временным». Кроме того, для того, чтобы фактически получить титул, по крайней мере в USCF, у них есть система норм, где вы должны выступать на определенном уровне в турнире из 4 или более игр (я думаю, 4 раза), что делает вероятность играть против ~ 1378 за весь турнир [четыре раза] очень маловероятно.
Ваша цель использовать это для шахмат? Какой у вас вариант использования?
Обновление: FICS обрабатывает это, рассматривая только людей с RD <80 active. (Они используют Glicko-1, я все еще верю.) Http://www.freechess.org/Help/ficsfaq.html#Q005.003
И, кстати, Glicko-1 также использует RD / спад времени. Основным улучшением Glicko-2 стал фактор «волатильности», который позволяет людям с ошибочными или стабильными результатами рассчитываться совсем немного иначе. Я думаю, что это очень незначительная настройка Glicko-1, которая требует значительных дополнительных вычислений - но, как и вы, я все еще был заинтересован в ее расчете. Я на самом деле попросил у Гликмана несколько дополнительных точек данных для тестирования, но он был слишком занят, чтобы предоставить их в то время.
источник