idGaussianProcess
Gaussian process regression mapping function for nonlinear ARX and Hammerstein-Wiener models (requires Statistics and Machine Learning Toolbox)
Since R2021b
Description
An idGaussianProcess
object implements a Gaussian process (GP)
regression model, and is a nonlinear mapping function for estimating nonlinear ARX and
Hammerstein-Wiener models. This mapping object, which is also referred to as a
nonlinearity, incorporates RegressionGP
(Statistics and Machine Learning Toolbox) objects that the mapping function creates using Statistics and Machine Learning Toolbox™. The mapping object contains three components: an offset, a nonlinear component,
which, in this case, is the GP kernel, and a linear component that uses a combination of
linear weights.
The input to the mapping object can be an internal signal of a nonlinear black-box model, such as one of the following signals:
Vector of the regressors of a nonlinear ARX model
Output of the linear block of a Hammerstein-Wiener model
Mathematically, idGaussianProcess
is a function that maps
m inputs X(t) =
[x(t1),x2(t),…,xm(t)]T
to a scalar output y(t) using the following relationship:
Here,
X(t) is an m-by-1 vector of inputs, or regressors.
y0 is the output offset, a scalar.
P is an m-by-p projection matrix, where m is the number of regressors and p is the number of linear weights. m must be greater than or equal to p.
L is a p-by-1 vector of weights.
G(X,θ) is the regressive Gaussian process that constitutes the kernel of the
idGaussianProcess
object. G has a mean of zero and a covariance that the user specifies by choosing a kernel, and can be expressed generally as
A zero-mean Gaussian process G predicts the output Ytest for a given input Xtest using the following relationship:
Here:
K(Xtest,Xtrain) is the covariance kernel function.
Xtrain is a matrix representing the set of training inputs.
Xtest is a matrix representing the set of test inputs.
Ytrain is the vector of outputs from the training set.
σn is the standard deviation of the additive measurement noise.
Gaussian process modeling is especially useful when you have only limited measurement
data. For more information about creating GP regression models, see fitrgp
(Statistics and Machine Learning Toolbox).
Use idGaussianProcess
as the value of the OutputFcn
property of an idnlarx
model or the
OutputNonlinearity
property (but not the
InputNonlinearity
property) of an idnlhw
object. For example, specify idGaussianProcess
when you
estimate an idnlarx
model with the following
command.
sys = nlarx(data,regressors,idGaussianProcess)
nlarx
estimates the model sys
, it essentially estimates the
parameters of the idGaussianProcess
function.
You can use a similar approach when you specify input or output linearities using the
nlhw
command. For example, specify idGaussianProcess
as an
output nonlinearity with the following command.
sys = nlhw(data,orders,idSaturation,idGaussianProcess)
You can configure the idGaussianProcess
function to disable components
and fix parameters. To omit the linear component, set LinearFcn.Use
to
false
. To omit the offset, set Offset.Use
to
false
. To specify known values for the linear function and the offset,
set their Value
attributes directly and set the corresponding
Free
attributes to False
. To modify the estimation
options, set the option property in EstimationOptions
. For example, to
change the fit method to 'exact'
, use
G.EstimationOptions.FitMethod = 'exact'
. Use evaluate
to compute the output of the function for a given vector of
inputs.
Creation
Syntax
Description
creates an
G
= idGaussianProcessidGaussianProcess
object G
with the kernel
function 'SquaredExponential'
and default kernel parameters. The number
of inputs is determined during model estimation and the number of outputs is 1.
specifies a specific kernel.G
= idGaussianProcess(kernelFunction
)
initializes the parameters of the specified kernel to the values in
G
= idGaussianProcess(kernelFunction
,kernelParameters
)kernelParameters
.
specifies whether the function uses a linear function as a subcomponent.G
= idGaussianProcess(kernelFunction
,kernelParameters
,UseLinearFcn
)
specifies whether the function uses an offset term
y0 parameter.G
= idGaussianProcess(kernelFunction
,kernelParameters
,UseLinearFcn
,UseOffset
)