Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Extra Discussion (http://www.chiefdelphi.com/forums/forumdisplay.php?f=68)
-   -   paper: Weeks 1-2 Elo Analysis (http://www.chiefdelphi.com/forums/showthread.php?t=127825)

Ether 14-10-2014 11:13

Re: paper: Weeks 1-2 Elo Analysis
 
Quote:

Originally Posted by Michael Hill (Post 1404197)
The differences are how we're calling tied matches.

77.75% correct (discarding ties)

77.11% correct (counting ties as incorrect)

77.93% correct (counting ties as correct)



Michael Hill 14-10-2014 13:45

Re: paper: Weeks 1-2 Elo Analysis
 
Quote:

Originally Posted by Ether (Post 1404227)
77.75% correct (discarding ties)

77.11% correct (counting ties as incorrect)

77.93% correct (counting ties as correct)



It looks like we're in agreement when counting ties as incorrect.

Ether 14-10-2014 18:34

Re: paper: Weeks 1-2 Elo Analysis
 
Quote:

Originally Posted by Michael Hill (Post 1404199)
...the L1 stuff [is] a new concept to me...

You have an overdetermined linear system

Ax ≈ b,

where A is the (binary) design matrix of alliances, b is a column vector of alliance scores, and x is what you are trying to find: a column vector of team "OPR" scores.

There is no exact solution for x, since the system is overdetermined. So the idea is to find the "best" solution (in some sense of the word "best").

Notice that the left-hand side (Ax) is a column vector of alliance scores computed from whatever solution x you come up with.

The residuals are b-Ax: a column vector of the differences between the actual alliance scores (b) and the computed alliance scores (Ax).

Looking at it that way, it becomes clear that what you are trying to do is find a solution x which minimizes the residuals (in some sense of the word "minimize").

The most common way to do this is to find x which minimizes the L2 norm of the residuals. The L2 norm of a vector is the square root of the sum of the squares of the vector's elements. The L2 norm solution is also known as the "least squares" solution (for obvious reasons).

It turns out that finding the x which minimizes the L2 norm of b-Ax is computationally straightforward.

In Octave, it's one line of code: x = A\b. The backslash in this context is known as "left division". The syntax is simple, but under the hood there's a lot going on.

For the Ax ≈ b overdetermined linear systems were are dealing with in FRC to compute OPR scores, it turns out that there is a computationally faster way to compute the least squares solution for x. Here's how:
Multiply both sides of Ax ≈ b by the transpose of A to get A'Ax = A'b, or Nx =d where N=A'A and d = A'b.

Nx =d is known as the system of "Normal Equations", and its solution x = N\d gives the same answer as A\b (within rounding error) and is faster to compute.
But "least squares" (min L2 norm of residuals) is not the only possible "best fit" solution to the overdetermined system Ax ≈ b.

For example, there's the "Least Absolute Deviations (LAD)" solution (min L1 norm of residuals). The L1 norm of a vector is the sum of the absolute values of the vector's elements.

Finding an LAD solution for Ax ≈ b is more computationally intensive than least squares.

Perhaps the best way to proceed is to convert the problem to a "Linear Program" (LP) and then use one of the many LP solvers.

For example, here's the AMPL code I used to compute the LAD OPR for your data:

Code:

param m;
param n;

set I := {1..m};
set J := {1..n};

param A{I,J};
param b{I};

var x{J};
var t{I} >= 0;

minimize sum_dev:
        sum {i in I} t[i];

subject to lower_bound {i in I}:
        -t[i] <= b[i] - sum {j in J} A[i,j]*x[j];

subject to upper_bound {i in I}:
                b[i] - sum {j in J} A[i,j]*x[j] <= t[i];




All times are GMT -5. The time now is 19:02.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi