Inspiration
Followed LOL Esports for many years and works as a data scientist. I have a lot of experience with rating models so this was an interesting challenge.
What it does
Calculates ratings using historical match-player-data and exposing them using API endpoints.
How we built it
Rating Model
- A separate libary for optimizing player-based-rating models was created for this usecase (https://github.com/Hiderdk/player-performance-ratings)
- Player-and-team-stats such as kills, deaths,assists, game_length, champion compositions, damage was adjusted for context and used to calculate ratings.
- The weights were optimized for predictive accuracy (who wins next match).
- To address regional rating bias's (weak isolated regions tend to be have inflated ratings in rating-models), a new player who enters his first match receives a different rating if he plays an LCK match compared to a new LCS Academy player.
- If teams/players from a league outperforms in matches against teams from another league, it will slightly boost the rating of all other players within the league. This ensures that a leagues strength dynamically can change over time
Post Rating Processing
Ratings transformed into API-ready data format and uploaded to S3 (see https://github.com/Hiderdk/lol-aws-global-rankings/blob/main/src/tournament_rankings_storer.py and https://github.com/Hiderdk/lol-aws-global-rankings/blob/main/src/global_rankings_storer.py )
Lambda Function loads S3 file in response to GET Request body and returns new body given query and path parameters.
API Gateway exposes API endpoints.
Challenges we ran into
Data quality was incosistent. E.g. some games not mapping to tournaments, players not mapping to their names. Incorrect playercounts per game.
Accurate relative strenghts between different leagues/regions. LFL/Prime definitely overrated. A lot of work has been to try to address it, and the attempts have resulted in noticeable improvements, but clearly room for more.
Experimentation with ingame state data (every 10 second) --> Took a lot of storage to work with this. Attempts at making win-probability-added metrics did not lead to improvement in predictive accuracy.
Accomplishments that we're proud of
- Generic framework for optimizing any type of rating model was created to support the project.
- Optimization for regional ratings resulted in significant accuracy gains.
- Player performances adjusted for context (e.g. champion composition).
What we learned
- Gained experience with AWS ecosystem.
- Teams winning matches in short game-time is better than in drawn out.
What's next for LOL Player Ratings
- Utilize ingame-state data better. One could imagine evaluating players to measure whether their contribution in a gank/teamfight improved win-probabilities.
- Continue improving regional ratings (still some flaws in the rating values between teams from different leagues).
Built With
- api
- gateway
- lambda
- s3
Log in or sign up for Devpost to join the conversation.