MATLAB Answers

Calculating the matrix K at test inputs after training a Gaussian Process with fitrgp

14 views (last 30 days)
Umberto on 29 Oct 2015
Edited: Sterling Baird on 25 Jul 2021
If I trained a GP using training data D = {X, y} with fitrgp and I obtained my gprMdl:
gprMdl = fitrgp(data.X, data.Y, 'KernelFunction', 'squaredexponential', ...
'BasisFunction', 'none', 'verbose', 1, 'FitMethod', 'exact')
[ystar, ysd, yint] = predict(gprMdl, Xstar)
How can I obtain the matrix K(Xstar, Xstar)? I can not find the subfunction of the RegressionGP that calculates the matrices K.

Accepted Answer

Gautam Pendse
Gautam Pendse on 9 Nov 2015
Hi Umberto,
There is an undocumented way of calculating what you want. Here is an example:
N = 100;
x = linspace(-10,10,N)';
y = 1 + x*5e-2 + sin(x)./x + 0.2*randn(N,1);
gpr = fitrgp(x,y,'FitMethod','Exact','PredictMethod','Exact');
kfcn = gpr.Impl.Kernel.makeKernelAsFunctionOfXNXM(gpr.Impl.ThetaHat)
K = kfcn(x(1:5,:),x(1:7,:))
K(i,j) kernel function evaluated for x(i,:) and x(j,:). For example,
I would be interested in knowing why you want to compute K.
Hope that helps,
Sterling Baird
Sterling Baird on 25 Jul 2021
I think I'm realizing that what I'm asking for is just the predictExactWithCov function (see Sampling from Posterior Distribution of GPR Model from fitrgp()). I think I misunderstood the "Exact" part of this function. I take it "exact" refers to not using sparse methods rather than assuming no noise in the input data (originally I was under the impression that it was the latter).

Sign in to comment.

More Answers (1)

Basim Khalid
Basim Khalid on 1 Nov 2020
I have images of 15 plant leaf diseases i have extructed features using GLCM , how can i make a classifier using Gussian , can anyone help lease

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!