Problem with function handle for Basis function in fitrgp
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I like to use a custom Basis function for fitrgp.
beta0 = [1.5,2.0];
hfcn = @(X) (beta0(1).*(X).^beta0(2));
This should be a powerMean-function.
If I call:
gprMdl1 = fitrgp(x,y,'BasisFunction',hfcn,'Beta',beta0)
with dummy-data from:
load(fullfile(matlabroot,'examples','stats','gprdata2.mat'))
I get
gprMdl1.Beta = 0.0019
Why is gprMdl1.Beta not 1x2 like beta0? Is it posible to optimize custom parameters in Basis function (like beta0)?
2 commentaires
Adam Danz
le 28 Jan 2020
"Why is gprMdl1.Beta not 1x2 like beta0?"
That basis function will return as many values as provided in the input X. X is multiplied by 1 value (beta0(1)) and added to one value (beta0(2)). So if X is only 1 value, the output should only be one value. If x is 1x5, the output will be 1x5; if x is 3x4, so is the output.
Adam Danz
le 21 Nov 2020
>gprMdl1.Beta is not 3x1, there is still only one beta. Could you help me check this?
Check this out.....
% Your function
beta0 = [1;2;3];
hfcn = @(X) ([ones(size(X,1),1),X,X.^2]*beta0);
% Test some inputs-outputs
hfcn(1)
hfcn([1;2;3])
Réponse acceptée
Ridwan Alam
le 28 Jan 2020
Modifié(e) : Ridwan Alam
le 28 Jan 2020
load(fullfile(matlabroot,'examples','stats','gprdata2.mat'))
In this case, your x is n x 1;
hfcn returns H, which has size n x 1; i.e. p = 1;
So if you want to provide 'Beta' to fitrgp(), it should be of size p x 1, i.e 1 x 1.
fitrgp() is only using your beta0(1) as Adam mentioned in the comment.
4 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Gaussian Process Regression dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!