I want to implement a simple regression model using Gaussian process. I chose GPML toolbox of Rasmussen for simplicity. My question is how we can let the toolbox know that we already have a different known output noise for each data point. So the toolbox will not optimize this hyper-parameter any more. The output noise here is a zero mean Gaussian with known standard deviation. I guess it should relate to the "CovNoise" function in cov folder.


2 Answers 2


The output noise in the GPML toolbox is defined in a very different way. As clearly described here: Likelihood vs. noise kernel hyper-parameter in GPML Toolbox

If you are using the @likGauss function then the output noise will be represented by the "hyp.lik" and not by adding the @covNoise covariance function to your covariance kernel.

So, creating a new covariance function with restricted hyper-parameter will not work in my opinion. You will have to explore how the @likGauss or @infExact function are implemented.

One suggestion after a little bit of research
hyp.lik = "known output noise";

And change the line 24 in your @infExact function;
sn2 = exp(2*hyp.lik);
sn2 = "known output noise";

I hope this will work.



The first thing that came to mind is to create your own kernel. GPML allows for that fairly easily, so just copy the kernel you want to use and change one of he hyper parameters to a constant. Remove the code where it calculates the derivative too for that hyper parameter.

This might not be the only way to do it but if no one else answers and you can't do this yourself leave a comment and I can show you step by step how to do this.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.