.. _polynomial_sparse_least_squares:
Sparse least squares polynomial metamodel
-----------------------------------------
| The response of the model under consideration may be globally
approximated by a multivariate polynomial. In this setup, the response
is characterized by a finite number of coefficients which have to be
estimated. This may be achieved by least squares. However, this
method cannot be applied if the number of unknown coefficients is of
similar size to the number of model evaluations, or even possibly
greater. Indeed, the resulting underdetermined least squares problem
would be ill-posed.
| To overcome this difficulty, *sparse least squares* schemes may be
employed (they are also known as *variable selection* techniques in
statistics). These methods are aimed at identifying a small set of
significant coefficients in the model response approximation.
Eventually, a *sparse* polynomial response surface, i.e. a polynomial
which only contains a low number of non-zero coefficients, is obtained
by means of a reduced number of possibly costly model evaluations. In
the sequel, we focus on sparse regression schemes based on
:math:`L_1`-penalization.
| Actually the proposed approaches do not provide only one
approximation, but a *collection* of less and less sparse
approximations. Eventually an optimal approximation may be retained
with regard to a given criterion.
**Context**
Consider the mathematical model :math:`h` of a physical system depending
on :math:`n_X` input parameters
:math:`\underline{x} = (x_{1},\dots,x_{n_X})^{\textsf{T}}`. Note that
these input variables are assumed to be deterministic in this section.
The model response may be approximated by a polynomial as follows:
.. math::
:label: 5-2.1
h(\underline{X}) \, \, \approx \, \, \widehat{h}(\underline{x}) \, \, = \, \, \sum_{j=0}^{P-1} \; a_{j} \; \psi_{j}(\underline{x})
| Let us consider a set of values taken by the input vector (i.e. an
experimental design)
:math:`\underline{\underline{\cX}} = (\underline{x}^{(1)},\dots,\underline{x}^{(N)})^{\textsf{T}}`
as well as the vector
:math:`\underline{\cY} = (h(\underline{x}^{(1)}),\dots,h(\underline{x}^{(N)}))^{\textsf{T}} = (y^{(1)},\dots,y^{(N)})^{\textsf{T}}`
of the corresponding model evaluations. It is assumed that the number
of terms :math:`P` in the polynomial basis is of similar size to
:math:`N`, or even possibly significantly larger than :math:`N`. In
such a situation it is not possible to compute the polynomial
coefficients by ordinary least squares, since the corresponding system
is ill-posed. Methods that may be employed as an alternative are
outlined in the sequel.
| **LASSO**
| The so-called *LASSO* (for *Least absolute shrinkage and selection
operator*) method is based on a :math:`\cL^{1}`-penalized regression
as follows:
.. math::
:label: 5-2.5
\textrm{Minimize} \quad \quad \sum_{i=1}^{N} \; \left( h(\underline{x}^{(i)}) \; - \; \underline{a}^{\textsf{T}} \underline{\psi}(\underline{x}^{(i)}) \right)^{2}
\, + \, C \; \|\underline{a}\|_{1}^{2}
where :math:`\|\underline{a}\|_{1} = \sum_{j=0}^{P-1} |a_{j}|` and
:math:`C` is a non negative constant. A nice feature of LASSO is that
it provides a *sparse* metamodel, i.e. it discards insignificant
variables from the set of predictors. The obtained response surface is
all the sparser since the value of the tuning parameter :math:`C` is
high.
| For a given :math:`C\geq 0`, the solving procedure may be implemented
via quadratic programming. Obtaining the whole set of coefficient
estimates for :math:`C` varying from 0 to a maximum value may be
computationally expensive though since it requires solving the
optimization problem for a fine grid of values of :math:`C`.
| **Forward stagewise regression**
Another procedure, known as *forward stagewise regression*, appears to
be different from LASSO, but turns out to provide similar results. The
procedure first picks the predictor that is most correlated with the
vector of observations. However, the value of the corresponding
coefficient is only increased by a small amount. Then the predictor with
largest correlation with the current residual (possible the same term as
in the previous step) is picked, and so on. Let us introduce the vector
notation:
.. math:: \underline{\psi}_{j} \, \, = \, \, (\psi_{j}(\underline{x}^{(1)}) , \dots, \psi_{j}(\underline{x}^{(N)}) )^{\textsf{T}}
The forward stagewise algorithm is outlined below:
#. Start with :math:`\underline{R} = \cY` and
:math:`a_{0} = \dots = a_{P-1} = 0`.
#. Find the predictor :math:`\underline{\psi}_{j}` that is most
correlated with :math:`\underline{R}`.
#. Update :math:`\hat{a}_{j} = \hat{a}_{j} + \delta_{j}`, where
:math:`\delta_{j} = \varepsilon \cdot \mbox{sign}(\underline{\psi}_{j}^{\textsf{T}} \underline{R} )`.
#. Update
:math:`\underline{R} = \underline{R} - \delta_{j} \underline{\psi}_{j}`
and repeats Steps 2 and 3 until no predictor has any correlation with
:math:`\underline{R}`.
| Note that parameter :math:`\varepsilon` has to be set equal to a small
value in practice, say :math:`\varepsilon=0.01`. This procedure is
known to be more stable than traditional stepwise regression.
| **Least Angle Regression**
*Least Angle Regression* (LAR) may be viewed as a version of forward
stagewise that uses mathematical derivations to speed up the
computations. Indeed, instead of taking many small steps with the basis
term most correlated with current residual :math:`\underline{R}`, the
related coefficient is directly increased up to the point where some
other basis predictor has as much correlation with
:math:`\underline{R}`. Then the new predictor is entered, and the
procedure is continued. The LARS algorithm is detailed below:
#. Initialize the coefficients to :math:`a_{0},\dots,a_{P-1} = 0`. Set
the initial residual equal to the vector of observations :math:`\cY`.
#. Find the vector :math:`\underline{\psi}_{j}` which is most correlated
with the current residual.
#. Move :math:`a_{j}` from 0 toward the least-square coefficient of the
current residual on :math:`\underline{\psi}_{j}`, until some other
predictor :math:`\underline{\psi}_{k}` has as much correlation with
the current residual as does :math:`\underline{\psi}_{j}`.
#. Move jointly :math:`(a_{j} , a_{k})^{\textsf{T}}` in the direction
defined by their joint least-square coefficient of the current
residual on :math:`(\underline{\psi}_{j},\underline{\psi}_{k})`,
until some other predictor :math:`\underline{\psi}_{l}` has as much
correlation with the current residual.
#. Continue this way until :math:`m = \min(P,N-1)` predictors have been
entered.
| Steps 2 and 3 correspond to a “move” of the *active* coefficients
toward their least-square value. It corresponds to an updating of the
form
:math:`\hat{\underline{a}}^{(k+1)} = \hat{\underline{a}}^{(k)} + \gamma^{(k)} \tilde{\underline{w}}^{(k)}`.
Vector :math:`\tilde{\underline{w}}^{(k)}` and coefficient
:math:`\gamma^{(k)}` are referred to as the LARS *descent direction*
and *step*, respectively. Both quantities may be derived
algebraically.
| Note that if :math:`N \geq P`, then the last step of LARS provides the
ordinary least-square solution. It is shown that LARS is noticeably
efficient since it only requires the computational cost of ordinary
least-square regression on :math:`P` predictors for producing a
*collection* of :math:`m` metamodels.
| **LASSO and Forward Stagewise as variants of LARS**
It has been shown that with only one modification, the LARS procedure
provides in one shot the entire paths of LASSO solution coefficients as
the tuning parameter :math:`C` in :eq:`5-2.5` is increased from 0 up
to a maximum value. The modified algorithm is as follows:
- Run the LARS procedure from Steps 1 to 4.
- If a non zero coefficient hits zero, discard it from the current
metamodel and recompute the current joint least-square direction.
- Continue this way until :math:`m = \min(P,N-1)` predictors have been
entered.
| Note that the LAR-based LASSO procedure may take more than :math:`m`
steps since the predictors are allowed to be discarded and introduced
later again into the metamodel. In a similar fashion, a limiting
version of the forward stagewise method when :math:`\varepsilon \to 0`
may be obtained by slightly modifying the original LARS algorithm. In
the literature, one commonly uses the label LARS when referring to all
these LAR-based algorithms (with *S* referring to *Stagewise* and
*LASSO*).
| **Selection of the optimal LARS solution**
The LAR-based approaches (i.e. original LAR, LASSO and forward
stagewise) provide a *collection* of less and less sparse PC
approximations. The accuracy of each PC metamodel may be assessed by
cross validation. Eventually the PC representation associated with the
lowest error estimate is retained.
.. topic:: API:
- See :class:`~openturns.LARS`
- See :class:`~openturns.FunctionalChaosAlgorithm`
.. topic:: Examples:
- See :doc:`/auto_meta_modeling/fields_metamodels/plot_fieldfunction_metamodel`
.. topic:: References:
- B. Efron, T. Hastie, I. Johnstone, and R. Tibshirani, 2004, "Least angle regression", Annals of Statistics 32, 407--499.
- T. Hastie, J. Taylor, R. Tibshirani, and G. Walther, 2007, "Forward stagewise regression and the monotone Lasso", Electronic J. Stat. 1, 1--29.