How would I pick which 11 Sounders to protect? Can I give an individual player a number that represents his skill? What if I don’t have enough data on that person? Is there a way to calculate the probability of one team to win over another? How can I do these calculations if I’m not a statistician? These were the type of questions I was hoping to answer using the Microsoft TrueSkill algorithm. I took all of the 2010 MLS regular season matches and ran them through Microsoft’s TrueSkill algorithm to see what would happen. I wanted to share my findings because Americans love their stats.
Microsoft invented TrueSkill to help rank players in multiplayer games. Here are the initial concepts you need to know to understand the table below: Skill is an arbitrary number from 0-100 that represents a player’s average skill. It is a number without units, and does not make sense unless it is compared with other player’s skill metric. Variance is a number that represents how confident the skill number is; the smaller the number, the more confident the system is about the skill number. For the numbers that I generated, I initially set each player skill value to 50 and variance value to 16.7. The skill number could go up or down on a win, lose or draw. The variance value will always go down after each match. To boil down both numbers into a single number, there is a very conservative Rating number. That is equal to Skill - (3 * Variance). This is a way to very conservatively measure a player’s skill and also take into account the lack of matches they played.
I’ve made available the 2010 MLS TrueSkill Ratings I generated which are the numbers of each player at the end of the regular season. Below is a table of the players from the Sounders and the Galaxy first leg in the playoffs. For simplicity sake, the numbers are rounded to the nearest whole number. These numbers tell us that LA is good. Very good. I also did some fancy math to find out that the Sounders have a 3% chance of beating LA on their second leg L
|
Sounders Starting XI |
Skill |
Variance |
Rating |
Pos |
Galaxy Starting XI |
Skill |
Variance |
Rating |
|
56 |
15 |
11 |
F |
57 |
15 |
12 |
||
|
48 |
13 |
9 |
F |
57 |
13 |
18 |
||
|
45 |
13 |
6 |
M |
60 |
15 |
15 |
||
|
48 |
14 |
6 |
M |
Juninho |
59 |
13 |
19 |
|
|
50 |
14 |
10 |
M |
62 |
13 |
22 |
||
|
50 |
13 |
9 |
M |
50 |
16 |
3 |
||
|
41 |
13 |
2 |
D |
54 |
16 |
4 |
||
|
48 |
14 |
6 |
D |
65 |
13 |
26 |
||
|
48 |
14 |
7 |
D |
53 |
13 |
13 |
||
|
45 |
13 |
6 |
D |
64 |
15 |
20 |
||
|
44 |
13 |
6 |
GK |
61 |
13 |
22 |
||
|
Sounders Miscellaneous |
Skill |
Variance |
Rating |
|
Galaxy Miscellaneous |
Skill |
Variance |
Rating |
|
Sigi Schmid |
44 |
13 |
6 |
HC |
Bruce Arena |
59 |
13 |
21 |
|
Seattle Home Game |
53 |
15 |
9 |
|
Los Angeles Home Game |
54 |
14 |
11 |
|
Seattle Away Game |
42 |
14 |
-1 |
|
Los Angeles Away Game |
55 |
14 |
12 |
|
Sounders Substitutions |
Skill |
Variance |
Rating |
|
Galaxy Substitutions |
Skill |
Variance |
Rating |
|
46 |
15 |
2 |
|
50 |
15 |
6 |
||
|
49 |
15 |
4 |
|
54 |
14 |
13 |
||
|
40 |
14 |
-2 |
|
47 |
14 |
4 |
||
|
46 |
14 |
3 |
|
46 |
15 |
1 |
||
|
Michael Fucito |
49 |
16 |
2 |
|
53 |
16 |
5 |
|
|
55 |
16 |
7 |
|
Alex Cazumba |
50 |
15 |
4 |
|
|
49 |
16 |
0 |
|
48 |
16 |
-1 |
||
|
46 |
15 |
2 |
|
45 |
14 |
4 |
||
|
50 |
15 |
5 |
|
Leonardo |
48 |
15 |
3 |
|
|
44 |
15 |
0 |
|
51 |
16 |
2 |
||
|
48 |
16 |
2 |
|
50 |
16 |
1 |
||
|
Michael Seamon |
47 |
15 |
1 |
|
|
|
|
|
|
41 |
16 |
-6 |
|
|
|
|
|
|
|
40 |
16 |
-7 |
|
|
|
|
|
|
|
41 |
16 |
-7 |
|
|
|
|
|
I wanted to publish these numbers because this community likes to play with numbers. These numbers seem to suggest that, even though the Sounders were on a hot streak at the second half of the season, perhaps that was versus weaker teams. This article gets super detaily about the implementation from here, and I give you permission to skip.
The TrueSkill algorithm is really complex, but this very long article was able to explain it well: Computing Your Skill by Jeff Moser. That is also where I got my API. In essence, somebody invented the ELO system for rating chess players, but that only works with 1v1 games. Microsoft wanted to expand that idea to multiplayer games and created this TrueSkill algorithm. It takes into account the skill/variance of each individual player on the teams, the percentage of time they played, and the results of the match. It doesn’t take into account how big of a win or loss. It doesn’t take into account player positions, but it assumes that if a team wins, then people that played contributed to the win somehow. It does take into account the number of players, so a team that wins a 11v10 (in a red card scenario) doesn't gain as many skill points. On the flipside, if the team wins in a 10v11, then they would gain even more skill points.
Here are the initial settings I used and why:
I wanted the skill ratings to go from 0-100 because I think the FIFA game uses that rating number scheme. To get that normal distribution, I set the initial skill as 50, and the initial variance as 50/3. Also used in the calculations is the probability of a draw. I averaged out 7 MLS seasons, and 18 EPL seasons and calculated 27% chance of draw happening in a soccer match.
Another number used in the calculations is the number of minutes a person played. These numbers, and match reports in general, are very hard to find. I assumed that each match was 90 minutes long, and used ESPN’s match report to help calculate when players were subbed in and out. That means that if any player got subbed-in in the 90th minute, they didn’t get credit for the match because I calculated that as playing 0 minutes. Finding free data for number crunching is hard.
For fun the head coach and whether it was a home or an away game was treated as another player. I wanted to see if Qwest field was really a fortress, and if we’re really good at away games. According to the table above, it seems LA is better than us even in that home/away aspect.
One thing I don’t like is how high variance is. There simply aren’t enough matches in the regular season. With an initial variance of 17, the system has only a 2.3% confidence of the skill number. With a variance of 13, the confidence number is now 3%. If I could get the variance as low as 8, then that confidence level will be upped to 50%.
There are a few ways decrease the variance numbers. Include more matches (i.e. previous regular seasons, include other tournaments); make the spread smaller (i.e. use 10 max instead of 100 max). There are other figures that can be modified that’s described in the article, but I wouldn’t know which numbers to pick. Wow, did you really read this far?


There are 15 Comments. Load Now.
Shortcuts to mastering the comment thread. Use wisely.
C - Next Comment
X - Mark as Read
R - Reply
Z - Mark Read & Next
Shift + C - Previous
Shift + A - Mark All Read
Comment Settings
Live comment alert: Hide it!
Comments for this post are closed.