Блог пользователя MikeMirzayanov

Автор MikeMirzayanov, 13 лет назад, По-русски

Необычный турнир Manthan 2011 показал слабые стороны текущих формул подсчета рейтинга. После подведения результатов у победителя соревнования touristа предполагаемое изменение рейтинга оказалось равно "-1" :)

Такое возникло по причине приведения вычисленных изменений по сумме к 0. То есть Геннадий был в некотором плюсе до таких изменений, но так как сумма всех изменений не сошлась в 0 (оказалась положительной), то из всех рейтингов было немного вычтено. В качестве quick dirty hack в том раунде я отключил приведение суммы к 0, что привело к некоторой единовременной инфляции. Еще небольшой ляп: мной было замечено, что участники второго дивизиона за хорошее выступление получают слишком много баллов.

Короче, формулы были немного допилены так, что проблема с раундом Manthan 2011 не возникла бы. На "Div. 2 Only" раундах теперь участники в топе набирают не +200 баллов, а скорее +100 (конечно, здесь большая зависимость от их ожидаемого места). И вообще, теперь набирать баллы чуть сложнее, хотя не думаю, что это будет сильно заметно. На общих раундах теперь рейтинг считается совместно для участников обоих дивизионов.

P.S. На последнем раунде сначала не было отключено разделение по дивизионам, что привело к тому, что участники второго дивизиона набирали меньше участников первого при схожих результатах. Конечно, это противоречит здравой логике. Спасибо ErzhanDS-у за наблюдение. Изменения рейтингов за последний контест пересчитаны.

Новые формулы провалидированы прошедшими раундами и статистикой с TopCoder. Логика сохраняется и это радует. Думаю, что наши формулы будут и впредь немного эволюционировать. Как говориться, c'est la vie.

На всякий пожарный:

  • Проголосовать: нравится
  • +64
  • Проголосовать: не нравится

13 лет назад, # |
Rev. 2   Проголосовать: нравится +5 Проголосовать: не нравится

Здорово!!! Поскорей бы на Codeforces Beta Round #65 (Div. 2) протестировать.

13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Так все-таки пересчитаны или нет? У меня рейтинг пока не изменился.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
у меня +8
13 лет назад, # |
Rev. 3   Проголосовать: нравится +9 Проголосовать: не нравится
приятная новость (+42). Совершенствование - развитие.

Так же повторюсь: почему при просмотре результатов соревнований див1, при фильтрации по дивизионам во втором видны только зеленые и серые? 
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
На topcoder-е для первого места специальная хардкорная проверка: если изменение рейтинга меньше +1, то сделать +1.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
После вчерашнего фэйла сначала дали +12, что, учитывая мое место, было уже круто, а теперь и вовсе +42 :)
13 лет назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится
@Mike , What was the cause of inflation in Manthan round ?
Was it due to lots of unrated users participating in that round?
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
In #65 i got -84,but now it is showing -105!
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
наконец-то фиолетовый!!! :)
13 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится
Я подозреваю, что одна из причин этих странных результатов - то, что новичкам давали 1500. Объективнее бы было новичкам по итогам их первых нескольких контестов присваивать рейтинг.
13 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится
Есть постоянная инфляция из-за притока юзеров. Сдается мне, что по сравнению с ней, то, что описано в статье - о малое :)
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
    Имхо, нет никакой инфляции из-за притока новичков. То, что топовые программисты сейчас постоянно растут в рейтинге - это нормально, они еще недооценены по сравнению со среднестатистическими участниками CF, посмотрите какие разрывы на TC, вот когда дойдет до такого все устаканится.

    P.s. А вот открытости формул действительно хотелось бы.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Интересно было бы смотреть на то, как изменяется средний рейтинг участников от соревнования к соревнованию. Когда эта цифра более-менее стабилизируется, можно будет говорить об отсутствии инфляции.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Так вроде как стоит (точнее раньше стояла) проверка того, что при пересчете рейтинга сумма рейтингов участников не должна измениться => средний рейтинг не меняется никогда и по идее должен быть равен стартовым 1500.
      • 13 лет назад, # ^ |
          Проголосовать: нравится +3 Проголосовать: не нравится
        Средний рейтинг сохраняется при перерасчете по итогам одного соревнования. А я пишу об изменениях от соревнования к соревнованию.
        Если в начале на CF не было ни одного "красного", а теперь их полторы сотни, то, видимо, и средний рейтинг очередного раунда растет. Приходят новички, подпитывают старожилов, приходят новые новички.
        • 13 лет назад, # ^ |
          Rev. 3   Проголосовать: нравится +8 Проголосовать: не нравится
          Хотя не удивлюсь, если есть и "старые новички". Зарегистрировался Pupkin, завалил контест, зарегистрировался как Pupkin2, снова получил 1500, снова завалил, зарегистрировался как Pupkin3...
          Так можно тренироваться до получения приличного первичного рейтинга.
          UPD. Кстати, действительно, очень много "зеленых", которые участвовали только в одном соревновании. Видимо, всё-таки, начальный рейтинг надо давать по результатам нескольких раундов. Кстати, в шахматах именно так. 
          • 13 лет назад, # ^ |
              Проголосовать: нравится +13 Проголосовать: не нравится
            Можно было бы сделать это так - первые N контестов участник не влияет на рейтинги других участников, при этом он сам за этот контест получает такой рейтинг, что если бы участвовал в контесте с этим рейтингом его рейтинг не изменился. При этом его рейтинг отображается как среднее арифмитическое рейтингов по его контестом. Начиная с N + 1 контеста рейтигуется как остальные. Такая система не подходит с самого начала, но когда уже есть участники с рейтингом - самое то
            • 13 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится
              Я где-то писал уже об этом. Так должно быть лучше.
              И да, в шахматах такая же система
      • 13 лет назад, # ^ |
          Проголосовать: нравится +5 Проголосовать: не нравится
        Не поленился посчитать.
        Средний рейтинг сейчас по всем участникам CF = 1504.
        Если взвесить рейтинг количеством участий в контестах, то получаем 1564 (что объяснимо, т.к. есть люди, которые просто разок попробовали, не получилось, бросили).
        По Codeforces Beta Round #64 средний рейтинг = 1606.
        В общем, инфляция всё-таки есть, но нельзя сказать, что очень значимая.
