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

Автор CinCout21, история, 11 месяцев назад, По-английски

What this app does

Plots your entire rating history from your very first contest and overlays a fitted regression curve (linear, quadratic, or cubic) to best approximate your rating trend

Projected curve fit into your rating chart

Actual contest rating changes in all the contests a user has participated in so far

Hover over the projected curve to see the predicted ratings at each timestamp/date till December 2025

Predicts your future rating month-by-month until December 2025. Future Rating Predictions (Monthly till Dec 2025)

Approach

1. Fetches a user's entire contest history : Codeforces RatingChange API

Each contest entry includes:

contestId: Unique ID of the contest

contestName: Name of the contest

handle: User's Codeforces handle

newRating: Rating after the contest

ratingUpdateTimeSeconds: UNIX timestamp (converted to a readable date)

2. Machine Learning techniquePolynomial Regression : Fits a smooth curve through a user's rating history using polynomial regression.

I tried linear regression, and polynomial regression with degrees 2 and 3 but since most people participated in less than 100 contests, polynomial regression (with degrees 2 and 3) caused overfitting and showed absurd results but it works fine for some users who participated in a large number of contests.

I tried to improve the balance in the dataset before training by over-sampling some data points for some users with very less number of contests but i suggest most users to use the Linear regression approach (Polynomial Regression with degree 1) in order to obtain smooth and more accurate results but I have given the option to view the results produced by the higher degree polynomials as well in the dropdown in the bottom of the page.

You can access it from here : Codeforces Future rating Predictor

NOTE : Since I used the free-tier of Render to deploy the backend, it will spin down to sleep mode in case of prolonged inactivity and in such cases it would take slightly longer time to return results (3-4 mins), otherwise it would return results instantly in few seconds.

Disclaimer

These predictions are NOT 100% accurate. They are generated using your past contest ratings only. The model does not account for upcoming contest performance, competition difficulty, relative ranking, or rating inflation. Also, the more contests a user has participated in, the better the prediction will be.

Looking forward for your feedback, Thank you!

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

»
11 месяцев назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится

I highly appreciate your efforts, some suggestion I would like to add a suggestion(I am a complete noob in ML things)

I think using neural network approach will work better, because as your rating increase, your delta will not be same. For doing this you can train your model on at least 500-1000 accounts and also take no. of problem solved and rating of problems as a parameter and these things will add on to make more accurate curves.

»
11 месяцев назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится

It's unrealistic for you to simply fit our rating points into a linear function. If a new account participates in all competitions within one month and receives 1800 ratings, do you think he will reach Tourist within half a year? The answer is negative, but your model doesn't consider anything.

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

    Yeah, I understood but it is very rare that someone is reaching expert or specialist in just 5-10 contests, it is possible but it is rare and it is an outlier in the dataset, but yeah you're right but this approach would work for most of the users on codeforces not with 100% accuracy but it can be a decent fit into their rating chart and there is an option for fitting various kinds of polynomial curves in my web-app not just linear. In statistical models, some outliers exist and it is not possible so satisfy every user.

»
11 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I think that you should omit the first $$$5$$$ contests from the analysis because the rating is stabilizing in those contests. Leaving them in leads to artificially high predictions.

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

    If someone has participated in at least 10-15 contests then those first 5 wouldn't make much difference as it can be seen for some handles in the application, also I have done over-sampling to prevent this, after the first 4 contests i added some synthetic data points to prevent this effect which you said

»
11 месяцев назад, скрыть # |
Rev. 2  
Проголосовать: нравится +84 Проголосовать: не нравится

Such a smart community, yet they keep linear freaking regression to predict rating (I have seen another guy using average difficulty of problem solved as feature and also using linear regression). Common guys, can't we do better than this? If this gets 40 likes I'll drop a foundational model that takes in data of a user, generates embeddings and predicts the user rating in 3, 6 and 12 months. I'll also post the dataset on Kaggle, so people won't have to DOS codeforces serves everytime.

Update: ok guys, I will do it, just wait 1 or 2 weeks for a blog (I have to work, so I barely have time to do this outside of weekend)

»
11 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

With a simple linear regression model like this, expect high inaccuracies (bias). Don't get too excited folks, it seems like someone from first year has made this project.

»
11 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I know it's not accurate but 2088 by end of November seems pretty nice to me :)

»
11 месяцев назад, скрыть # |
 
Проголосовать: нравится +4 Проголосовать: не нравится

Wow, the model says I’ll reach 7000 rating by the end of the year! tourist better watch out.

»
11 месяцев назад, скрыть # |
 
Проголосовать: нравится +11 Проголосовать: не нравится

I am waiting for my 4339 rating by the end of the year.

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

LMFAO I wish this was how rating progression worked... Linear regression thinks I should've become CM weeks ago, yet I'm barely hovering above specialist now :(

»
10 месяцев назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Can you check my profile and tell me what I make out of these results?

Degree 1 told me I might go in 1858, Degree 2 says 1769, and Degree 3 says 909 (which scares me, lol).

Can you add a feature to select a particular timeline only, like I gave 5-6 contests initially, then left CP for 1 year, and came back and gave 75+ contests, but I think those 5-6 contests are affecting the graph. Rest, it is a good model.

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

    yeah, we are working on improving the prediction and yeah we'll add that feature too of selecting a particular timeline. don't worry about the degree 2/3 predictions they work better if the number of contests is super high and if a user is participating in contests consistently. Thanks for your feedback