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

Автор MikeMirzayanov2 года назад, По-русски

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

Каждый человек характеризуется своим рейтингом, числом R . Если у человека A рейтинг равен R A ­, а у человека B равен R B , то формула


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

Перед тем как обновить рейтинг по результатам прошедшего соревнования для каждого участника считается его seed – математическое ожидание места, которое он займет на этом соревновании. Таким образом, для каждого участника известен его seed (ожидаемое место) и rank (то место, которое он в итоге занял). В зависимости от разности этих значений рейтинг увеличивается или уменьшается. Чем больше разница значений, тем больше изменяется рейтинг.

Есть еще несколько технических моментов:
  • если это первый контест участника, то его seed вычисляется как 1 + n / 2, где n– общее число участников раунда;
  • изменение рейтинга участников соревнования умножается на поправочный коэффициент такой, что сумма рейтингов участников остается неизменной (до и после раунда).
Как и на TopCoder все пользователи делятся на два дивизиона: первый (рейтинг более 1500 1650) и второй (рейтинг не более 1500 1650). Пользователи без рейтинга автоматически попадают во второй дивизион.

Высокого вам рейтинга, MikeMirzayanov
 
 
 
 
  • Проголосовать: нравится  
  • +3
  • Проголосовать: не нравится  

 
2 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Предусмотрена ли борьба с инфляцией рейтинга?
  •  
    2 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Пока так: "изменение рейтинга участников соревнования умножается на поправочный коэффициент такой, что сумма рейтингов участников остается неизменной (до и после раунда)".

    Сумма рейтингов остается неизменной.
    •  
      2 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      А значит возможно что одновременно с таргетами (3000+) появятся и мазохисты (0-).
 
2 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
в дальнейшем контесты как и на ТС будут по дивизионам?
 
2 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Дорешивание на рейтинг не влияет?
  •  
    2 года назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    Конечно влияет: подорешивал - стал круче, стал круче - рейтинг вверх!
    •  
      23 месяца назад, # ^ |
        Проголосовать: нравится -3 Проголосовать: не нравится
      это глупо, можно запросто списать у тех кто сдал!
      •  
        23 месяца назад, # ^ |
        Правка 2   Проголосовать: нравится 0 Проголосовать: не нравится
        коды ведь общедоступны
      •  
        23 месяца назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Нет, тут дело совсем в другом.
        it4.kp имел в виду, что если ты дорешаешь задачу на дорешивании (замечу, сам), то ты получишь опыт, дополнительную практику. Тем самым ты улучшишь свой навык решения задач, а, следовательно, лучше будешь выступать на соревнованиях.
        Чем лучше будешь выступать на соревнованиях, тем выше место ты займёшь.
        Чем выше место, тем выше реитинг. :-)
        •  
          19 месяцев назад, # ^ |
            Проголосовать: нравится -9 Проголосовать: не нравится
          Спасибо, кэп, а мы не поняли.
          •  
            11 месяцев назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            Он сказал именно тем кто не понял :)
            •  
              11 месяцев назад, # ^ |
                Проголосовать: нравится -7 Проголосовать: не нравится
              Кэп, говорит вам спасибо) Кэп желает вам на сегодняшнем контесте тоже стать Кэпом)
 
2 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Сори за оффтоп... не знаю куда писать (кстати, думаю будет неплохо добавить вам в свой блог отдельную тему для обсуждения сайта)...

Так вот... почему то иногда когда перехожу на сайте по ссылкам у меня включается закачка gz архивов... например если бы я нашёл где нить ссылку на эту тему и кликнул по ней.. то с вероятностью около 1-5% мне предложило бы скачать 102.gz (см. адресную строку). Но потом перейдя ещё раз получается таки перейти туда куда нужно. (codeforces открываю в хроме)
 
2 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Пока он тоже находиться в состоянии beta

