bayesvalidrox.surrogate_models.polynomial_chaos.PCE

class bayesvalidrox.surrogate_models.polynomial_chaos.PCE(input_obj, meta_model_type='PCE', pce_reg_method='OLS', bootstrap_method='fast', n_bootstrap_itrs=1, pce_deg=1, pce_q_norm=1.0, dim_red_method='no', verbose=False, input_transform='user')

Bases: MetaModel

PCE MetaModel

This class trains a surrogate model of type Polynomial Chaos Expansion. It accepts an input object (input_obj) containing the specification of the distributions for uncertain parameters and a model object with instructions on how to run the computational model.

Attributes

input_objobj

Input object with the information on the model input parameters.

meta_model_typestr

PCE-surrogate model types. Two surrogate model types are supported: polynomial chaos expansion (PCE), arbitrary PCE (aPCE). Default is PCE.

pce_reg_methodstr

PCE regression method to compute the coefficients. The following regression methods are available: 1. OLS: Ordinary Least Square method 2. BRR: Bayesian Ridge Regression 3. LARS: Least angle regression 4. ARD: Bayesian ARD Regression 5. FastARD: Fast Bayesian ARD Regression 6. VBL: Variational Bayesian Learning 7. EBL: Emperical Bayesian Learning Default is OLS.

bootstrap_methodstr

Bootstraping method. Options are ‘normal’ and ‘fast’. The default is ‘fast’. It means that in each iteration except the first one, only the coefficent are recalculated with the ordinary least square method.

n_bootstrap_itrsint

Number of iterations for the bootstrap sampling. The default is 1.

pce_degint or list of int

Polynomial degree(s). If a list is given, an adaptive algorithm is used to find the best degree with the lowest Leave-One-Out cross-validation (LOO) error (or the highest score=1-LOO). Default is 1.

pce_q_normfloat

Hyperbolic (or q-norm) truncation for multi-indices of multivariate polynomials. Default is 1.0.

dim_red_methodstr

Dimensionality reduction method for the output space. The available method is based on principal component analysis (PCA). The Default is ‘no’. There are two ways to select number of components: use percentage of the explainable variance threshold (between 0 and 100) (Option A) or direct prescription of components’ number (Option B):

>>> MetaModelOpts = MetaModel()
>>> MetaModelOpts.dim_red_method = 'PCA'
>>> MetaModelOpts.var_pca_threshold = 99.999  # Option A
>>> MetaModelOpts.n_pca_components = 12 # Option B
verbosebool

Prints summary of the regression results. Default is False.

__init__(input_obj, meta_model_type='PCE', pce_reg_method='OLS', bootstrap_method='fast', n_bootstrap_itrs=1, pce_deg=1, pce_q_norm=1.0, dim_red_method='no', verbose=False, input_transform='user')

Methods

__init__(input_obj[, meta_model_type, ...])

adaptive_regression(X, y, var_idx[, verbose])

Adaptively fits the PCE model by comparing the scores of different degrees and q-norm.

add_input_space()

Instanciates experimental design object.

build_metamodel()

Builds the parts for the metamodel (polynomes,...) that are needed before fitting.

calculate_moments()

Computes the first two moments using the PCE-based metamodel.

calculate_sobol([y_train])

Provides Sobol' indices as a sensitivity measure to infer the importance of the input parameters.

check_is_gaussian()

Check if the metamodel returns a mean and stdev.

copy_meta_model_opts()

This method is a convinient function to copy the metamodel options.

eval_metamodel(samples[, b_i])

Evaluates metamodel at the requested samples.

fit(X, y[, parallel, verbose, b_i])

Fits the surrogate to the given data (samples X, outputs y).

pca_transformation(target, n_pca_components)

Transforms the targets (outputs) via Principal Component Analysis.

regression(X, y, basis_indices[, sparsity])

Fit regression using the regression method provided.

set_regression_options()

Collects the generic settings for the regression in a dictionary.

univ_basis_vals(samples[, n_max])

Evaluates univariate regressors along input directions.

update_pce_coeffs(X, y[, out_dict])

Updates the PCE coefficents using only the ordinary least square method for the fast version of the bootstrapping.

class AutoVivification

Bases: dict

Implementation of perl’s AutoVivification feature.

Source: https://stackoverflow.com/a/651879/18082457

clear() None.  Remove all items from D.
copy() a shallow copy of D
fromkeys(value=None, /)

Create a new dictionary with keys from iterable and values set to value.

get(key, default=None, /)

Return the value for key if key is in the dictionary, else default.

items() a set-like object providing a view on D's items
keys() a set-like object providing a view on D's keys
pop(k[, d]) v, remove specified key and return the corresponding value.

If the key is not found, return the default if given; otherwise, raise a KeyError.

popitem()

Remove and return a (key, value) pair as a 2-tuple.

Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.

setdefault(key, default=None, /)

Insert key with a value of default if key is not in the dictionary.

Return the value for key if key is in the dictionary, else default.

update([E, ]**F) None.  Update D from dict/iterable E and F.

If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]

values() an object providing a view on D's values
adaptive_regression(X, y, var_idx, verbose=False)

