Polynomial chaos expansion

The polynomial chaos expansion (PCE) discipline expresses the model output as a weighted sum of polynomial functions which are orthonormal in the stochastic input space spanned by the random input variables:

\[Y = w_0 + w_1\phi_1(X) + w_2\phi_2(X) + ... + w_K\phi_K(X)\]

where \(\phi_i(x)=\phi_{\tau_1(i),1}(x_1)\times\ldots\times \phi_{\tau_d(i),d}(x_d)\).

Enumerating strategy

The choice of the function \(\tau=(\tau_1,\ldots,\tau_d)\) is an enumerating strategy and \(\tau_j(i)\) is the polynomial degree of \(\psi_{\tau_j(i),j}\).


PCE are stochastic models whose inputs are random variables and are often used to deal with uncertainty quantification problems.

If \(X_j\) is a Gaussian random variable, \((\psi_{ij})_{i\geq 0}\) is the Legendre basis. If \(X_j\) is an uniform random variable, \((\psi_{ij})_{i\geq 0}\) is the Hermite basis.

When the problem is deterministic, we can still use PCE under the assumptions that the random variables are independent uniform random variables. Then, the orthonormal basis function is the Hermite basis.


The degree \(P\) of a PCE is defined in such a way that \(\text{degree}(\psi_i)=\sum_{j=1}^d\tau_j(i)\leq P\).


The coefficients \((w_1, w_2, ..., w_K)\) and the intercept \(w_0\) are estimated either by least square regression, sparse least square regression or quadrature.


The PCE model relies on the FunctionalChaosAlgorithm class of the openturns library.

class gemseo.mlearning.regression.pce.PCERegression(data, probability_space, discipline=None, transformer=None, input_names=None, output_names=None, strategy='LS', degree=2, n_quad=None, stieltjes=True, sparse_param=None)[source]

Polynomial chaos expansion.


  • data (Dataset) – learning dataset

  • probability_space (ParameterSpace) – probability space.

  • discipline (MDODiscipline) – discipline to evaluate if strategy=’Quad’ and data is empty.

  • transformer (dict(str)) – transformation strategy for data groups. If None, do not transform data. Default: None.

  • input_names (list(str)) – names of the input variables.

  • output_names (list(str)) – names of the output variables.

  • strategy (str) – strategy to compute the parameters of the PCE, either ‘LS’, ‘Quad’ or ‘SparseLS’. Default: ‘LS’.

  • degree (int) – polynomial degree of the PCE

  • n_quad (int) – number of quadrature points

  • stieltjes (bool) – stieltjes

  • sparse_param

    Parameters for the Sparse Cleaning Truncation Strategy and/or hyperbolic truncation of the initial basis:

    • max_considered_terms (int) – Maximum Considered Terms,

    • most_significant (int), Most Significant number to retain,

    • significance_factor (float), Significance Factor,

    • hyper_factor (float), factor for hyperbolic truncation strategy.