3 ms·
This suddenly reminded me of how I was “cheating”. Before the game starts each of the ten players gets to pick a distinct hero for themselves out of a pool of
by jiggawatts 4y ago
This suddenly reminded me of how I was “cheating”.
Before the game starts each of the ten players gets to pick a distinct hero for themselves out of a pool of about 120 choices. This is over 10^20 distinct combinations! Each hero has some unique capabilities that combo with allies or counter enemy heroes.
I tried to train a “hero recommender” based on tens of millions of games.
It turned out that this is obscenely difficult because even the best AI training algorithms struggle with such highly noisy labels. A good hero combo might shift win rates by some positive percentage but have a single sample data point, which is a loss because of one stupid kid in the team throwing the game.
You also can’t naively simplify the problem into 2-hero or 3-hero combinations because this misses the “total team composition” metrics.
I found some research papers that were just a few months old at the time which covered this corner of the AI training space. Their conclusion were: “We don’t know either but it’s an interesting problem!”
- sbdaman 4y agodotabuff.com does this on a broader scale (offers hero counter suggestions etc.) A better example is u.gg or op.gg which do this for LoL.
- mminer237 4y agoDota Plus in an integrated paid service that does this too.
- csours 4y agoYou would also have to match with the skill and preference of the player
- ScoutOrgo 4y agoI wanted to do this but never figured out where I could get access to the data. I think with setting up the inputs correctly to handle 0-5 heroes chosen per team it could work. Once you have a model you just need to rank remaining heroes by the expected win probability if they are included with the team. If you have a way to get data I would be interested.
- jiggawatts 4y agoThere's a free API endpoint, you can get an API Key based on your Steam logon. The problem is that it has been highly throttled, throwing 429 errors after just a few dozen calls. When I looked at it before it was "soft" throttled and would return data at a pretty decent rate. If I remember correctly I got something like 80 million game results downloaded in about a week. You can get 100 matches at a time[1] via this API: https://wiki.teamfortress.com/wiki/WebAPI/GetMatchHistoryBySequenceNum https://wiki.teamfortress.com/wiki/WebAPI/GetMatchHistoryByS... The "ID" is the game ID, which is 570 for Dota 2. Hence the actual API endpoint is: GET https://api.steampowered.com/IDOTA2Match_570/GetMatchHistoryBySequenceNum/v1 [1] It would be ever so nice if Steam provided daily batches in gzip files. That would be thousands of times cheaper for them to host, and much more useful for AI researchers.
- hanrelan 4y agoYou should be able to get the data pretty easily from opendota: https://www.opendota.com https://www.opendota.com
- SpaceManNabs 4y agoUse stratz or opendota. I used statz myself a few times
- SpaceManNabs 4y agoLimit the problem to actual hero roles and positions and the problem becomes actually tractable and much less noisy. I seeded a crf with my own potentials and had it learn and it was pretty good on a random test set. Never tried it live tho
- deleted 4y ago[deleted]