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?


  • $\begingroup$ 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? $\endgroup$ Jul 30 '20 at 9:38
  • $\begingroup$ Or are they always ordered? Meaning that the combination of features 1,43,8,65 and 71 is not possible $\endgroup$ Jul 30 '20 at 9:41
  • $\begingroup$ I sort the heroes before creating the set. So basically the order doesn't matter. $\endgroup$
    – Aviad P.
    Jul 30 '20 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.

  • $\begingroup$ Going to try that now and let you know how the model performs against a test set $\endgroup$
    – Aviad P.
    Jul 30 '20 at 9:53
  • $\begingroup$ This makes more sense to me, but for sure the best thing is to try both and see which does better :) $\endgroup$ Jul 30 '20 at 10:11
  • $\begingroup$ 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. $\endgroup$
    – Aviad P.
    Jul 30 '20 at 10:17
  • $\begingroup$ 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 $\endgroup$ Jul 30 '20 at 10:19
  • 1
    $\begingroup$ I am currently training the model for the other solution, ML.NET suggested 1800 seconds of training for this, so I'm waiting $\endgroup$
    – Aviad P.
    Jul 30 '20 at 10:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.