Problem with function handle for Basis function in fitrgp
8 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
Adam Danz
2020 年 1 月 28 日
"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
2020 年 11 月 21 日
>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])
採用された回答
Ridwan Alam
2020 年 1 月 28 日
編集済み: Ridwan Alam
2020 年 1 月 28 日
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 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Gaussian Process Regression についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!