# Predicting outcome of MOBA team games

MOBA team games have teams composed of a subset of 5 heroes from a larger set of possible heroes (say 100 heroes in the larger set)

For example, a game can be between a team with heroes 1,8,43,65 and 71 and a team with heroes 3,7,23,41 and 45.

What is the best way to train a model that predicts the outcome based on team compositions?

For example, one option would be to have something like this:

|Label  | Hero1 | Hero2 | Hero3 | Hero4 | Hero5 | Hero6 | Hero7 | Hero8 | Hero9 | Hero10 |
|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|--------|
| 1     | 1     | 8     | 43    | 65    | 71    | 3     | 7     | 23    | 41    | 45     |


While another option could be instead of having 10 numeric columns for the hero selection, to have 200 boolean columns (100 for team A and 100 for team B) which would have a value of true if that hero was included in that team.

Which would be a better option? Or is there an even better option outside of those two?

Thanks!

• I understand that if a team has 1,8,43,65 and 71 is the same as if the team has 1,43,8,65 and 71. That is, the order of the heroes doesn't matter right? – David Masip Jul 30 at 9:38
• Or are they always ordered? Meaning that the combination of features 1,43,8,65 and 71 is not possible – David Masip Jul 30 at 9:41
• I sort the heroes before creating the set. So basically the order doesn't matter. – Aviad P. Jul 30 at 9:50

If the order of the heroes doesn't matter, I would go for the boolean columns.

The reasoning is the following: We have two possible cases: we always order the player hero ids in a team, or we don't necessarily do that.

• If we order hero ids: let's say a team has players 1,2,3,4,5 and another team has players 2,3,4,5,10. The teams are very similar (we've only changed one player), but the features are completely different. In machine learning we want similar entities to have similar representations in terms of features.
• If we don't order hero ids: then, it's even worse, as the team 1,2,3,4,5 has the completely different features from 5,1,2,3,4, and they are the same team.

If we do the boolean encoding: if we reorder the heroes we have the same representation, and if we change only a player only a feature of the 200 changes.

• Going to try that now and let you know how the model performs against a test set – Aviad P. Jul 30 at 9:53
• This makes more sense to me, but for sure the best thing is to try both and see which does better :) – David Masip Jul 30 at 10:11
• I can tell you that the non-boolean method with the ML.NET model builder and 130k records in the training set and 30 seconds of training on a Core-I7 9th gen with 16GB memory, it performs poorly. – Aviad P. Jul 30 at 10:17
• Does it perform worse than the other solution? I don't know a lot about ml.net, I'd probably use boosting or logistic regression with this data – David Masip Jul 30 at 10:19
• I am currently training the model for the other solution, ML.NET suggested 1800 seconds of training for this, so I'm waiting – Aviad P. Jul 30 at 10:20