НаходиТСЯ же =(

 
2 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
А может лучше не считать seed, а вычислять фактический рейтинг в рамках одного соревнования (т.е. такой рейтинг, при котором математическое ожидание места для соревнования совпадет с фактическим), и считать новый рейтинг так: new_rating = old_rating + ( fact_rating - old_rating ) * some_coeff (где 0 < some_coeff <= 1)? А для новых участников делать new_rating = fact_rating. Так по-моему было бы точнее.

А ещё лучше (но, наверное, сложнее технически) считать текущий рейтинг как среднее фактических рейтингов за несколько последних соревнований; а в идеале, наверное, как взвешенное среднее всех соревнований, где последние имеют больший вес.
  •  
    2 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Перед внедрением система рейтинга обкатывалась на статистических данных и выглядит вполне адекватно.
 
2 года назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится
Предлагаю в таблицу "Зарегистрировавшиеся участники" на контест добавить столбец текущий рейтинг и сортить по нему.
 
2 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Would you introduce the possibility to see progress of each user? Especially the highest rating ever reached??
 
23 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Я не совсем понял, если я занял 100-ое место в 1-ом дивизионе и 100-ое место во 2-ом, то это равносильно? т.е. мой рейт увеличится на одинаковое кол-во баллов?
  •  
    23 месяца назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    При условии, что в этих контестах в твоем дивизионе участвовали одни и те же люди с теми же самыми рейтингами, — да.
 
18 месяцев назад, # |
Правка 3   Проголосовать: нравится 0 Проголосовать: не нравится
Извините, если что, за тупость, но это не то же самое, что
?
 
18 месяцев назад, # |
Правка 2   Проголосовать: нравится +3 Проголосовать: не нравится
Does the sum of ratings increase together with the number of registered users or the more users register the less the ratings are going to be?
Sorry, unwillingly I marked this comment as one in Russian, so I wrote it in both languages.

Правка> Так, как неохотно пометил, что коментарий по-русски, вот вопрос по пусскам: Когда количество участников увеличевается, сумма рейтингов тоже увеличевается или они просто становятся менше?
  •  
    17 месяцев назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Попытаюсь предположить:

    С появлением нового участника сумма рейтингов увеличивается.

    Если новый участник выступает хорошо и его рейтинг становится > 1500 (базового), то он «забирает» чужой рейтинг.

    Если рейтинг нового участника < 1500, то он «отдаёт» свой рейтинг более сильным участникам.

 
18 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Кстати, можно поподробнее про то, как в олимпиадах ЗКШ высчитывался командный рейтинг? На первом контесте мы(почти Мозырь-1) получили +141 заняв 4 место. На втором заняли 12-е место, но все равно получили +141. На третьем мы заняли 10-е место (10<12), но получили +112 (112<141).
  •  
    18 месяцев назад, # ^ |
    Правка 2   Проголосовать: нравится 0 Проголосовать: не нравится
    В олимпиадах ЗКШ использовался рейтинг ИТМО. Это какая-то хитрая функция от места, числа задач и числа задач решенных 1 местом. Подробно что это за функция не знаю, но знаю что она медленно убывает с местом и быстро с числом решенных задач. Например у нас со 2 местом за первый контест 144 а за второй с тем же вторым местом 198. Разница в том что в первом случае мы решили на 3 задачи меньше чем 1 место, а во втором решили столько же.
  •  
    18 месяцев назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    формула (т.н. "Рейтинг ИТМО") выглядит так:
    R = 100· (Solved / Winner)· (2· Teams - 2) / (Teams + Place - 2)
    Solved - сколько задач решил участник,
    Winner - сколько задач решил победитель (1 место),
    Teams - количество участников,
    Place - итоговое место.
 
18 месяцев назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
Немного не в тему:
Было бы удобно убрать привязку к регистру там, где дело касается ников, например в поиске на странице http://codeforces.ru/contestRegistrants/42
 
17 месяцев назад, # |
Правка 2   Проголосовать: нравится +3 Проголосовать: не нравится
There are many comments in russian version that I don't understand and this subject is on the top of recent actions.
 
17 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Стойте, стойте, это подсчет рейтинга который в "социальной сети" использовали ?
 
17 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Вчера написал свой первый контест, занял 216 место и получил рейтинг 1615. Человек, который занял 12 место (это тоже был его первый контест), получил рейтинг 1643.
Точно сейчас все правильно считается? Или это только в первом контесте так происходит?

И можно еще увидеть конкретные формулы? Я раньше думал, что тут рейтинг Эло используется для всех пар участников, но теперь я сомневаюсь в этом, уж больно не похоже.
  •  
    17 месяцев назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    Рейтинг по дивизионам считается отдельно. Ты занял 15 место во 2м дивизионе из 150+, он занял первое. У вас обоих ожидаемое место было около 75. Т.е. вы оба выступили намного круче ожидаемого и получили кучу рейтинга. Он выступил лучше и получил рейтинга больше. ИМХО все логично.
 
17 месяцев назад, # |
Правка 2   Проголосовать: нравится 0 Проголосовать: не нравится
Да, если отдельно для каждого дивизиона, то все похоже на правду.
Спасибо.

(ой, не туда написал)
 
16 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
is number of rated contest each users joined before the current contest has some effect in rating system??
 
13 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Could someone explain to me why is the use of the Elo Rating for the seed generation different of simply sorting the participants by rating?
  •  
    12 месяцев назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Say we had two people with the same (or very similar) rating. If we sort them, we will have to assign different seeds, which would give an unfair rating boost to the person seeded lower.

    Another example is the person seeded 1st. Elo rating's idea is to make expected rating change equal to 0 for every properly rated individual. However, a person seeded 1st will have a non-zero (quite large in practice) probability of losing rating (taking non-1st place) and zero probability of gaining rating (you can't go above 1st, can you?). This will make expected rating change for the highest-rated person always <0, showing that he is not properly rated.
 
