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

Автор BOOBA, история, 5 лет назад, перевод, По-русски

Сегодня я попытался проанализировать прошедшие раунды на codeforces.
Я написал примитивный парсер таблицы изменений рейтинга и собрал немного статистики с них.
Из результатов я понял, что имеет место дефляция рейтинга.
Для меня это было неочевидно, поэтому я решил проанализировать больше и тенденция подтвердилась.


Немного статистики:
Round #635 (Div. 1): количество участников=1406, средний рейтинг=2170, суммарное изменение=-11777, среднее изменение=-8.4
Round #635 (Div. 2): количество участников=14830, средний рейтинг=1377.4, суммарное изменение=-155190, среднее изменение=-10.5

Div2 раунды сложно анализировать из-за большого количества участников, поэтому потом я просматривал div1 раунды

Round #626 (Div. 1): количество участников=788, средний рейтинг=2195, суммарное изменение=-5689, среднее изменение=-7.2
Round #631 (Div. 1): количество участников=1273, средний рейтинг=2175, суммарное изменение=-1058, среднее изменение=-0.8
Round #633 (Div. 1): количество участников=1392, средний рейтинг=2161, суммарное изменение=-14764, среднее изменение=-10.6

Из приведённой статистики можно понять, что количество участников растёт, а средний рейтинг постепенно падает.
Я думаю это происходит из-за того постоянно растущей популярности сайта (и программирования в целом).
Система подсчёта рейтинга пытается сбалансировать участников таким образом.
P.S. Это не повод не писать раунды :)

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

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

It would be very interesting to look up the same info for the Div. 2 rounds. I suppose that the average change would be higher than Div. 1 (it's just my assumption).

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

I thought the system was designed such that the total rating change is always zero. Why isn't this the case?

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

    Remember that average rating of active users is much less than 1500.

    I do not know how that came to be. Whatever the reasons are, this creates a problem: introducing new users with a starting rating of 1500 all but guarantees that the average rating is inflating by ~100 rating per new user. Therefore, to evade rating inflation, ratings are artificially lowered.

    In normal times, Codeforces experiences regular growth in the number of active users. And these deflationary measures were probably fit towards keeping the average rating constant.

    But in normal times we are not, and Codeforces is experiencing a rapid onslaught of

    a) previously active users whose skills have eroded, with their high old ratings;

    b) new users who are less skilled than a typical ~1500 user.

    This means the old parameters may even not prove enough to prevent inflation in the short term.

    Lowering the starting rating, and increasing the K-factor (or equivalent) for new users, could have been a possible workaround. I'm not sure what helps now, when growth has already taken place, and the converging will inflate the ratings over the next several months.

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

      (Also, there is a nontrivial amount of accounts who register, take part in a small amount of contests, and then never come back.

      I guess those also contribute in the inflationary direction for real active users, but I wouldn't bet on it being the dominant term. Is there evidence that I am mistaken?)

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

      I completely agree.

      In fact, I think that the average performance of a first time user in a contest is actually substantially lower than the average ~1400. Thus, with the influx of new users, it is natural to assume that old users have their ratings slightly pushed up.

      From a different perspective, rating is simply the relative skill of a user compared to other users on codeforces. As a result, when a new user joins that is less skilled than you, your rating will go up. On the flip side, if no more new users joined, everyone would just keep improving, and it would be much harder to gain rating as you have to increase your relative position. Therefore, there needs to be some kind of balance between the number of new users that join and the rate at which everyone is improving in order to reach an equilibrium. In the past, codeforces has actually done quite a good job of maintaining this, but now, with so many new users, it seems like it is leading to rating inflation.

      Perhaps the fact that the net rating gain in div1 is negative as shown in this post is an attempt to offset this rating inflation?

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

Small sample size. 4 rounds and a couple of weeks between them is not much. Also note that your data shows the average rating increased from 633 to 635.

In fact, the rating is inflating, which is seen when you observe ratings of top users from a couple years ago and now.