Max Map Adaptation

  1. Get multivariate output
  2. Select two output dimensions
  3. Apply marginal gaussian cdf to get samples in unit square
  4. divide into n bins along each axis
  5. Get n^2 "observed" histograms (i.e. counts in each cell)
  6. Get n marginal histograms
  7. Calculate "expected" histogram from product of marginals (i.e. expected counts in each cell)
  8. calculate G-test statistic from difference of "expected" and "observed"

What Midx's to add?

  • If marginal is not gaussian, add degree to diagonal component
  • If joint is not independent, add elements of the dimensional reduced margin to lower component
    • The reduced margin in dimension of is going to be elements of the set where is the current accepted mset.
    • if the output of and have non-diagonal correlation, then pick elements of .
    • Which elements to pick for indices ? Order them heuristically via the following evaluation of :
      • If for some tolerance (default 1) then just return
      • Let and similar for . If then return .
      • Finally, return to break any ties
  • Assuming dimensions, we now have up to added multiindices for the diagonal, plus up to indices for each pair of outputs (which is ). For and , this is just under 8000 indices, so we probably don't want to take all of them.
  • From these, we choose multi-indices to actually add. We do a similar choice of sorting heuristic as above. Here is the new definition of
    • If both and are empty except for their final element (i.e., they correspond to "diagonal" multi-indices), return . If they have identical diagonal elements, check if is shorter than (recall that they can be multi-indices corresponding to different map outputs)
    • If is diagonal and is not, return for fixed (default 2), i.e., allow the diagonal indices to grow to be a bit larger than cross-term indices.
    • Same concept in the opposite scenario
    • If for some tolerance (default 1) then just return
    • If return
    • Return whichever has the earliest nonzero index (e.g., ), which encodes the idea that the "most complicated" inputs are going to be the first ones.

New Max-Ricardo hybrid map adaptation

I want a more principled way of ordering these things, and I want to take advantage of Optimizing Linear Maps (new draft) . Something of the following structure shakes out. Here, I use the semicolon to denote "Vertical stacking" of matrices/vectors.
Input: Starting multi-index set , samples , number of coefficients to add per iteration .
0) Get input of use basis from which are, respectively, evaluations of the off-diagonal functions, evaluations of the on-diagonal functions, and the evaluations of the diagonal derivatives. Get from these matrices and optimize for .

  1. For
  2. Get Candidate multi-indices , to add via Max map adaptation
  3. Compute which are evaluations of the respective functions for the basis functions corresponding to the basis functions for , .
  4. Compute and
  5. Get indices for top values of combined vector , and split these indices into (note that one or both of these may be empty).
  6. Create , , and where for a given matrix is the columns of corresponding to the elements of the index set .
  7. Calculate and create optimal .