bayesvalidrox.surrogate_models.pce_gpr.PCEGPR¶
- class bayesvalidrox.surrogate_models.pce_gpr.PCEGPR(input_obj, meta_model_type='PCE_GPR', pce_model_type='PCE', pce_reg_method='OLS', bootstrap_method='fast', n_bootstrap_itrs=1, pce_deg=1, pce_q_norm=1.0, kernel_type='RBF', auto_select=True, normalize_x_method='norm', dim_red_method='no', verbose=False, n_mc=1000, input_transform='user')¶
Bases:
MetaModel
PCE+GPE MetaModel
This class trains a surrogate model which is a combination of the types Polynomial Chaos Expansion and Gaussian Process Regression. The PCE acts as a de-trender and the GPR is trained on the residuals between the PCE and the training data. It accepts an input object (input_obj) containing the specification of the distributions for uncertain parametersand 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
Surrogate model types (main surrogate). Two surrogate model types are supported: polynomial chaos expansion (PCE_GPE), arbitrary PCE (aPCE-GPE). Default is PCE_GPE.
- pce_model_type: str
PCE-surrogate model types (main surrogate). 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.
- kernel_type: str
Type of kernel to use and train for. The following Scikit-Learn kernels are available: 1. RBF: Squared exponential kernel 2. Matern: Matern kernel 3. RQ: rational quadratic kernel Default is ‘RBF’ kernel.
- auto_select: bool
Flag to loop through different available Kernels and select the best one based on BME criteria for GPRs. Default is False.
- normalize_x_method: str or None
Type of transformation to apply to the inputs, for the GP training. If None, no transformation is done. The followint options are available: 1. ‘norm’: normalizes inputs U[0,1] 2. ‘standard’: standarizes inputs N[0, 1] 3. ‘none’: no transformation is done 4. None: No transformation is done.
- 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_GPR', pce_model_type='PCE', pce_reg_method='OLS', bootstrap_method='fast', n_bootstrap_itrs=1, pce_deg=1, pce_q_norm=1.0, kernel_type='RBF', auto_select=True, normalize_x_method='norm', dim_red_method='no', verbose=False, n_mc=1000, input_transform='user')¶
Methods
__init__
(input_obj[, meta_model_type, ...])Instanciates experimental design object.
Builds the parts for the metamodel that are needed before fitting.
Computes the first two moments of the metamodel.
Check if the metamodel returns a mean and stdev.
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.
- 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 ¶
- build_metamodel() None ¶
Builds the parts for the metamodel that are needed before fitting. Builds the individual PCE and GPR instances This is executed outside any loops related to e.g. bootstrap or transformations such as pca.
Returns¶
None
- calculate_moments()¶
Computes the first two moments of the metamodel.
Returns¶
- means: dict
The first moment (mean) of the surrogate.
- stds: dict
The second moment (standard deviation) of the surrogate.
- check_is_gaussian() bool ¶
Check if the metamodel returns a mean and stdev. Always true for PCE+GPE
Returns¶
- bool
DESCRIPTION.
- 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. Calls the eval_metamodel() function for PCE and GPRSkl classes
Parameters¶
- samples: array of shape (n_samples, ndim),
Samples to evaluate metamodel at.
- b_i: int
Bootstrapping id
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¶
- X: 2D list or np.array of shape (#samples, #dim)
The parameter value combinations that the model was evaluated at.
- y: dict of 2D lists or arrays of shape (#samples, #outputs)
The respective model evaluations.
- parallel: bool
Set to True to run the training in parallel for various keys. The default is False.
- verbose: bool
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.