It’s here! March Madness, that time of year where we all try to predict how a bunch of 20-year-olds playing a game filled with randomness will perform. It’s fun! But we sure don’t bet real money on it, cause that would be illegal!
Actually guys, it’s not as much fun for me again this year, because, for the 3rd consecutive season, my team was not invited to keep playing. Someone please fix this. Sigh…
Anyway, this year I decided to build my own quantitative rating and prediction system to help me fill out my bracket. Here’s how my system works:
I define a numeric rating, R(i), for each team i. I also define the probability of team i defeating team j on a neutral court as
P(i->j) = R(i) / (R(i) + R(j)).
I then create a cost function, defined over all games played during the season, which is the sum over
[P(i->j) – GP(i->j)]^2,
where GP(i->j) is an estimated game probability that depends only on the result of each individual game. The GP probability value for each game must be provided as an input to the algorithm.
Of course, coming up with a good value for GP(i->j) is tricky, since we only have one occurrence (one result) for each game. The simplest method for determining GP(i->j) is to assign 100% probability if team i defeated team j, and 0% otherwise. But this ignores home/away, so it’s not ideal.
For my system, I decided to build a model based on the home/away adjusted margin of victory for the game. If team i wins by a large margin, P(i->j) will be close to 100%, but if it’s a close game, the value will be closer to 50%. (The home/away factor adjusts the margin in favor of the road team by 3.5 points)
To compute the final ratings for all teams, I initialize all teams with an equal rating (1.0) and perform an iterative optimization that minimizes the overall cost function with respect to the ratings. I use gradient descent as the optimization procedure.
Below, I list my ratings for the top 100 teams in division 1. (My Marquette Golden Eagles just managed to sneak in at #99, woo!). Note that the value of a team’s rating carries no particular meaning by itself – it’s only useful when compared to the other team ratings.
Rank | Team | Rating |
1 | Kansas | 8.779 |
2 | Michigan St | 8.317 |
3 | North Carolina | 8.174 |
4 | Villanova | 7.717 |
5 | West Virginia | 7.504 |
6 | Virginia | 7.149 |
7 | Louisville | 6.637 |
8 | Oklahoma | 6.602 |
9 | Purdue | 6.035 |
10 | Kentucky | 5.737 |
11 | Duke | 5.483 |
12 | Arizona | 5.342 |
13 | Xavier | 5.200 |
14 | Miami FL | 5.199 |
15 | Oregon | 5.151 |
16 | Indiana | 5.136 |
17 | Iowa St | 4.919 |
18 | Texas A&M | 4.802 |
19 | Baylor | 4.700 |
20 | Maryland | 4.601 |
21 | SMU | 4.514 |
22 | Utah | 4.400 |
23 | Iowa | 4.390 |
24 | California | 4.266 |
25 | Vanderbilt | 4.246 |
26 | Wichita St | 3.983 |
27 | Gonzaga | 3.842 |
28 | Connecticut | 3.827 |
29 | Pittsburgh | 3.552 |
30 | Butler | 3.543 |
31 | Seton Hall | 3.538 |
32 | VA Commonwealth | 3.531 |
33 | Notre Dame | 3.496 |
34 | Texas | 3.487 |
35 | USC | 3.465 |
36 | Cincinnati | 3.444 |
37 | Florida | 3.443 |
38 | St Mary’s CA | 3.221 |
39 | Creighton | 3.182 |
40 | South Carolina | 3.154 |
41 | Kansas St | 3.117 |
42 | Michigan | 3.107 |
43 | Syracuse | 3.057 |
44 | Texas Tech | 2.990 |
45 | Colorado | 2.969 |
46 | Wisconsin | 2.953 |
47 | St Joseph’s PA | 2.882 |
48 | Washington | 2.825 |
49 | Florida St | 2.791 |
50 | Valparaiso | 2.700 |
51 | Dayton | 2.682 |
52 | Yale | 2.671 |
53 | SF Austin | 2.620 |
54 | Oregon St | 2.617 |
55 | Georgia Tech | 2.589 |
56 | Clemson | 2.589 |
57 | Providence | 2.559 |
58 | Northwestern | 2.529 |
59 | Ohio St | 2.515 |
60 | Georgia | 2.467 |
61 | Hawaii | 2.400 |
62 | San Diego St | 2.388 |
63 | BYU | 2.353 |
64 | Arkansas | 2.330 |
65 | UCLA | 2.309 |
66 | Tulsa | 2.297 |
67 | G Washington | 2.284 |
68 | Virginia Tech | 2.209 |
69 | Arizona St | 2.182 |
70 | Georgetown | 2.167 |
71 | Houston | 2.114 |
72 | Ark Little Rock | 2.110 |
73 | Rhode Island | 2.089 |
74 | Nebraska | 2.072 |
75 | UC Irvine | 2.046 |
76 | Mississippi | 2.045 |
77 | Stanford | 2.029 |
78 | LSU | 2.023 |
79 | Princeton | 2.012 |
80 | NC State | 2.006 |
81 | Memphis | 2.003 |
82 | Monmouth NJ | 1.994 |
83 | Evansville | 1.949 |
84 | Alabama | 1.925 |
85 | St Bonaventure | 1.921 |
86 | UNC Wilmington | 1.896 |
87 | Richmond | 1.896 |
88 | S Dakota St | 1.887 |
89 | Temple | 1.884 |
90 | Mississippi St | 1.881 |
91 | Stony Brook | 1.806 |
92 | Oklahoma St | 1.794 |
93 | Akron | 1.787 |
94 | Tennessee | 1.764 |
95 | Davidson | 1.751 |
96 | William & Mary | 1.749 |
97 | Santa Barbara | 1.732 |
98 | James Madison | 1.731 |
99 | Marquette | 1.727 |
100 | Iona | 1.674 |