11 месяцев назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
А как рассчитать, зная свой рейтинг до контеста, какое место нужно занять на контесте, чтобы рейтинг после него увеличился?
  •  
    11 месяцев назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    А вот никак. В том и весь прикол, что точные формулы засекречены. Но, кстати, даже если бы они и были рассекречены, то: а) в любом случае подсчитать удалось бы лишь приближённо, ибо не все зарегистрированные потом участвуют в контесте; б) даже предположив, что мы точно знаем, кто будет участвовать, а кто нет, не факт, что можно рассчитать такое место для конкретного участника, не принимая во внимание результаты остальных (это просто предположение, что формулы могут быть сложнее, чем мы о них думаем).
  •  
    11 месяцев назад, # ^ |
    Правка 2   Проголосовать: нравится +5 Проголосовать: не нравится

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

    UPD. На этот вопрос отвечаю не в первый раз. Согласен с Alex_KPR по поводу дельты.
    Причём хочу добавить, ИМХО, дельта эта положительна, если участник ниже середины или в ней, и отрицательна - участник выше середины.
    •  
      11 месяцев назад, # ^ |
        Проголосовать: нравится +6 Проголосовать: не нравится
      Неправда. Этак Геннадию надо первое занимать чтобы рейтинг не упал
      •  
        11 месяцев назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        очень даже правда

        Геннадию нужно занимать 1-ое +/-Δ место, чтобы рейтинг не падал

        daftcoder применяет фразу "Ну если грубо", чтобы подчеркнуть наличие этой самой дельты
        •  
          11 месяцев назад, # ^ |
            Проголосовать: нравится +5 Проголосовать: не нравится
          Ну так можно сказать что всем нужно занять 1е место +- дельту. Ладно, для Геннадия эта дельта будет небольшая, а вот для меня, например, довольно приличная - несколько десятков человек.
          •  
            11 месяцев назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            два десятка человек - достаточно небольшая дельта, если учесть, что участвуют три сотни человек
    •  
      11 месяцев назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Я таким методом оценки пользуюсь на TopCoder. Хотя, как показал SRM 508, если занятая позиция чуть ниже позиции по рейтингу, рейтинг всё равно слегка ползёт вверх. Но это за счёт того, что я по рейтингу выше середины дивизиона, а если бы был ниже, должен бы вроде был быть обратный эффект (проверять не хочу). А что, на Codeforces уже тоже прикрутили фичу сортировки по рейтингу? Если так, то я как-то это пропустил...
      •  
        11 месяцев назад, # ^ |
          Проголосовать: нравится +9 Проголосовать: не нравится
        <master Yoda="says">
        Нет функции такой на сайте. Силу мысли используй и отсортируешь участников ты.
        </master>
 
»
5 месяцев назад, # |
Правка 3   Проголосовать: нравится +5 Проголосовать: не нравится

"изменение рейтинга участников соревнования умножается на поправочный коэффициент такой, что сумма рейтингов участников остается неизменной (до и после раунда)".

"изменение рейтинга" "умножается".

Умножается все-таки изменение рейтинга или рейтинг? Если изменение, то практически всегда надо умножать на 0.

А если умножается рейтинг, то может возникнуть ситуация, когда рейтинг уменьшается не смотря на то, что rank > seed
  •  
    »
    »
    5 месяцев назад, # ^ |
    Правка 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Вообще, очевидно, что во фразе про умножение какая-то ошибка (умножать на 0, да).
    Я лично при эмулировании вычитал. Более того, если не округлять, то получалось, что поправочный коэффициент всегда равен 0. Округление создает небольшую ошибку.

    Видимо, когда-то домножался именно рейтинг, потому как ситуацию с падением рейтинга tourist после выигранного контеста иначе объяснить нельзя.

 
»
5 месяцев назад, # |
  Проголосовать: нравится -12 Проголосовать: не нравится
ради интереса пересмотрел кусок в Социальной Сети, таже формула для фейсмеша )

  •  
    »
    »
    5 месяцев назад, # ^ |
      Проголосовать: нравится +12 Проголосовать: не нравится
    Да, а если еще и слушать фильм, а не только смотреть, то они говорят, что это рейтинг Эло для шахматистов.
 
»
3 месяца назад, # |
  Проголосовать: нравится -1 Проголосовать: не нравится

Division boundary is actually 1700 as described in FAQ.