13 лет назад, # |
Rev. 2   Проголосовать: нравится +6 Проголосовать: не нравится
Поправьте, пожалуйста: в последнем предложении "говорится".
13 лет назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится

Представил себе картину, Гена после очередной победы смотрит на свой рейтинг... "Да, -1, плохо написал..."

Ближе к теме - а когда можно будет увидеть детальные формулы? Их пока нету, потому что "сырые"? В том старом посте только 1 формула, которая показывает "куда рейтинг должен стремится", но как именно он туда стремится - непонятно. 

На ТС все формулы открытые, там, при желании, можно хоть вручную пересчитывать:) И механика процесса понятней. А на КФ пока все "по ощущениям" - ага, написал неплохо, значит, рейтинг пойдет в плюс, написал плохо - значит, не изменится, написал очень плохо - упадет. 

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
ErzhanDS красава, весь в меня =)
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
A contest about algorithm has a bug about algorithm. - -#
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
"На "Div. 2 Only" раундах теперь участники в топе набирают не +200 баллов, а скорее +100"

Вот это зря сделали. Скатиться сейчас все так же легко, а вот подняться обратно в первый дивизион будет значительно сложнее.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +7 Проголосовать: не нравится
    Это ты вовремя подметил насчет Div2 ;)
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Скатится, в общем-то, не так легко(хотя я не знаю, все-таки я не был в див-1 до изменений). Сужу просто по себе. Я на прошедшем раунде занял 271 место, обогнал от силы 100 участников-и получил только -45. Скатится сейчас сложнее, этим объясняется так же некоторая стабильность в результатах, то, что люди начали долго задерживаться в одном цвете.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Ну может я так внезапно потупел:)

      Хотя на TopCoder и Code Jam выступаю лучше, чем в прошлом году.
      • 13 лет назад, # ^ |
          Проголосовать: нравится +6 Проголосовать: не нравится
        Да ладно, выберешься из второго дивизиона.
        Общий план таков:
        1. решаем первые три задачи
        2. ломаем 15-20 человек на TLE и int64 (а таких мно-о-о-ого)
        3. если останется время, решаем четвертую и пятую
        4. Snarknews увековечивает твою фамилию как призера div-2
        • 13 лет назад, # ^ |
            Проголосовать: нравится +2 Проголосовать: не нравится
          План хорош, но для лучшей мотивации нужно добавить пункт 5. - бронзовый бюст на родине.
        • 13 лет назад, # ^ |
            Проголосовать: нравится +1 Проголосовать: не нравится
          Отличный план, так и сделаю.
          Смотрю, эта стратегия тебе действительно принесла недавно успех.

          Бронзовый бюст действительно не помешает, на Snarknews про меня уже писали пару раз:)
          • 13 лет назад, # ^ |
            Rev. 4   Проголосовать: нравится -17 Проголосовать: не нравится

            Поиск твоей фамилии на Snarknews дал всего 3 результата:

            1. Второе место в одном из конкурсов прогнозов. Да, это то чем может гордиться только самый тру кодер. Поздравляю!

            2. Второе место твоей команды в каком-то неизвестном турнире в Архангельске. Значит, не смог придти к успеху в своем вузе и поехал отбирать места у провинциалов? Человек, езжай в следущий раз на Чукотку, может хоть там получится выиграть.

            3. Результат 2007 года, в одной команде вместе с Богом. Ясно, что это на самом деле был не ты. Наверно, однофамилец из Орла.

            Так что: сперва добейся
            • 13 лет назад, # ^ |
                Проголосовать: нравится +4 Проголосовать: не нравится
              Сперва наберись смелости написать это от своего аккаунта, а потом давай мне советы.
        • 13 лет назад, # ^ |
            Проголосовать: нравится +1 Проголосовать: не нравится
          Есть еще такой план, проверенный временем(правда, более слабыми участниками...): первый час тратишь исключительно на задачи, далее, если за 5-10 минут никаких идей, которые являются правильными и ты это доказал и сможешь это быстро набить-идешь во взломы. И там, как правильно сказал dalex, ломаешь всех на МЛ, ТЛ, переполнении
  • 13 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    если участник решает 3 задачи и больше, то из Div1 он не вылетит. Если же меньше, то какой смысл рваться в 1 дивизион, когда во 2ом есть эти же первые 3 задачи?
    • 13 лет назад, # ^ |
      Rev. 4   Проголосовать: нравится +2 Проголосовать: не нравится

      Смысл такой, что в первом диве за 3 задачи ты получишь +100 - + 150 рейтинга или около того (если ты фиолетовый или не очень сильный оранжевый), а во втором если решишь все 5 (то есть те же 3), то +50 - +100. Посмотри статистику победителей и призеров последних див2.

      Чтобы не быть голословным, пример: 
      73 Round 
      • Div 1 Mex-Mans 3 задачи, 70 место, +137 рейтинга (время сдачи задач: 23, 38, 83)
      • Div 2 iensen 5 задач (последние те же 3, что и в первом диве), 4 место, +70 рейтинга (время сдачи задач, начиная с момента, как он сдал вторую (48я минута): 18, 39, 65)

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

      Если же есть еще какие-то показатели, типа volatility на TopCoder, предлагаю их обнародовать, чтобы понять, что происходит.
