What beginner-friendly machine learning method should I use to make teams for my pickup ultimate frisbee club fairly balanced?

A bunch of friends and I play ultimate every week. Recently I wrote a program to choose our teams for us, as well as keep track of certain data (like which players were on which team, which team won, what was the score, how long the game was, etc). I wanted to use a machine learning technique to make the teams for us in order to optimize how fairly balanced the teams are (possibly measured by how many total points are scored in a game or how long a game lasts).

I am currently taking a machine learning MOOC and being introduced to very basic machine learning techniques (linear regression with gradient decent or normal equations, basic classification stuff, stuff like that). Although I hope I will come across a technique that fits my needs by the end of this course, I wanted to ask here to see if I can get a head start.

I've tried searching around everywhere, but couldn't find anything relevant. So my question is, is there an obvious technique I should look into for such a problem? If it's something too advanced for a beginner, that's fine too, but I'd like to get started learning/practicing it asap instead of waiting for my course to hopefully hit upon it.

Thank you!

EDIT: to clarify further, I would prefer something that looks at relationships between individual players like "when Steph plays with Bill she is more likely to win" or "Steph plays worse when she is on a team with players who have a high win percentage". I'd also prefer to be able to code it in python, but am willing to learn any other language

1 Answer

What you have on your hands is an attribution problem (and that’s a good keyword to help in your Googling). Two common approaches are computing Shapley values or a Markov chain.

In your case, I think Shapley values would be a good approach. To over-simplify, this approach attempts to first determine the total “surplus” of value created by different combinations of players, and then estimate how much was due to each player in the combination. Also under consideration are constrained combinatorial effects: e.g. having two great goalies doesn’t add much over one great goalie since they can’t play at the same time.

Depending on how hands-on you want to be you could implement yourself or find existing libraries by Googling e.g. “Shapley values python”.