During the month we tested 4 different models of our subscription plan. We selected random subgroups of our audience and showed them experimental versions.
A vote was available, either you like the changes or not. Also, we looked at other metrics, such as daily activity, session duration, viewing depth, etc.
Based on the results of the experiments, we chose the current model, because we saw that it was popular with most users. We have increased the number of subscriptions, and the activity of free users has increased too.
We will always do service with an eye toward our audience that does not pay us, but free users should also understand that if there is no monetization, the service will simply close. We can see that most of the free and paying users have benefited from the current version. Of course, there are those who do not like the change, but we are always open to feedback in any social networks.
We have the game stats of all professional Dota 2 tournaments for the last 3 years. The historical data is our teacher — using it we trained AI based on machine learning models to predict the future. In this project we are focused on predicting player’s Fantasy Points on the International 2018, check it out.
How it works
The figure shows the scheme of our prediction algorithm. There are two machine learning models: the first one predicts statistics that contribute fantasy points (such as Kills, Deaths, XPM, GPM, etc.), and the second one predicts the probability of winning the future match. The models were trained on the historical data of the professional tournaments. After we got predictions for player’s match stats, it remains only to multiply them with corresponding coefficients and gold/silver card bonuses (if you choose them) and we have predicted FP for a single match. The predicted win probability is used as additional information for FP prediction model (usually winning player will receive more fantasy points than losers) and to run tournament simulation when we don’t know who will play with whom in the future. By running simulation, we get an estimate of the probable number of matches player will play next day (this is very important in playoff stage) and finally — the total number of fantasy points for the day.
Fantasy Points Prediction
The following figure shows our fantasy points predictions for two players: w33 (paiN Gaming) and Silent (Winstrike).
The horizontal axis corresponds to a sequence number of the match. The vertical axis shows fantasy points. Solid lines show how our predictions changed match to match and the crosses correspond to a real amount of fantasy points scored by the player.
As you can see, a predicted value almost never matches the actual FP exactly. All predictions contain a deviation, according to our validation on historical data it does not exceed 15 points in the most (90%) cases. The prediction error happens because the machine does not know everything about player: it doesn’t know player’s feelings during the tournament, it does not take into account team’s strategies, it just finds patterns in the vast amount of historical data. FP predictions are not exact, but more important is that we can compare the predictions of two players: the more predictions differ, the more likely one player will get more fantasy points than another. If you want to get maximum total fantasy score, it is reasonable to pick players with maximal predicted FP every day.
Win Prediction and Tournament Simulation
To make FP predictions we have to predict how many matches the player will play next day and which of them will be winning. Here comes our supporting machine learning model that gets information about any pair of teams and estimates their win probability. For instance, now the model predicts the chance that Team Liquid will beat OG as 61%, which means that if Team Liquid could play versus OG 1000 matches in a row and their skills, fatigue and strats will not change during all those matches, then about 610 games will be won by Liquid.
Having predictions and a known tournament grid we make a simulation of 1 million possible outcomes of The International 2018 and here are the table of probabilities that a team will reach a specific place/bracket on this tournament.
Favourites of our model are VP, Liquid, PSG.LGD. But, the probability 20% of winning the tournament is still not very high (1 of 5). So, be rational if you decide to make a bet ;).
Stay tuned and subscribe to our Facebook and Twitter! Suggest us what else to predict.
It is assumed, that players are similar to each other if they prefer to play on similar characters. For each player, GOSU.AI uses the information according to the last hundred matches played by him. Based on this information, a frequency vector of heroes used is created:
Pick rate in the last 100 matches
The more two players are alike, the less the Euclidean distance between their frequency vectors.
– frequency vector of the first player.
– frequency vector of the second player.
Here’s – the percentage of the last 100 matches, in which the first player used the hero at number 1 – Abaddon.
The similarity of the two players on the basis of the used objects is considered absolutely analogous to the case with the heroes used, but now items are used as a component of the frequency vector.
In the case of Fighting, the idea remains the same, but instead of frequency vector, a vector is used that consists of the following components, calculated on the basis of the last one hundred matches played by the player.
Average damage dealt to enemies
Average damage dealt to buildings
Average healing done on allies
Average number of kills
Average number of deaths
Average number of assists
Each player has an analog of a person’s fingerprints. As a ”fingerprint” is a heat map of the mouse cursor. The longer the player’s cursor is at this point in the screen, the more red the dot on the picture.
It’s easy to notice, that a large number of players often buy items with a mouse. Someone moves the screen by clamping the mouse wheel and someone moves the cursor to the edge of the screen. Based on the signs received, we can distinguish players from each other. If people can do this, then neural networks will be able to! Сonvolutional neural network is trained on the participants of the tournament.
At the input, the neural network receives a picture with a heat map of the mouse cursor of the player and on the output, it returns the probability, that this heat map belongs to a given professional player – this is mouse-similarities.
Similarity on the basis of positioning on the map can be considered absolutely analogous to how similarity was considered on the basis of heat maps of mouse cursors. Instead of the coordinates of the mouse cursor on the player’s screen, the coordinates of his hero on the map in Dota 2 match are used.
Every Dota 2 player faced a cheater at least once. Recently, their number has increased significantly. Cheaters appear not only in a public games but even on a semi-pro stage. We can no longer be indifferent to this situation, that’s why we started to develop our anti-cheat system.
Try it out and check if you’ve played with cheaters.
At the time of writing this article we analysed approximately 200k matches that were played by about 1 million unique players. Here we share with you some stats and tell how this system works. Further we will tell you how the anti-cheat works and share some stats.
Cheats for Dota 2, are you serious?
There are a lot of them, see this review. For the beginning we have implemented algorithm that detects cheats that could be identified by tracking mouse movements and clicks in replay.
Having enabled this cheat, unprincipled player is able to look at the distant places on a map with less mouse clicks and movement and faster respond to events taking place outside the screen. Note that the wide monitor does not make you a cheater, because the allowed extension of the view only works in width. This is the most popular cheat, we found its use in 12.24% (sic!) of all matches. Approximately 1.1% of all players abuse this hack and 76% of them play with unacceptable zoom in each game.
We found zoomout (camera distance) in 12.24% of all matches. Unique users with cheats – 1.02%, 76% of them used zoomout in each game.
Automatic creep blocking
Creep blocking is an important technique that allows mid-lane player to farm effectively at the start of the game. But what if the program will instantly click for you in a right place to stop creeps without any of your attention? Obviously, this kind of automatization is unfair.
Good news, there are only 0.1% of players (one of 1000) who use this cheat in public matches, but you can meet cheater in 0.5% of matches (one of 200).
Automatic items dropping
Quick drop and pickup of some items under certain conditions could give your hero additional bonus. For instance, dropping and picking back Arcane Boots having Soul Ring gives the hero 75 freebie mana points, but actually to do so you have to spend a time to move mouse to the inventory bar and return it to the map.
At least 0.035% (350 of one million) players make those actions automatically, without real mouse movement. This adds injustice to 0.328% of matches.
The player automatically throws items from the bag to get an additional bonus from pressing certain items. Match ID: 3730565232
How anti-cheat works
To detect cheating we extracted mouse movements and all the actions player perform on a map from replays. To analyse player behavior we aggregate several statistics like the distance between the mouse position on a screen and the place where the player’s real action was registered. Then we use machine learning technique called anomaly detection: the algorithm learns from a sample of “pure” matches (manually checked by our Dota 2 experts for the absence of cheating) and then able to detect “suspicious” deviations from the norm.
To classify cheating behavior and estimate the accuracy of our detection we asked our experts to review random “suspicious” matches manually and make a strong decision — whether there was cheating or not? Statisticians call this technique an acceptance sampling. According to our current estimates, the detector has less than 3% of false positives (situations when the system erroneously blames player for cheating).
An ideal algorithm is hard to build because of the large number of unique situations. We offer our deepest apologies if your play will fall into those erroneous 3%. If it will, let us know by sending a feedback through “This is wrong” button. As mentioned before, our algorithm learns on the labeled replays. So, the more feedback you will send — the more accurate our anti-cheat will be.
We see a big problem with cheating behavior in public games, but we are not going to wait until #valvefixit. So here’s our offer to the Dota 2 community, tournament platforms and other third-party developers: we are ready to give an access to our closed API for cheat-checking. If you are interested, please contact Kirill Chuvakov <firstname.lastname@example.org>.
We’re going to make Dota 2 great again!
Try it out and check if you’ve played with cheaters.
Hello. I work at GOSU.AI where we create different tools for CS:GO and Dota2 that help people to improve their skillz. Here are some of my previous articles: 
In my new article I continue to study flashbangs usage with programming and data analysis. This time I download all the demos from Eleague Major 2018 New Legends stage in order to find out the most efficient flashbangs used by participants and show how do they throw it.
Same method is also used in our upcoming open service for CS:GO demos analysis. Feel free to register here
My approach for the article is pretty simple:
In order to define “best” grenades/teams calculate some efficiency metrics
See who is a leader in these terms
Show some examples of their “repetitive” grenades leading to a notable success.
Idea is that each team has flashbangs that they throw round by round, game by game. This means there are patterns in terms of where player stands and places he throws a grenade. Given that it becomes possible to find out such repetitive grenades automatically using mathematical approach called Clustering
I use two very basic and natural metrics for the flashbangs: flash duration time and flash-to-kill conversion. However, there are different ways to calculate them
One could simply calculate overall sum of them and compare those numbers but it makes sense to average overall sum by number of rounds played and number of flashbangs used
Many people notice how well prepared Space Soldiers are in terms of aim but charts above show they are good in flashing too. Interesting note is that Astralis were not efficient with their flashbangs during a group stage having 14-16th places in all fb ratings.
Now let’s take a bunch of Space Soldiers demos and see how flashbang Clustering works. I took 2 of their mirage demos since its the only map they played twice during the Group Stage. I would be looking for clusters that have non-zero flash to kill conversion
Here are two flashbangs that SS seem to use on a regular basis
Same approach works for any given team or player. Here are two clusters for SK on mirage. Note how you become able to compare different ways to throw a flash over T ramp
I could continue but I guess you’ve got the idea. Upload a bunch of demos, process in a correct way and boom you’ve got grenade clusters.
Here’s how our csgo analyser is going to use that data: based on a single demo (say you upload your game) for all of your grenades analyser could see if there is a cluster that your grenade belongs to most likely and measure your efficiency metrics. If you didn’t do well you get an advice on how you could throw that particular grenade better.