13 лет назад, # |
Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

Раз уж пошла такая пьянка, то я внесу еще несколько предложений.

  • Растянуть график рейтинга по вертикали. Какой-то он сейчас плоский, плохо видно колебания. За эталон предлагаю взять график рейтинга TopCoder.
  • Ввести возможность просмотра истории выступлений участника (лучше - публично, но можно и в личном профиле только для участника - статистика последних выступлений в формате "место, прирост рейтинга, строчка плюсов и минусов, место в рейтинге после раунда". Например, я хочу посмотреть, почему из претендента в красные (оставалось 111 очков) я скатился во второй див, а бегать по ссылкам каждого соревнования очень долго и нудно.
  • Раз уж появились тэги, использовать их наполную. К некоторым задачам до сих пор нет тэгов. Так ведь если автор каждого из раундов возьмет и проставит тэги к своим задачам, работы выйдет немного для каждого в отдельности, а в сумме получится хорошо.
  • Ввести наконец сортировку по возрастанию времени сдачи в списке решивших задачу (до сих пор приходится менять вручную DESC на ASC).
Я понимаю, что у команды CodeForces и так много работы, но так может сделать открытый API и куча энтузиастов сделает это самостоятельно. Я готов написать тоже часть кода и помочь проекту.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    Поддерживаю в предложениях. Действительно, для каждого соревнования не мешает ссылка на само соревнование из профиля участника. Рейтинг неплохо бы растянуть(хотя и так не плохо смотрится), возможно есть смысл поднять планку для красных(потому что их уже почти столько же, сколько на топкодере, при меньшем количестве зарегистрировавшихся)

    По поводу API. Это уже не раз обсуждалось, и самый разумный комментарий по этому поводу был такой: отвечает за проект Михаил Расихович, и, в случае, если один "доброволец" где-нибудь забудет сделать брейк и из-за этого с сайтом что-то случится-все шишки полетят на администрацию
  • 13 лет назад, # ^ |
      Проголосовать: нравится +2 Проголосовать: не нравится
    И Custom test в архив! Так надоело в соревнования лазать. :-)
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Мне кажется, было бы хорошо, если бы Вы выложили Ваши предложения в отдельный топик.
13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
Очень странно то, что за последние места отнимаются так мало пунктов рейтинга.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    Ну это логично: чем меньше получают топ-участники 2 дивизиона, тем меньше теряют последние места.

    Вот сейчас обсуждается, что это (такое урезание) вроде бы совсем не правильно.
    • 13 лет назад, # ^ |
      Rev. 3   Проголосовать: нравится +1 Проголосовать: не нравится

      Так последние места в див.1 тоже не сильно падают.
      С тем, что урезание неправильно полностью согласен.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Ну вот опять : последнее место в текущем контесте, участник Timus  получил всего -48 к рейтингу.
Хотелось бы услышать мнение администрации, почему у него отнялось так мало рейтинга.
»
12 лет назад, # |
Rev. 2   Проголосовать: нравится +46 Проголосовать: не нравится

мне одному кажется, что уже не серьёзно то, что например bmerry занял первое место, и попрежнему сидит в див2? на тс можно не попадя в топ50 стать жёлтым за первый раунд.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    +1 когда писал свой первый контест на кф получил +134 за 201 место. а тут за первое +176. нехорошо как-то.

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Интересно еще и то, что он получил +176 к рейтингу с первым местом, а я с 193 местом — +135. разница в +41 какая-то странная по-правде =)

    • »
      »
      »
      12 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      У Вас был очень маленький рейтинг до контеста, так что все нормально.