noaa-ocs-modeling / EnsemblePerturbation

perturbation of coupled model input over a space of input variables
https://ensembleperturbation.readthedocs.io
Creative Commons Zero v1.0 Universal
7 stars 3 forks source link

build an ensemble with a number of data points (ensemble members) greater than or equal to the number of polynomials #72

Closed ghost closed 2 years ago

ghost commented 2 years ago

for an L2 (smoothness) constraint, build an ensemble with D members, where

D ~= 10 * (((N + P)! / (N! * P!)) - 1)

or, in Python:

import math

def num_polynomials(dimensions: int, order: int) -> int:
    return int(math.factorial(dimensions + order) / (math.factorial(dimensions) * math.factorial(order))) - 1

members = 10 * num_polynomials(4, 3)
ghost commented 2 years ago

number of ensemble members recommended by this rule of thumb under an L2 regularization scheme:

variables / order 2 3 4 5 6
2 50 90 140 200 270
3 90 190 340 550 830
4 140 340 690 1250 2090
5 200 550 1250 2510 4610
6 270 830 2090 4610 9230
WPringle commented 2 years ago

Cool, do you have numbers for L1 regularization scheme?

ghost commented 2 years ago

Cool, do you have numbers for L1 regularization scheme?

I'm not sure about the rest of L1, but Khachik said that Lasso would be able to handle factors of 2 or 3, so I guess for Lasso you would multiply these ensemble sizes by 0.25

WPringle commented 2 years ago

I see so 2,3 (((N + P)! / (N! P!)) - 1) ?

ghost commented 2 years ago

yes exactly

WPringle commented 2 years ago

Then the numbers seem pretty good