Adaptively fits the PCE model by comparing the scores of different degrees and q-norm.

Parameters

Xarray of shape (n_samples, ndim)

Training set. These samples should be already transformed.

yarray of shape (n_samples,)

Target values, i.e. simulation results for the Experimental design.

var_idxint

Index of the output.

verbosebool, optional

Print out summary. The default is False.

Returns

return_varsDict

Fitted estimator, best degree, best q-norm, loo_cv_score and coefficients.

add_input_space()

Instanciates experimental design object.

Returns

None.

build_metamodel() None

Builds the parts for the metamodel (polynomes,…) that are needed before fitting. This is executed outside of any loops related to e.g. bootstrap or transformations such as pca.

Returns

None

calculate_moments()

Computes the first two moments using the PCE-based metamodel.

Returns

pce_means: dict

The first moment (mean) of the surrogate.

pce_stds: dict

The second moment (standard deviation) of the surrogate.

calculate_sobol(y_train=None)

Provides Sobol’ indices as a sensitivity measure to infer the importance of the input parameters. See Eq. 27 in [1] for more details. For the case with Principal component analysis refer to [2].

[1] Global sensitivity analysis: A flexible and efficient framework with an example from stochastic hydrogeology S. Oladyshkin, F.P. de Barros, W. Nowak https://doi.org/10.1016/j.advwatres.2011.11.001

[2] Nagel, J.B., Rieckermann, J. and Sudret, B., 2020. Principal component analysis and sparse polynomial chaos expansions for global sensitivity analysis and model calibration: Application to urban drainage simulation. Reliability Engineering & System Safety, 195, p.106737.

Parameters

y_train: dict, optional

Trainings outputs. They are needed when used in combination with PCA. The default is None

Returns

soboldict

Sobol’ indices of all available orders.

totalsoboldict

Total Sobol’ indices

check_is_gaussian() bool

Check if the metamodel returns a mean and stdev.

Returns

bool

True if the metamodel can return estimations of uncertainty with each prediction. False otherwise.

copy_meta_model_opts()

This method is a convinient function to copy the metamodel options.

Returns

metamod_copyobject

The copied object.

eval_metamodel(samples, b_i=0)

Evaluates metamodel at the requested samples. One can also generate nsamples.

Parameters

samplesarray of shape (n_samples, ndim), optional

Samples to evaluate metamodel at. The default is None.

Returns

mean_preddict

Mean of the predictions.

std_preddict

Standard deviatioon of the predictions.

fit(X: array, y: dict, parallel=False, verbose=False, b_i=0)

Fits the surrogate to the given data (samples X, outputs y). Note here that the samples X should be the transformed samples provided by the experimental design if the transformation is used there.

Parameters

X2D list or np.array of shape (#samples, #dim)

The parameter value combinations that the model was evaluated at.

ydict of 2D lists or arrays of shape (#samples, #timesteps)

The respective model evaluations.

parallelbool

Set to True to run the training in parallel for various keys. The default is False.

verbosebool

Set to True to obtain more information during runtime. The default is False.

Returns

None.

pca_transformation(target, n_pca_components)

Transforms the targets (outputs) via Principal Component Analysis. The number of features is set by self.n_pca_components. If this is not given, self.var_pca_threshold is used as a threshold.

ToDo: Check the inputs needed for this class, there is an error when PCA is used. ToDo: From the y_transformation() function, a dictionary is being sent instead of an array for target.

Parameters

targetarray of shape (n_samples,)

Target values.

Returns

pcaobj

Fitted sklearnPCA object.

OutputMatrixarray of shape (n_samples,)

Transformed target values.

n_pca_componentsint

Number of selected principal components.

regression(X, y, basis_indices, sparsity=True)

Fit regression using the regression method provided.

Parameters

Xarray of shape (n_samples, n_features)

Training vector, where n_samples is the number of samples and n_features is the number of features.

yarray of shape (n_samples,)

Target values.

basis_indicesarray of shape (n_terms, ndim)

Multi-indices of multivariate polynomials.

reg_methodstr, optional

DESCRIPTION. The default is None.

sparsitybool

Use with sparsity-inducing training methods. The default is True

Returns

return_out_dictDict

Fitted estimator, spareMulti-Index, sparseX and coefficients.

set_regression_options() None

Collects the generic settings for the regression in a dictionary. This includes the regression objects and their arguments.

Returns

None

univ_basis_vals(samples, n_max=None)

Evaluates univariate regressors along input directions.

Parameters

samplesarray of shape (n_samples, ndim)

Samples.

n_maxint, optional

Maximum polynomial degree. The default is None.

Returns

univ_basis: array of shape (n_samples, ndim, n_max+1)

All univariate regressors up to n_max.

update_pce_coeffs(X, y, out_dict=None)

Updates the PCE coefficents using only the ordinary least square method for the fast version of the bootstrapping.

Parameters

Xarray of shape (n_samples, ndim)

Training set. These samples should be already transformed.

yarray of shape (n_samples, n_outs)

The (transformed) model responses.

out_dictdict

The training output dictionary of the first iteration, i.e. the surrogate model for the original experimental design.

Returns

final_out_dictdict

The updated training output dictionary.