Predicted standard deviation values of Gaussian Processes are only within [0, 1]
See original GitHub issueI am using the Gaussian Processes of scikit-learn to estimate behavior of a black box likelihood function f(.)
. I don’t know the range of the values that this function f(.)
produces but I know empirically that it could be as low as -Yxxxx (where Y could be any integer except 0) to 0. Therefore I cannot normalize the output values of f (.)
since I don’t know the range of the values that this black box function can produce (it could be even lower than -99999).
I am using scikit-learn’s Gaussian Process module to fit the underlying black box function and then use the gp.predict
function to get an estimate of the mean and standard deviation values for some unobserved points. However, I noticed that all of the predicted standard deviation values are in the range (0, 1) instead of more meaningful values such as 500, 1000 etc that I can easily interpret given the predicted means. Therefore, I cannot use these SD values when making my plot because the predicted means are in normally ranges such as (-15000, 0) and their corresponding standard deviation values predicted by the GP is in the range (0, 1) which makes the plot look show a curve without any uncertainty around the predicted means. It seems that gp.predict
doesn’t take an input argument that leads to my expected output values for standard deviation and it looks like the Gaussian Process Regression package expects the inputs to also be normalized. So I wonder if there is a way in scikit learn to make gp.predict
output standard deviation values in the right range? Why would the gp.predict
function predict the means within the right, sensible range but not the values for the standard deviation?
Issue Analytics
- State:
- Created 4 years ago
- Reactions:1
- Comments:27 (16 by maintainers)
Yes, looks indeed like a bug. In the following example, the standard deviation of
y_pred
yields identical results independently of the mean ofy
(or they_scale
value), even with mostly default parameters,Someone would need to investigate why this is happening in the code. I also don’t have much availability at the moment…
OK I’ll do a small PR to help illustrate the point and then we can talk about where to go from there.