이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
fitrgp
가우스 과정 회귀(GPR) 모델 피팅
구문
설명
은 gprMdl
= fitrgp(Tbl
,ResponseVarName
)Tbl
에 포함된 표본 데이터를 사용하여 훈련된 가우스 과정 회귀(GPR) 모델을 반환합니다. 여기서 ResponseVarName
은 Tbl
에 포함된 응답 변수의 이름입니다.
는 하나 이상의 gprMdl
= fitrgp(___,Name,Value
)Name,Value
쌍의 인수로 지정된 추가 옵션을 사용하여 위에 열거된 구문의 모든 입력 인수에 대한 GPR 모델을 반환합니다.
예를 들어, 피팅 방법, 예측 방법, 공분산 함수 또는 활성 세트 선택 방법을 지정할 수 있습니다. 교차 검증된 모델을 훈련시킬 수도 있습니다.
gprMdl
은 RegressionGP
객체입니다. 이 객체의 객체 함수와 속성은 RegressionGP
를 참조하십시오.
교차 검증된 모델을 훈련시키는 경우 gprMdl
은 RegressionPartitionedGP
객체입니다. 교차 검증된 객체에 대한 추가 분석을 수행하려면 RegressionPartitionedGP
객체의 객체 함수를 사용하십시오.
예제
테이블의 데이터를 사용하여 GPR 모델 훈련시키기
이 예제에서는 UCI Machine Learning Repository [3]의 전복 데이터 [1], [2]를 사용합니다. 데이터를 다운로드한 후 abalone.data
라는 이름으로 현재 폴더에 저장합니다.
데이터를 테이블에 저장합니다. 처음 7개 행을 표시합니다.
tbl = readtable('abalone.data','Filetype','text',... 'ReadVariableNames',false); tbl.Properties.VariableNames = {'Sex','Length','Diameter','Height',... 'WWeight','SWeight','VWeight','ShWeight','NoShellRings'}; tbl(1:7,:)
ans = Sex Length Diameter Height WWeight SWeight VWeight ShWeight NoShellRings ___ ______ ________ ______ _______ _______ _______ ________ ____________ 'M' 0.455 0.365 0.095 0.514 0.2245 0.101 0.15 15 'M' 0.35 0.265 0.09 0.2255 0.0995 0.0485 0.07 7 'F' 0.53 0.42 0.135 0.677 0.2565 0.1415 0.21 9 'M' 0.44 0.365 0.125 0.516 0.2155 0.114 0.155 10 'I' 0.33 0.255 0.08 0.205 0.0895 0.0395 0.055 7 'I' 0.425 0.3 0.095 0.3515 0.141 0.0775 0.12 8 'F' 0.53 0.415 0.15 0.7775 0.237 0.1415 0.33 20
데이터셋에는 4177개의 관측값이 있습니다. 8개 물리적 측정값에서 전복의 나이를 예측하는 것이 목적입니다. 마지막 변수인 껍데기의 나이테 수가 전복의 나이입니다. 첫 번째 예측 변수는 범주형 변수입니다. 테이블의 마지막 변수는 응답 변수입니다.
모수 추정에 부분 회귀 변수 방법을 사용하고 예측에 완전히 독립적인 조건부 방법을 사용하여 GPR 모델을 피팅합니다. 예측 변수를 표준화합니다.
gprMdl = fitrgp(tbl,'NoShellRings','KernelFunction','ardsquaredexponential',... 'FitMethod','sr','PredictMethod','fic','Standardize',1)
grMdl = RegressionGP PredictorNames: {1x8 cell} ResponseName: 'Var9' ResponseTransform: 'none' NumObservations: 4177 KernelFunction: 'ARDSquaredExponential' KernelInformation: [1x1 struct] BasisFunction: 'Constant' Beta: 10.9148 Sigma: 2.0243 PredictorLocation: [10x1 double] PredictorScale: [10x1 double] Alpha: [1000x1 double] ActiveSetVectors: [1000x10 double] PredictMethod: 'FIC' ActiveSetSize: 1000 FitMethod: 'SR' ActiveSetMethod: 'Random' IsActiveSetVector: [4177x1 logical] LogLikelihood: -9.0013e+03 ActiveSetHistory: [1x1 struct] BCDInformation: []
훈련된 모델을 사용하여 응답 변수를 예측합니다.
ypred = resubPredict(gprMdl);
실제 응답과 예측된 응답을 플로팅합니다.
figure(); plot(tbl.NoShellRings,'r.'); hold on plot(ypred,'b'); xlabel('x'); ylabel('y'); legend({'data','predictions'},'Location','Best'); axis([0 4300 0 30]); hold off;
훈련된 모델에 대한 훈련 데이터의 회귀 손실(재대입 손실)을 계산합니다.
L = resubLoss(gprMdl)
L = 4.0064
GPR 모델을 훈련시키고 예측값 플로팅하기
표본 데이터를 생성합니다.
rng(0,'twister'); % For reproducibility n = 1000; x = linspace(-10,10,n)'; y = 1 + x*5e-2 + sin(x)./x + 0.2*randn(n,1);
모수를 추정하기 위해 선형 기저 함수와 정확한 피팅 방법을 사용하여 GPR 모델을 피팅합니다. 또한 정확한 예측 방법도 사용합니다.
gprMdl = fitrgp(x,y,'Basis','linear',... 'FitMethod','exact','PredictMethod','exact');
훈련된 모델을 사용하여 x
(재대입 예측값)의 행에 대응되는 응답 변수를 예측합니다.
ypred = resubPredict(gprMdl);
응답 변수의 실제 값을 예측 값과 함께 플로팅합니다.
plot(x,y,'b.'); hold on; plot(x,ypred,'r','LineWidth',1.5); xlabel('x'); ylabel('y'); legend('Data','GPR predictions'); hold off
초기 커널 모수 값을 지정하는 경우 미치는 영향
표본 데이터를 불러옵니다.
load('gprdata2.mat')
이 데이터에는 하나의 예측 변수와 연속형 응답 변수가 있습니다. 이는 시뮬레이션된 데이터입니다.
디폴트 커널 모수를 갖는 제곱 지수 커널 함수를 사용하여 GPR 모델을 피팅합니다.
gprMdl1 = fitrgp(x,y,'KernelFunction','squaredexponential');
이제, 두 번째 모델을 피팅합니다. 여기서는 커널 모수의 초기값을 지정합니다.
sigma0 = 0.2; kparams0 = [3.5, 6.2]; gprMdl2 = fitrgp(x,y,'KernelFunction','squaredexponential',... 'KernelParameters',kparams0,'Sigma',sigma0);
두 모델 모두에서 재대입 예측값을 계산합니다.
ypred1 = resubPredict(gprMdl1); ypred2 = resubPredict(gprMdl2);
두 모델 모두에서 계산한 응답 변수 예측값과 훈련 데이터의 응답 변수 값을 플로팅합니다.
figure(); plot(x,y,'r.'); hold on plot(x,ypred1,'b'); plot(x,ypred2,'g'); xlabel('x'); ylabel('y'); legend({'data','default kernel parameters',... 'kparams0 = [3.5,6.2], sigma0 = 0.2'},... 'Location','Best'); title('Impact of initial kernel parameter values'); hold off
fitrgp
가 GPR 모수를 추정하기 위해 최대화하는 주변 로그 가능도에 여러 국소해가 있으며, 수렴되는 해는 초기점에 따라 달라집니다. 각 국소해는 특정한 데이터 해석 방식에 대응합니다. 이 예제에서 디폴트 초기 커널 모수를 갖는 해는 잡음이 높은 저주파 신호에 해당하는 반면, 사용자 지정 초기 커널 모수를 갖는 두 번째 해는 잡음이 낮은 고주파 신호에 해당합니다.
예측 변수에 개별적인 길이 스케일 사용하기
표본 데이터를 불러옵니다.
load('gprdata.mat')
6개의 연속형 예측 변수가 있습니다. 훈련 데이터 세트에는 500개의 관측값이 있고 테스트 데이터 세트에는 100개의 관측값이 있습니다. 이는 시뮬레이션된 데이터입니다.
각 예측 변수마다 개별적인 길이 스케일을 갖는 제곱 지수 커널 함수를 사용하여 GPR 모델을 피팅합니다. 이 공분산 함수는 다음과 같이 정의됩니다.
여기서 은 예측 변수 ( = 1, 2, ..., )에 대한 길이 스케일을 나타내고 는 신호 표준편차입니다. 비제약 모수화 는 다음과 같습니다.
커널 함수의 길이 스케일을 10으로 초기화하고 신호 표준편차와 잡음 표준편차를 응답 변수의 표준편차로 초기화합니다.
sigma0 = std(ytrain); sigmaF0 = sigma0; d = size(Xtrain,2); sigmaM0 = 10*ones(d,1);
초기 커널 모수 값을 사용하여 GPR 모델을 피팅합니다. 훈련 데이터에서 예측 변수를 표준화합니다. 정확한 피팅 방법과 예측 방법을 사용합니다.
gprMdl = fitrgp(Xtrain,ytrain,'Basis','constant','FitMethod','exact',... 'PredictMethod','exact','KernelFunction','ardsquaredexponential',... 'KernelParameters',[sigmaM0;sigmaF0],'Sigma',sigma0,'Standardize',1);
검정 데이터에 대해 회귀 손실을 계산합니다.
L = loss(gprMdl,Xtest,ytest)
L = 0.6919
커널 정보에 액세스합니다.
gprMdl.KernelInformation
ans = struct with fields:
Name: 'ARDSquaredExponential'
KernelParameters: [7x1 double]
KernelParameterNames: {7x1 cell}
커널 모수 이름을 표시합니다.
gprMdl.KernelInformation.KernelParameterNames
ans = 7x1 cell
{'LengthScale1'}
{'LengthScale2'}
{'LengthScale3'}
{'LengthScale4'}
{'LengthScale5'}
{'LengthScale6'}
{'SigmaF' }
커널 모수를 표시합니다.
sigmaM = gprMdl.KernelInformation.KernelParameters(1:end-1,1)
sigmaM = 6×1
104 ×
0.0004
0.0007
0.0004
4.7665
0.1018
0.0056
sigmaF = gprMdl.KernelInformation.KernelParameters(end)
sigmaF = 28.1720
sigma = gprMdl.Sigma
sigma = 0.8162
학습된 길이 스케일의 로그를 플로팅합니다.
figure() plot((1:d)',log(sigmaM),'ro-'); xlabel('Length scale number'); ylabel('Log of length scale');
4번째 및 5번째 예측 변수에 대한 길이 스케일의 로그는 다른 변수보다 상대적으로 높습니다. 이러한 예측 변수는 다른 예측 변수만큼 응답 변수에 미치는 영향이 크지 않은 것으로 보입니다.
4번째 및 5번째 변수를 예측 변수로 사용하지 않고 GPR 모델을 피팅합니다.
X = [Xtrain(:,1:3) Xtrain(:,6)]; sigma0 = std(ytrain); sigmaF0 = sigma0; d = size(X,2); sigmaM0 = 10*ones(d,1); gprMdl = fitrgp(X,ytrain,'Basis','constant','FitMethod','exact',... 'PredictMethod','exact','KernelFunction','ardsquaredexponential',... 'KernelParameters',[sigmaM0;sigmaF0],'Sigma',sigma0,'Standardize',1);
검정 데이터에 대한 회귀 오차를 계산합니다.
xtest = [Xtest(:,1:3) Xtest(:,6)]; L = loss(gprMdl,xtest,ytest)
L = 0.6928
손실은 모든 변수가 예측 변수로 사용된 경우의 손실과 유사합니다.
검정 데이터에 대해 예측된 응답 값을 계산합니다.
ypred = predict(gprMdl,xtest);
피팅된 값과 함께 원래 응답 변수 값을 플로팅합니다.
figure; plot(ytest,'r'); hold on; plot(ypred,'b'); legend('True response','GPR predicted values','Location','Best'); hold off
GPR 회귀 최적화하기
이 예제에서는 fitrgp
를 사용하여 자동으로 하이퍼파라미터를 최적화하는 방법을 보여줍니다. 이 예제에서는 소프트웨어와 함께 제공되는 gprdata2
데이터를 사용합니다.
데이터를 불러옵니다.
load('gprdata2.mat')
이 데이터에는 하나의 예측 변수와 연속형 응답 변수가 있습니다. 이는 시뮬레이션된 데이터입니다.
디폴트 커널 모수를 갖는 제곱 지수 커널 함수를 사용하여 GPR 모델을 피팅합니다.
gprMdl1 = fitrgp(x,y,'KernelFunction','squaredexponential');
자동 하이퍼파라미터 최적화를 사용하여 5겹 교차 검증 손실을 최소화하는 하이퍼파라미터를 구합니다.
재현이 가능하도록 난수 시드값을 설정하고 'expected-improvement-plus'
획득 함수를 사용합니다.
rng default gprMdl2 = fitrgp(x,y,'KernelFunction','squaredexponential',... 'OptimizeHyperparameters','auto','HyperparameterOptimizationOptions',... struct('AcquisitionFunctionName','expected-improvement-plus'));
|=====================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | Sigma | Standardize | | | result | log(1+loss) | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 1 | Best | 0.42258 | 3.4501 | 0.42258 | 0.42258 | 2.7255 | false | | 2 | Best | 0.29417 | 6.5193 | 0.29417 | 0.3301 | 0.0057724 | true | | 3 | Accept | 1.6498 | 2.0459 | 0.29417 | 0.3383 | 25.905 | true | | 4 | Accept | 0.29417 | 4.2272 | 0.29417 | 0.29425 | 0.0098001 | false | | 5 | Best | 0.039309 | 2.7498 | 0.039309 | 0.039451 | 0.1084 | false | | 6 | Accept | 0.29417 | 4.008 | 0.039309 | 0.039469 | 0.00010031 | true | | 7 | Accept | 0.29417 | 3.303 | 0.039309 | 0.15983 | 0.00010039 | false | | 8 | Accept | 0.039845 | 2.7449 | 0.039309 | 0.038857 | 0.095793 | false | | 9 | Best | 0.037789 | 3.0792 | 0.037789 | 0.0374 | 0.17968 | false | | 10 | Accept | 0.29417 | 4.1452 | 0.037789 | 0.037408 | 0.00079688 | true | | 11 | Accept | 0.037908 | 2.8025 | 0.037789 | 0.035598 | 0.13877 | false | | 12 | Accept | 0.037911 | 4.3809 | 0.037789 | 0.036245 | 0.13814 | false | | 13 | Accept | 0.037915 | 3.0798 | 0.037789 | 0.036619 | 0.13705 | false | | 14 | Best | 0.037728 | 2.5974 | 0.037728 | 0.037263 | 0.35683 | true | | 15 | Accept | 0.039463 | 2.941 | 0.037728 | 0.037144 | 0.10174 | true | | 16 | Accept | 0.037752 | 2.8778 | 0.037728 | 0.037322 | 0.19898 | true | | 17 | Accept | 0.2865 | 3.593 | 0.037728 | 0.037801 | 0.046127 | true | | 18 | Accept | 0.29417 | 3.9752 | 0.037728 | 0.037799 | 0.00078483 | false | | 19 | Accept | 2.0992 | 2.8954 | 0.037728 | 0.037943 | 29.2 | false | | 20 | Accept | 0.42266 | 2.2281 | 0.037728 | 0.03731 | 0.65474 | false | |=====================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | Sigma | Standardize | | | result | log(1+loss) | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 21 | Accept | 0.42356 | 2.1508 | 0.037728 | 0.037333 | 0.99911 | true | | 22 | Accept | 0.29144 | 4.1837 | 0.037728 | 0.037412 | 0.036437 | false | | 23 | Accept | 0.29417 | 4.7008 | 0.037728 | 0.037374 | 0.0028126 | false | | 24 | Accept | 0.037926 | 4.0517 | 0.037728 | 0.03734 | 0.13439 | true | | 25 | Accept | 0.29417 | 4.4884 | 0.037728 | 0.037309 | 0.0022057 | true | | 26 | Best | 0.037683 | 3.7433 | 0.037683 | 0.037288 | 0.28002 | true | | 27 | Accept | 0.29417 | 5.1392 | 0.037683 | 0.037257 | 0.00026057 | false | | 28 | Accept | 0.29417 | 5.2236 | 0.037683 | 0.037227 | 0.00025684 | true | | 29 | Accept | 0.038598 | 3.6686 | 0.037683 | 0.037245 | 0.12062 | true | | 30 | Accept | 0.037686 | 3.1297 | 0.037683 | 0.037261 | 0.30522 | true | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 143.06 seconds Total objective function evaluation time: 108.1235 Best observed feasible point: Sigma Standardize _______ ___________ 0.28002 true Observed objective function value = 0.037683 Estimated objective function value = 0.036997 Function evaluation time = 3.7433 Best estimated feasible point (according to models): Sigma Standardize _______ ___________ 0.13877 false Estimated objective function value = 0.037261 Estimated function evaluation time = 3.1469
최적화 전 피팅과 최적화 후 피팅을 비교합니다.
ypred1 = resubPredict(gprMdl1); ypred2 = resubPredict(gprMdl2); figure(); plot(x,y,'r.'); hold on plot(x,ypred1,'b'); plot(x,ypred2,'k','LineWidth',2); xlabel('x'); ylabel('y'); legend({'data','Initial Fit','Optimized Fit'},'Location','Best'); title('Impact of Optimization'); hold off
교차 검증을 사용하여 GPR 모델 훈련시키기
이 예제에서는 UCI Machine Learning Repository [3]의 전복 데이터 [1], [2]를 사용합니다. 데이터를 다운로드한 후 abalone.data
라는 이름으로 현재 폴더에 저장합니다.
데이터를 table
로 저장합니다. 처음 7개 행을 표시합니다.
tbl = readtable('abalone.data','Filetype','text','ReadVariableNames',false); tbl.Properties.VariableNames = {'Sex','Length','Diameter','Height','WWeight','SWeight','VWeight','ShWeight','NoShellRings'}; tbl(1:7,:)
ans = Sex Length Diameter Height WWeight SWeight VWeight ShWeight NoShellRings ___ ______ ________ ______ _______ _______ _______ ________ ____________ 'M' 0.455 0.365 0.095 0.514 0.2245 0.101 0.15 15 'M' 0.35 0.265 0.09 0.2255 0.0995 0.0485 0.07 7 'F' 0.53 0.42 0.135 0.677 0.2565 0.1415 0.21 9 'M' 0.44 0.365 0.125 0.516 0.2155 0.114 0.155 10 'I' 0.33 0.255 0.08 0.205 0.0895 0.0395 0.055 7 'I' 0.425 0.3 0.095 0.3515 0.141 0.0775 0.12 8 'F' 0.53 0.415 0.15 0.7775 0.237 0.1415 0.33 20
데이터셋에는 4177개의 관측값이 있습니다. 8개 물리적 측정값에서 전복의 나이를 예측하는 것이 목적입니다. 마지막 변수인 껍데기의 나이테 수가 전복의 나이입니다. 첫 번째 예측 변수는 범주형 변수입니다. 테이블의 마지막 변수는 응답 변수입니다.
검증에 데이터의 25%를 사용하여 교차 검증된 GPR 모델을 훈련시킵니다.
rng('default') % For reproducibility cvgprMdl = fitrgp(tbl,'NoShellRings','Standardize',1,'Holdout',0.25);
겹 바깥의 관측값에 대해 훈련된 모델을 사용하여 겹에 대한 평균 손실을 계산합니다.
kfoldLoss(cvgprMdl)
ans = 4.6409
겹 바깥의 데이터에 대한 응답 변수를 예측합니다.
ypred = kfoldPredict(cvgprMdl);
검정에 사용되는 실제 응답 변수 값과 예측 값을 플로팅합니다.
figure(); plot(ypred(cvgprMdl.Partition.test)); hold on; y = table2array(tbl(:,end)); plot(y(cvgprMdl.Partition.test),'r.'); axis([0 1050 0 30]); xlabel('x') ylabel('y') hold off;
사용자 지정 커널 함수를 사용하여 GPR 모델 피팅하기
표본 데이터를 생성합니다.
rng(0,'twister'); % For reproducibility n = 1000; x = linspace(-10,10,n)'; y = 1 + x*5e-2 + sin(x)./x + 0.2*randn(n,1);
제곱 지수 커널 함수를 사용자 지정 커널 함수로 정의합니다.
제곱 지수 커널 함수를 다음과 같이 계산할 수 있습니다.
여기서 는 신호 표준편차이고, 은 길이 스케일입니다. 및 은 모두 0보다 커야 합니다. 이 조건은 일부 비제약 모수화 벡터 에 대해 비제약 모수화 및 에 의해 적용될 수 있습니다.
따라서 다음과 같이 제곱 지수 커널 함수를 사용자 지정 커널 함수로 정의할 수 있습니다.
kfcn = @(XN,XM,theta) (exp(theta(2))^2)*exp(-(pdist2(XN,XM).^2)/(2*exp(theta(1))^2));
여기서 pdist2(XN,XM).^2
은 거리 행렬을 계산합니다.
사용자 지정 커널 함수 kfcn
을 사용하여 GPR 모델을 피팅합니다. 커널 모수의 초기값을 지정합니다(사용자 지정 커널 함수를 사용하고 있으므로 비제약 모수화 벡터 theta
의 초기값을 지정해야 함).
theta0 = [1.5,0.2]; gprMdl = fitrgp(x,y,'KernelFunction',kfcn,'KernelParameters',theta0);
fitrgp
는 내장 커널 함수를 사용할 때 해석적 도함수를 사용하여 모수를 추정하는 반면, 사용자 지정 커널 함수를 사용할 때는 수치적 도함수를 사용합니다.
이 모델에 대한 재대입 손실을 계산합니다.
L = resubLoss(gprMdl)
L = 0.0391
내장 제곱 지수 커널 함수 옵션을 사용하여 GPR 모델을 피팅합니다. 커널 모수의 초기값을 지정합니다(내장 사용자 지정 커널 함수를 사용하고 초기 모수 값을 지정하는 중이므로 신호 표준편차와 길이 스케일의 초기값을 직접 지정해야 함).
sigmaL0 = exp(1.5); sigmaF0 = exp(0.2); gprMdl2 = fitrgp(x,y,'KernelFunction','squaredexponential','KernelParameters',[sigmaL0,sigmaF0]);
이 모델에 대한 재대입 손실을 계산합니다.
L2 = resubLoss(gprMdl2)
L2 = 0.0391
예상대로 두 손실 값이 같습니다.
LBFGS 최적화에 대한 초기 스텝 크기 지정하기
다수의 예측 변수를 사용하여 생성된 데이터에 대해 GPR 모델을 훈련시킵니다. LBFGS 최적화 함수에 대한 초기 스텝 크기를 지정합니다.
결과 재현이 가능하도록 난수 생성기의 유형과 시드값을 설정합니다.
rng(0,'twister'); % For reproducibility
300개의 관측값과 3000개의 예측 변수로 구성된 표본 데이터를 생성합니다. 여기서 응답 변수는 4번째, 7번째, 13번째 예측 변수에 따라 결정됩니다.
N = 300; P = 3000; X = rand(N,P); y = cos(X(:,7)) + sin(X(:,4).*X(:,13)) + 0.1*randn(N,1);
커널 모수의 초기값을 설정합니다.
sigmaL0 = sqrt(P)*ones(P,1); % Length scale for predictors sigmaF0 = 1; % Signal standard deviation
초기 잡음 표준편차를 1
로 설정합니다.
sigmaN0 = 1;
상대 기울기 노름에 대한 종료 허용오차로 1e-2
를 지정합니다.
opts = statset('fitrgp');
opts.TolFun = 1e-2;
초기 커널 모수 값, 초기 잡음 표준편차, 자동 관련성 결정(ARD) 제곱 지수 커널 함수를 사용하여 GPR 모델을 피팅합니다.
LBFGS 최적화 함수에 대한 초기 헤세 행렬 근사를 결정할 때 사용할 초기 스텝 크기를 1로 지정합니다.
gpr = fitrgp(X,y,'KernelFunction','ardsquaredexponential','Verbose',1, ... 'Optimizer','lbfgs','OptimizerOptions',opts, ... 'KernelParameters',[sigmaL0;sigmaF0],'Sigma',sigmaN0,'InitialStepSize',1);
o Parameter estimation: FitMethod = Exact, Optimizer = lbfgs o Solver = LBFGS, HessianHistorySize = 15, LineSearchMethod = weakwolfe |====================================================================================================| | ITER | FUN VALUE | NORM GRAD | NORM STEP | CURV | GAMMA | ALPHA | ACCEPT | |====================================================================================================| | 0 | 3.004966e+02 | 2.569e+02 | 0.000e+00 | | 3.893e-03 | 0.000e+00 | YES | | 1 | 9.525779e+01 | 1.281e+02 | 1.003e+00 | OK | 6.913e-03 | 1.000e+00 | YES | | 2 | 3.972026e+01 | 1.647e+01 | 7.639e-01 | OK | 4.718e-03 | 5.000e-01 | YES | | 3 | 3.893873e+01 | 1.073e+01 | 1.057e-01 | OK | 3.243e-03 | 1.000e+00 | YES | | 4 | 3.859904e+01 | 5.659e+00 | 3.282e-02 | OK | 3.346e-03 | 1.000e+00 | YES | | 5 | 3.748912e+01 | 1.030e+01 | 1.395e-01 | OK | 1.460e-03 | 1.000e+00 | YES | | 6 | 2.028104e+01 | 1.380e+02 | 2.010e+00 | OK | 2.326e-03 | 1.000e+00 | YES | | 7 | 2.001849e+01 | 1.510e+01 | 9.685e-01 | OK | 2.344e-03 | 1.000e+00 | YES | | 8 | -7.706109e+00 | 8.340e+01 | 1.125e+00 | OK | 5.771e-04 | 1.000e+00 | YES | | 9 | -1.786074e+01 | 2.323e+02 | 2.647e+00 | OK | 4.217e-03 | 1.250e-01 | YES | | 10 | -4.058422e+01 | 1.972e+02 | 6.796e-01 | OK | 7.035e-03 | 1.000e+00 | YES | | 11 | -7.850209e+01 | 4.432e+01 | 8.335e-01 | OK | 3.099e-03 | 1.000e+00 | YES | | 12 | -1.312162e+02 | 3.334e+01 | 1.277e+00 | OK | 5.432e-02 | 1.000e+00 | YES | | 13 | -2.005064e+02 | 9.519e+01 | 2.828e+00 | OK | 5.292e-03 | 1.000e+00 | YES | | 14 | -2.070150e+02 | 1.898e+01 | 1.641e+00 | OK | 6.817e-03 | 1.000e+00 | YES | | 15 | -2.108086e+02 | 3.793e+01 | 7.685e-01 | OK | 3.479e-03 | 1.000e+00 | YES | | 16 | -2.122920e+02 | 7.057e+00 | 1.591e-01 | OK | 2.055e-03 | 1.000e+00 | YES | | 17 | -2.125610e+02 | 4.337e+00 | 4.818e-02 | OK | 1.974e-03 | 1.000e+00 | YES | | 18 | -2.130162e+02 | 1.178e+01 | 8.891e-02 | OK | 2.856e-03 | 1.000e+00 | YES | | 19 | -2.139378e+02 | 1.933e+01 | 2.371e-01 | OK | 1.029e-02 | 1.000e+00 | YES | |====================================================================================================| | ITER | FUN VALUE | NORM GRAD | NORM STEP | CURV | GAMMA | ALPHA | ACCEPT | |====================================================================================================| | 20 | -2.151111e+02 | 1.550e+01 | 3.015e-01 | OK | 2.765e-02 | 1.000e+00 | YES | | 21 | -2.173046e+02 | 5.856e+00 | 6.537e-01 | OK | 1.414e-02 | 1.000e+00 | YES | | 22 | -2.201781e+02 | 8.918e+00 | 8.484e-01 | OK | 6.381e-03 | 1.000e+00 | YES | | 23 | -2.288858e+02 | 4.846e+01 | 2.311e+00 | OK | 2.661e-03 | 1.000e+00 | YES | | 24 | -2.392171e+02 | 1.190e+02 | 6.283e+00 | OK | 8.113e-03 | 1.000e+00 | YES | | 25 | -2.511145e+02 | 1.008e+02 | 1.198e+00 | OK | 1.605e-02 | 1.000e+00 | YES | | 26 | -2.742547e+02 | 2.207e+01 | 1.231e+00 | OK | 3.191e-03 | 1.000e+00 | YES | | 27 | -2.849931e+02 | 5.067e+01 | 3.660e+00 | OK | 5.184e-03 | 1.000e+00 | YES | | 28 | -2.899797e+02 | 2.068e+01 | 1.162e+00 | OK | 6.270e-03 | 1.000e+00 | YES | | 29 | -2.916723e+02 | 1.816e+01 | 3.213e-01 | OK | 1.415e-02 | 1.000e+00 | YES | | 30 | -2.947674e+02 | 6.965e+00 | 1.126e+00 | OK | 6.339e-03 | 1.000e+00 | YES | | 31 | -2.962491e+02 | 1.349e+01 | 2.352e-01 | OK | 8.999e-03 | 1.000e+00 | YES | | 32 | -3.004921e+02 | 1.586e+01 | 9.880e-01 | OK | 3.940e-02 | 1.000e+00 | YES | | 33 | -3.118906e+02 | 1.889e+01 | 3.318e+00 | OK | 1.213e-01 | 1.000e+00 | YES | | 34 | -3.189215e+02 | 7.086e+01 | 3.070e+00 | OK | 8.095e-03 | 1.000e+00 | YES | | 35 | -3.245557e+02 | 4.366e+00 | 1.397e+00 | OK | 2.718e-03 | 1.000e+00 | YES | | 36 | -3.254613e+02 | 3.751e+00 | 6.546e-01 | OK | 1.004e-02 | 1.000e+00 | YES | | 37 | -3.262823e+02 | 4.011e+00 | 2.026e-01 | OK | 2.441e-02 | 1.000e+00 | YES | | 38 | -3.325606e+02 | 1.773e+01 | 2.427e+00 | OK | 5.234e-02 | 1.000e+00 | YES | | 39 | -3.350374e+02 | 1.201e+01 | 1.603e+00 | OK | 2.674e-02 | 1.000e+00 | YES | |====================================================================================================| | ITER | FUN VALUE | NORM GRAD | NORM STEP | CURV | GAMMA | ALPHA | ACCEPT | |====================================================================================================| | 40 | -3.379112e+02 | 5.280e+00 | 1.393e+00 | OK | 1.177e-02 | 1.000e+00 | YES | | 41 | -3.389136e+02 | 3.061e+00 | 7.121e-01 | OK | 2.935e-02 | 1.000e+00 | YES | | 42 | -3.401070e+02 | 4.094e+00 | 6.224e-01 | OK | 3.399e-02 | 1.000e+00 | YES | | 43 | -3.436291e+02 | 8.833e+00 | 1.707e+00 | OK | 5.231e-02 | 1.000e+00 | YES | | 44 | -3.456295e+02 | 5.891e+00 | 1.424e+00 | OK | 3.772e-02 | 1.000e+00 | YES | | 45 | -3.460069e+02 | 1.126e+01 | 2.580e+00 | OK | 3.907e-02 | 1.000e+00 | YES | | 46 | -3.481756e+02 | 1.546e+00 | 8.142e-01 | OK | 1.565e-02 | 1.000e+00 | YES | Infinity norm of the final gradient = 1.546e+00 Two norm of the final step = 8.142e-01, TolX = 1.000e-12 Relative infinity norm of the final gradient = 6.016e-03, TolFun = 1.000e-02 EXIT: Local minimum found. o Alpha estimation: PredictMethod = Exact
GPR 모델이 다수의 예측 변수를 갖는 ARD 커널을 사용하므로 헤세 행렬에 대한 LBFGS 근사를 사용하는 것이 전체 헤세 행렬을 저장하는 것보다 메모리 효율성이 더 높습니다. 또한, 초기 스텝 크기를 사용하여 초기 헤세 행렬 근삿값을 결정하면 최적화 속도를 높이는 데에도 도움이 될 수 있습니다.
음의 학습된 길이 스케일의 지수를 계산하여 예측 변수 가중치를 구합니다. 가중치를 정규화합니다.
sigmaL = gpr.KernelInformation.KernelParameters(1:end-1); % Learned length scales weights = exp(-sigmaL); % Predictor weights weights = weights/sum(weights); % Normalized predictor weights
정규화된 예측 변수 가중치를 플로팅합니다.
figure; semilogx(weights,'ro'); xlabel('Predictor index'); ylabel('Predictor weight');
훈련된 GPR 모델은 가장 큰 가중치를 4번째, 7번째, 13번째 예측 변수에 할당합니다. 관련 없는 예측 변수는 0에 가까운 가중치를 가집니다.
입력 인수
Tbl
— 표본 데이터
table
모델을 훈련시키는 데 사용되는 표본 데이터로, table
로 지정됩니다. Tbl
의 각 행은 하나의 관측값에 대응되고, 각 열은 하나의 변수에 대응됩니다. Tbl
은 예측 변수를 포함하며, 선택적으로 응답 변수에 대한 하나의 열을 포함할 수도 있습니다. 문자형 벡터로 구성된 셀형 배열 이외의 셀형 배열과 다중 열 변수는 허용되지 않습니다.
Tbl
이 응답 변수를 포함하며 나머지 모든 변수를 예측 변수로 사용하려는 경우ResponseVarName
을 사용하여 응답 변수를 지정하십시오.Tbl
이 응답 변수를 포함하며 모델을 훈련시킬 때 일부 예측 변수만 사용하려는 경우formula
를 사용하여 응답 변수와 예측 변수를 지정하십시오.Tbl
이 응답 변수를 포함하지 않는 경우y
를 사용하여 응답 변수를 지정하십시오. 응답 변수의 길이와Tbl
의 행 개수는 동일해야 합니다.
table
데이터형에 대한 자세한 내용은 table
을 참조하십시오.
예측 변수 데이터에 범주형 변수가 포함된 경우 fitrgp
는 가변수를 생성합니다. 자세한 내용은 CategoricalPredictors
를 참조하십시오.
데이터형: table
ResponseVarName
— 응답 변수 이름
Tbl
에 포함된 변수 이름
응답 변수 이름으로, Tbl
의 변수 이름으로 지정됩니다. ResponseVarName
은 문자형 벡터나 string형 스칼라로 지정해야 합니다. 예를 들어, 응답 변수 y
가 Tbl
에 Tbl.y
로 저장된 경우 이를 'y'
로 지정하십시오. 이렇게 하지 않으면 모델을 훈련시킬 때 y
를 포함한 Tbl
의 모든 열이 예측 변수로 처리됩니다.
데이터형: char
| string
formula
— 모델 훈련에 사용할 응답 변수와 예측 변수
'y~x1+x2+x3'
형식의 문자형 벡터 또는 string형 스칼라
모델 훈련에 사용할 응답 변수와 예측 변수로, 'y~x1+x2+x3'
형식의 문자형 벡터 또는 string형 스칼라로 지정됩니다. 이 형식에서 y
는 응답 변수를 나타내고, x1
, x2
, x3
은 모델 훈련에 사용할 예측 변수를 나타냅니다.
Tbl
의 변수 중 일부를 모델 훈련에 사용할 예측 변수로 지정하려면 공식을 사용하십시오. 공식을 지정하면 formula
에 표시되지 않는 변수는 모델 훈련에 사용되지 않습니다.
식에 포함되는 변수 이름은 Tbl
에 포함된 변수 이름(Tbl.Properties.VariableNames
)이면서 동시에 유효한 MATLAB® 식별자여야 합니다. isvarname
함수를 사용하여 Tbl
에 포함된 변수 이름을 확인할 수 있습니다. 변수 이름이 유효하지 않으면 matlab.lang.makeValidName
함수를 사용하여 변수 이름을 변환할 수 있습니다.
공식은 BasisFunction
형식을 표시하지 않습니다.
예: 'PetalLength~PetalWidth+Species'
는 변수 PetalLength
를 응답 변수로 식별하고 PetalWidth
및 Species
를 예측 변수로 식별합니다.
데이터형: char
| string
X
— GPR 모델의 예측 변수 데이터
n×d 행렬
GPR 모델의 예측 변수 데이터로, n×d 행렬로 지정됩니다. n은 관측값(행) 개수이고, d는 예측 변수(열) 개수입니다.
y
의 길이와 X
의 행 개수는 동일해야 합니다.
X
에 나오는 순서로 예측 변수의 이름을 지정하려면 PredictorNames
이름-값 쌍의 인수를 사용하십시오.
데이터형: double
y
— GPR 모델의 응답 변수 데이터
n×1 벡터
GPR 모델의 응답 변수 데이터로, n×1 벡터로 지정됩니다. y
도 포함하는 Tbl
훈련 데이터를 지정하면 y
는 생략할 수 있습니다. 이 경우, ResponseVarName
을 사용하여 응답 변수를 식별하거나 formula
를 사용하여 응답 변수와 예측 변수를 식별할 수 있습니다.
데이터형: double
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: 'FitMethod','sr','BasisFunction','linear','ActiveSetMethod','sgma','PredictMethod','fic'
는 모수 추정을 위해 부분 회귀 변수(subset of regressors) 근사법을 사용하여 GPR 모델을 훈련시키고, 선형 기저 함수를 사용하고, 활성 선택을 위해 희소 최대 일치(greedy) 행렬 근사를 사용하며, 예측에는 완전히 독립적인 조건부 근사법을 사용합니다.
참고
교차 검증 이름-값 인수는 'OptimizeHyperparameters'
이름-값 인수와 함께 사용할 수 없습니다. 'OptimizeHyperparameters'
에 대한 교차 검증을 수정하려면 'HyperparameterOptimizationOptions'
이름-값 인수를 사용해야만 합니다.
FitMethod
— GPR 모델의 모수를 추정하는 방법
"none"
| "exact"
| "sd"
| "sr"
| "fic"
GPR 모델의 모수를 추정하는 방법으로, 다음 중 하나로 지정됩니다.
피팅 방법 | 설명 |
---|---|
"none" | 추정 안 함. 초기 모수 값을 알려진 모수 값으로 사용합니다. |
"exact" | 정확한 가우스 과정 회귀. n ≤ 2000인 경우 이 값이 디폴트이며, 여기서 n은 관측값 개수입니다. |
"sd" | 부분 데이터 점 근사. n > 2000인 경우 이 값이 디폴트이며, 여기서 n은 관측값 개수입니다. "sd" 는 희소 방법입니다. |
"sr" | 부분 회귀 변수 근사. "sr" 은 희소 방법입니다. |
"fic" | 완전히 독립적인 조건부 근사. "fic" 는 희소 방법입니다. |
예: FitMethod="fic"
BasisFunction
— GPR 모델의 명시적 기저
"constant"
(디폴트 값) | "none"
| "linear"
| "pureQuadratic"
| 함수 핸들
GPR 모델의 명시적 기저로, "constant"
, "none"
, "linear"
, "pureQuadratic"
또는 함수 핸들로 지정됩니다. n이 관측값 개수이면 기저 함수는 항 H*β를 모델에 추가합니다. 여기서 H는 기저 행렬이고 β는 기저 계수로 구성된 p×1 벡터입니다.
명시적 기저 | 기저 행렬 |
---|---|
"none" | 빈 행렬 |
"constant" |
H는 1로 구성된 n×1 벡터이며, 여기서 n은 관측값 개수입니다. |
"linear" |
X는 범주형 변수에 대해 가변수가 생성된 후의 확장된 예측 변수 데이터입니다. 가변수 생성에 대한 자세한 내용은 |
"pureQuadratic" |
여기서
이 기저 옵션에서는 범주형 예측 변수를 갖는 X가 지원되지 않습니다. |
함수 핸들 |
여기서 X는 예측 변수로 구성된 n×d 행렬이고, d는 범주형 변수에 대해 가변수가 생성된 후의 예측 변수 개수이고, H는 기저 함수로 구성된 n×p 행렬입니다. |
예: BasisFunction="pureQuadratic"
데이터형: char
| string
| function_handle
Beta
— 계수의 초기값
p×1 벡터
명시적 기저에 대한 계수의 초기값으로, p×1 벡터로 지정됩니다. 여기서 p는 기저 행렬 H의 열 개수입니다.
기저 행렬은 지정된 기저 함수에 따라 달라집니다. 자세한 내용은 BasisFunction
항목을 참조하십시오.
훈련 함수는 FitMethod
가 "none"
인 경우에만 알려진 계수 값으로 계수 초기값을 사용합니다.
데이터형: double
Sigma
— 잡음 표준편차의 초기값
std
(y
)/sqrt(2)
(디폴트 값) | 양의 스칼라 값
가우스 과정 모델의 잡음 표준편차에 대한 초기값으로, 양의 스칼라 값으로 지정됩니다.
훈련 함수는 잡음 표준편차를 SigmaLowerBound
와 exp(η)
의 합으로 모수화하며, 여기서 η는 비제약 값입니다. 따라서, Sigma
가 작은 허용오차만큼 SigmaLowerBound
보다 커야 함수가 η를 유한 값으로 초기화할 수 있습니다. 그렇지 않으면 함수가 Sigma
를 호환되는 값으로 재설정합니다.
허용오차는 ConstantSigma
가 false
(디폴트 값)인 경우 1e-3
이고 그렇지 않은 경우 1e-6
입니다. 허용오차가 응답 변수의 스케일에 비해 충분히 작지 않은 경우, 허용오차 값이 응답 변수에 대해 작다고 간주될 수 있도록 응답 변수의 스케일을 크게 할 수 있습니다.
예: Sigma=2
데이터형: double
ConstantSigma
— 잡음 표준편차의 Sigma
상수 값
false
또는 0
(디폴트 값) | true
또는 1
가우스 과정 모델의 잡음 표준편차의 Sigma
상수 값으로, 숫자형 또는 논리값 0
(false
)이나 1
(true
)로 지정됩니다. ConstantSigma
가 true
이면 훈련 함수는 Sigma
의 값을 최적화하지 않고, 대신에 계산 전체 과정에서 초기값을 사용합니다.
예: ConstantSigma=true
데이터형: logical
SigmaLowerBound
— 잡음 표준편차의 하한
1e-2*std
(y
) (디폴트 값) | 양의 스칼라 값
잡음 표준편차(Sigma
)의 하한으로, 양의 스칼라 값으로 지정됩니다.
Sigma
는 작은 허용오차만큼 SigmaLowerBound
보다 커야 합니다.
예: SigmaLowerBound=0.02
데이터형: double
CategoricalPredictors
— 범주형 예측 변수 목록
양의 정수로 구성된 벡터 | 논리형 벡터 | 문자형 행렬 | string형 배열 | 문자형 벡터로 구성된 셀형 배열 | 'all'
범주형 예측 변수 목록으로, 다음 표에 있는 값 중 하나로 지정됩니다.
값 | 설명 |
---|---|
양의 정수로 구성된 벡터 | 벡터의 각 요소는 대응되는 예측 변수가 범주형임을 나타내는 인덱스 값입니다. 인덱스 값은 1과
|
논리형 벡터 | 요소의 값이 |
문자형 행렬 | 행렬의 각 행은 예측 변수의 이름입니다. 이름은 PredictorNames 의 요소와 일치해야 합니다. 문자형 행렬의 각 행의 길이가 같게 되도록 이름 뒤에 추가로 공백을 채웁니다. |
string형 배열 또는 문자형 벡터로 구성된 셀형 배열 | 배열의 각 요소는 예측 변수의 이름입니다. 이름은 PredictorNames 의 요소와 일치해야 합니다. |
"all" | 모든 예측 변수가 범주형 변수입니다. |
기본적으로 예측 변수 데이터가 테이블(Tbl
) 내에 있는 경우, 변수가 논리형 벡터, categorical형 벡터, 문자형 배열, string형 배열 또는 문자형 벡터로 구성된 셀형 배열이면 fitrgp
함수는 그 변수를 범주형 변수라고 가정합니다. 예측 변수 데이터가 행렬(X
)이면 fitrgp
함수는 모든 예측 변수를 연속형 변수라고 가정합니다. 다른 모든 예측 변수를 범주형 예측 변수로 식별하려면 이러한 변수를 CategoricalPredictors
이름-값 인수를 사용하여 지정하십시오.
식별된 범주형 예측 변수에 대해 fitrgp
함수는 범주형 변수에 순서가 지정되어 있는지에 따라 서로 다른 두 가지 체계를 사용하여 가변수를 생성합니다. 순서가 지정되지 않은 범주형 변수에 대해 fitrgp
함수는 범주형 변수의 각 수준마다 하나의 가변수를 생성합니다. 순서가 지정된 범주형 변수에 대해 fitrgp
함수는 범주 개수보다 하나가 적은 가변수를 생성합니다. 자세한 내용은 Automatic Creation of Dummy Variables 항목을 참조하십시오.
예: 'CategoricalPredictors','all'
데이터형: single
| double
| logical
| char
| string
| cell
Standardize
— 데이터 표준화 여부 표시자
false
또는 0
(디폴트 값) | true
또는 1
데이터 표준화 여부 표시자로, 숫자형 또는 논리값 0
(false
)이나 1
(true
)로 지정됩니다.
Standardize=1
을 설정하면 예측 변수 데이터의 각 열이 열의 평균과 표준편차로 정규화됩니다. 범주형 예측 변수에 대해 생성된 가변수 열에 포함된 데이터는 표준화되지 않습니다.
예: Standardize=1
예: Standardize=true
데이터형: logical
Regularization
— 정규화 표준편차
1e-2*std
(y
) (디폴트 값) | 양의 스칼라 값
부분 회귀 변수 근사법("sr"
)과 완전히 독립적인 조건부 근사법("fic"
)에 대한 정규화 표준편차로, 양의 스칼라 값으로 지정됩니다. 자세한 내용은 FitMethod
항목을 참조하십시오.
예: Regularization=0.2
데이터형: double
ComputationMethod
— 로그 가능도와 기울기 계산 방법
"qr"
(디폴트 값) | "v"
KernelFunction
— 공분산 함수의 형태
"squaredexponential"
(디폴트 값) | "exponential"
| "matern32"
| "matern52"
| "rationalquadratic"
| "ardsquaredexponential"
| "ardexponential"
| "ardmatern32"
| "ardmatern52"
| "ardrationalquadratic"
| 함수 핸들
공분산 함수의 형태로, 다음 중 하나로 지정됩니다.
값 | 설명 |
---|---|
"exponential" | 지수 커널 |
"squaredexponential" | 제곱 지수 커널 |
"matern32" | 모수 3/2를 갖는 매턴 커널 |
"matern52" | 모수 5/2를 갖는 매턴 커널 |
"rationalquadratic" | 유리 2차 커널 |
"ardexponential" | 예측 변수당 개별적인 길이 스케일을 갖는 지수 커널 |
"ardsquaredexponential" | 예측 변수당 개별적인 길이 스케일을 갖는 제곱 지수 커널 |
"ardmatern32" | 모수 3/2 및 예측 변수당 개별적인 길이 스케일을 갖는 매턴 커널 |
"ardmatern52" | 모수 5/2 및 예측 변수당 개별적인 길이 스케일을 갖는 매턴 커널 |
"ardrationalquadratic" | 예측 변수당 개별적인 길이 스케일을 갖는 유리 2차 커널 |
함수 핸들 | 다음 형식의 함수 핸들:Kmn = kfcn(Xm,Xn,theta) . 여기서 Xm 은 m×d 행렬이고, Xn 은 n×d 행렬이고, Kmn 은 커널 곱으로 구성된 m×n 행렬이며 이때 Kmn (i,j)는 Xm (i,:)와 Xn (j,:)의 커널 곱입니다. d는 범주형 변수에 대해 가변수가 생성된 후의 예측 변수 개수입니다. 가변수 생성에 대한 자세한 내용은 CategoricalPredictors 항목을 참조하십시오.theta 는 kfcn 에 대한 r×1 비제약 모수 벡터입니다. |
커널 함수에 대한 자세한 내용은 Kernel (Covariance) Function Options 항목을 참조하십시오.
예: KernelFunction="matern32"
데이터형: char
| string
| function_handle
KernelParameters
— 커널 모수의 초기값
숫자형 벡터
커널 모수의 초기값으로, 숫자형 벡터로 지정됩니다. 벡터의 크기와 값은 KernelFunction
이름-값 인수로 지정되는 공분산 함수의 형태에 따라 달라집니다.
KernelFunction Value | KernelParameters Value |
---|---|
"exponential" , "squaredexponential" , "matern32" 또는 "matern52" | 2×1 벡터 phi . 여기서 phi(1) 은 길이 스케일을 포함하고 phi(2) 는 신호 표준편차를 포함합니다. 길이 스케일 모수의 디폴트 초기값은 예측 변수의 표준편차 평균입니다. 신호 표준편차는 응답 변수의 표준편차를 2의 제곱근으로 나눈 값입니다. 즉, 다음과 같습니다. phi = [mean(std(X));std(y)/sqrt(2)] |
"rationalquadratic" | 3×1 벡터 phi . 여기서 phi(1) 은 길이 스케일을 포함하고 phi(2) 는 스케일 혼합 모수를 포함하며, phi(3) 은 신호 표준편차를 포함합니다. 길이 스케일 모수의 디폴트 초기값은 예측 변수의 표준편차 평균입니다. 신호 표준편차는 응답 변수의 표준편차를 2의 제곱근으로 나눈 값입니다. 스케일 혼합 모수의 디폴트 초기값은 1입니다. 즉, 다음과 같습니다. phi = [mean(std(X));1;std(y)/sqrt(2)] |
"ardexponential" , "ardsquaredexponential" , "ardmatern32" 또는 "ardmatern52" | (d+1)×1 벡터 phi . 여기서 phi(i) 는 예측 변수 i에 대한 길이 스케일을 포함하고, phi(d+1) 은 신호 표준편차를 포함합니다. d는 범주형 변수에 대해 가변수가 생성된 후의 예측 변수 개수입니다. 가변수 생성에 대한 자세한 내용은 CategoricalPredictors 를 참조하십시오. 길이 스케일 모수의 디폴트 초기값은 예측 변수의 표준편차입니다. 신호 표준편차는 응답 변수의 표준편차를 2의 제곱근으로 나눈 값입니다. 즉, 다음과 같습니다. phi = [std(X)';std(y)/sqrt(2)] |
"ardrationalquadratic" | (d+2)×1 벡터 phi . 여기서 phi(i) 는 예측 변수 i에 대한 길이 스케일을 포함하고, phi(d+1) 은 스케일 혼합 모수를 포함하며, phi(d+2) 는 신호 표준편차를 포함합니다. d는 범주형 변수에 대해 가변수가 생성된 후의 예측 변수 개수입니다. 가변수 생성에 대한 자세한 내용은 CategoricalPredictors 항목을 참조하십시오.길이 스케일 모수의 디폴트 초기값은 예측 변수의 표준편차입니다. 신호 표준편차는 응답 변수의 표준편차를 2의 제곱근으로 나눈 값입니다. 스케일 혼합 모수의 디폴트 초기값은 1입니다. 즉, 다음과 같습니다. phi = [std(X)';1;std(y)/sqrt(2)] |
함수 핸들 | r×1 벡터로, 사용자 지정 커널 함수 kfcn 에 대한 비제약 모수 벡터 phi 의 초기값으로 사용됩니다. KernelFunction 이 함수 핸들이면 커널 모수의 초기값을 지정해야 합니다. |
커널 함수에 대한 자세한 내용은 Kernel (Covariance) Function Options 항목을 참조하십시오.
예: KernelParameters=phi
데이터형: double
| single
DistanceMethod
— 점 간 거리 계산 방법
"fast"
(디폴트 값) | "accurate"
내장 커널 함수를 계산하기 위해 점 간 거리를 계산하는 방법으로, "fast"
또는 "accurate"
로 지정됩니다. "fast"
를 지정하면, 훈련 함수는 을 로 계산합니다. "accurate"
를 지정하면, 훈련 함수는 을 계산합니다.
예: DistanceMethod="accurate"
ActiveSet
— 활성 세트 내 관측값
[]
(디폴트 값) | 1에서 n 사이의 정수로 구성된 m×1 벡터(m ≤ n) | 길이가 n인 논리형 벡터
활성 세트 내 관측값으로, 1에서 n 사이의 정수로 구성된 m×1 벡터(m ≤ n) 또는 적어도 하나의 true
요소를 가지는 길이가 n인 논리형 벡터로 지정됩니다. n은 훈련 데이터에 포함된 총 관측값 개수입니다.
fitrgp
는 ActiveSet
에서 명시된 관측값을 사용해 GPR 모델을 훈련시킵니다. 활성 세트에는 중복된 요소가 있을 수 없습니다.
ActiveSet
를 지정하는 경우,
fitrgp
가ActiveSetSize
및ActiveSetMethod
를 사용하지 않습니다.이 모델에 대해 교차 검증을 수행할 수 없습니다.
데이터형: double
| logical
ActiveSetSize
— 활성 세트의 크기
정수 m(1 ≤ m ≤ n)
활성 세트의 크기로, 1 ≤ m ≤ n을 충족하는 정수 m으로 지정됩니다. 여기서 n은 관측값 개수입니다. 이 인수는 FitMethod
가 "sd"
, "sr"
또는 "fic"
인 경우 유효합니다.
디폴트 값은 FitMethod
가 "sr"
또는 "fic"
인 경우 min(1000,n)이고, 그렇지 않은 경우 min(2000,n)입니다.
예: ActiveSetSize=100
데이터형: double
ActiveSetMethod
— 활성 세트 선택 방법
"random"
(디폴트 값) | "sgma"
| "entropy"
| "likelihood"
활성 세트 선택 방법으로, 다음 값 중 하나로 지정됩니다.
값 | 설명 |
---|---|
"random" | 임의 선택 |
"sgma" | 희소 최대 일치(greedy) 행렬 근사 |
"entropy" | 미분 엔트로피에 기반한 선택 |
"likelihood" | 부분 회귀 변수 로그 가능도에 기반한 선택 |
("random"
을 제외한) 모든 활성 세트 선택 방법은 n×m 행렬의 저장 공간을 필요로 합니다. 여기서 m은 활성 세트의 크기이고 n은 관측값 개수입니다.
예: ActiveSetMethod="entropy"
RandomSearchSetSize
— 임의 탐색 세트 크기
59 (디폴트 값) | 정수 값
활성 세트 선택 시 최대 일치(greedy) 항목으로 포함될 수 있는 임의 탐색 세트 크기로, 정수 값으로 지정됩니다.
예: RandomSearchSetSize=30
데이터형: double
ToleranceActiveSet
— 활성 세트 선택 종료에 대한 상대 허용오차
1e-06 (디폴트 값) | 양의 스칼라
활성 세트 선택을 종료하기 위한 상대 허용오차로, 양의 스칼라로 지정됩니다.
예: ToleranceActiveset=0.0002
데이터형: double
NumActiveSetRepeats
— 반복 횟수
3 (디폴트 값) | 정수 값
ActiveSetMethod
가 "random"
이 아닌 경우 인터리빙된 활성 세트를 선택하고 모수를 추정할 때 수행할 반복 횟수로, 정수 값으로 지정됩니다.
예: NumActiveSetRepeats=5
데이터형: double
PredictMethod
— 예측을 수행하는 데 사용되는 방법
"exact"
| "bcd"
| "sd"
| "sr"
| "fic"
모수가 주어진 경우 가우스 과정 모델에서 예측을 수행하는 데 사용되는 방법으로, 다음 값 중 하나로 지정됩니다.
값 | 설명 |
---|---|
"exact" | 정확한 가우스 과정 회귀 방법. n ≤ 10,000인 경우 이 값이 디폴트입니다. |
"bcd" | 블록 좌표 하강법(BCD). n > 10,000인 경우 이 값이 디폴트입니다. |
"sd" | 부분 데이터 점 근사 |
"sr" | 부분 회귀 변수 근사 |
"fic" | 완전히 독립적인 조건부 근사 |
예: PredictMethod="bcd"
BlockSizeBCD
— BCD 방법의 블록 크기
최솟값 1000 또는 n (디폴트 값) | 1에서 n까지의 범위 내에 있는 정수
블록 좌표 하강법("bcd"
)의 블록 크기로, 1에서 n까지의 범위 내에 있는 정수로 지정됩니다. 여기서 n은 관측값 개수입니다.
예: BlockSizeBCD=1500
데이터형: double
NumGreedyBCD
— BCD 방법의 최대 일치(greedy) 선택 항목의 개수
최솟값 100 및 BlockSizeBCD
(디폴트 값) | 1에서 BlockSizeBCD
까지의 범위 내에 있는 정수 값
블록 좌표 하강법("bcd"
)의 최대 일치(greedy) 선택 항목의 개수로, 1에서 BlockSizeBCD
까지의 범위 내에 있는 정수로 지정됩니다.
예: NumGreedyBCD=150
데이터형: double
ToleranceBCD
— 기울기 노름에 대한 상대 허용오차
1e-3
(디폴트 값) | 양의 스칼라
블록 좌표 하강법("bcd"
) 반복을 종료하는 데 사용되는 기울기 노름에 대한 상대 허용오차로, 양의 스칼라로 지정됩니다.
예: ToleranceBCD=0.002
데이터형: double
StepToleranceBCD
— 스텝 크기에 대한 절대 허용오차
1e-3
(디폴트 값) | 양의 스칼라
블록 좌표 하강법("bcd"
) 반복을 종료하는 데 사용되는 스텝 크기에 대한 절대 허용오차로, 양의 스칼라로 지정됩니다.
예: StepToleranceBCD=0.002
데이터형: double
IterationLimitBCD
— 최대 BCD 반복 횟수
1000000
(디폴트 값) | 양의 정수
블록 좌표 하강법("bcd"
) 반복의 최대 횟수로, 양의 정수로 지정됩니다.
예: IterationLimitBCD=10000
데이터형: double
Optimizer
— 모수 추정에 사용할 최적화 함수
'quasinewton'
(디폴트 값) | 'lbfgs'
| 'fminsearch'
| 'fminunc'
| 'fmincon'
모수 추정에 사용할 최적화 함수로, 다음 표에 나와 있는 값 중 하나로 지정됩니다.
값 | 설명 |
---|---|
'quasinewton' | 헤세 행렬에 대한 조밀한 대칭 랭크 1 기반 준뉴턴 근사 |
'lbfgs' | 헤세 행렬에 대한 LBFGS 기반 준뉴턴 근사 |
'fminsearch' | 라가리아스(Lagarias) 등 [5]의 단체(Simplex) 탐색 방법을 사용한 제약 조건이 없는 비선형 최적화 |
'fminunc' | 제약 조건이 없는 비선형 최적화(Optimization Toolbox™ 라이선스 필요) |
'fmincon' | 제약 조건이 있는 비선형 최적화(Optimization Toolbox 라이선스 필요) |
최적화 함수에 대한 자세한 내용은 알고리즘 항목을 참조하십시오.
예: 'Optimizer','fmincon'
OptimizerOptions
— 최적화 함수 옵션
구조체 | 객체
Optimizer
이름-값 인수로 설정하는 최적화 함수 옵션으로, optimset
, statset("fitrgp")
또는 optimoptions
로 생성되는 구조체 또는 객체로 지정됩니다.
최적화 함수 | 최적화 함수 옵션을 생성하는 함수 |
---|---|
"fminsearch" | optimset (구조체) |
"quasinewton" 또는 "lbfgs" | statset("fitrgp") (구조체) |
"fminunc" 또는 "fmincon" | optimoptions (객체) |
디폴트 옵션은 지정된 최적화 함수에 따라 달라집니다.
예: OptimizerOptions=opt
InitialStepSize
— 초기 스텝 크기
[]
(디폴트 값) | 양의 실수형 스칼라 | "auto"
초기 스텝 크기로, 양의 실수형 스칼라 또는 "auto"
로 지정됩니다.
InitialStepSize
는 최적화 함수가 "quasinewton"
또는 "lbfgs"
인 경우 첫 번째 최적화 스텝의 근사 최대 절댓값입니다. 초기 스텝 크기를 통해 최적화 중에 초기 헤세 행렬에 대한 근삿값을 구할 수 있습니다.
기본적으로, 훈련 함수는 초기 스텝 크기를 사용하여 초기 헤세 행렬에 대한 근삿값을 구하지 않습니다. 초기 스텝 크기를 사용하려면, InitialStepSize
이름-값 인수 값을 설정하거나 자동으로 값을 구하도록 InitialStepSize="auto"
를 지정하십시오. "auto"
에 대한 자세한 내용은 알고리즘 항목을 참조하십시오.
예: InitialStepSize="auto"
CrossVal
— 교차 검증 여부 표시자
'off'
(디폴트 값) | 'on'
교차 검증 여부 표시자로, 'off'
또는 'on'
으로 지정됩니다. 'on'
이면 fitrgp
가 10겹 교차 검증된 GPR 모델을 반환합니다.
KFold
, Holdout
, Leaveout
또는 CVPartition
이름-값 쌍의 인수 중 하나를 사용하여 디폴트 교차 검증 설정을 변경할 수 있습니다. 이러한 이름-값 쌍의 인수는 한 번에 하나만 사용할 수 있습니다.
또는 모델에 crossval
방법을 사용할 수 있습니다.
예: 'CrossVal','on'
Holdout
— 검정에 사용할 데이터의 비율
범위 0~1 내의 스칼라 값
홀드아웃 검증에서 검정에 사용할 데이터의 비율로, 0~1 내의 스칼라 값으로 지정됩니다. 'Holdout',p
를 지정하면 소프트웨어가 다음 동작을 수행합니다.
1. 데이터의 p*100%를 무작위로 선택하여 검증 데이터용으로 남겨두고 나머지 데이터를 사용하여 모델을 훈련시킵니다.
2. 훈련된 간소 모델을 cvgprMdl.Trained
에 저장합니다.
예: 'Holdout', 0.3
은 검정에 데이터의 30%를 사용하고 훈련에 데이터의 70%를 사용합니다.
Holdout
을 지정할 경우 CVPartition
, KFold
또는 Leaveout
을 지정할 수 없습니다.
데이터형: double
KFold
— 겹의 개수
10 (디폴트 값) | 양의 정수 값
교차 검증된 GPR 모델에 사용할 겹의 개수로, 양의 정수 값으로 지정됩니다. KFold
는 1보다 커야 합니다. 'KFold',k
를 지정하면 소프트웨어가 다음 동작을 수행합니다.
1. 데이터를 k개 세트로 임의로 분할합니다.
2. 각 세트마다 해당 세트를 검정 데이터로 남겨두고 나머지 k – 1개의 세트를 사용하여 모델을 훈련시킵니다.
3. cvgprMdl.Trained
의 k×1 셀형 배열의 셀에 k개의 훈련된 간소 모델을 저장합니다.
예: 'KFold',5
는 교차 검증에 5겹을 사용합니다. 즉, 각각의 겹을 검정 데이터로 사용하고 나머지 4겹으로 모델을 훈련시킵니다.
KFold
를 지정할 경우 CVPartition
, Holdout
또는 Leaveout
을 지정할 수 없습니다.
데이터형: double
Leaveout
— 리브-원-아웃 교차 검증 여부 표시자
'off'
(디폴트 값) | 'on'
리브-원-아웃 교차 검증 여부 표시자로, 'off'
또는 'on'
으로 지정됩니다.
'Leaveout','on'
을 지정하는 경우, n개 관측값 각각에 대해 소프트웨어가 다음 동작을 수행합니다.
1. 관측값을 검정 데이터로 남겨두고 나머지 n – 1개 관측값을 사용하여 모델을 훈련시킵니다.
2. n×1 셀형 배열 cvgprMdl.Trained
의 셀에 훈련된 간소 모델을 저장합니다.
예: 'Leaveout','on'
Leaveout
을 지정할 경우 CVPartition
, Holdout
또는 KFold
를 지정할 수 없습니다.
OptimizeHyperparameters
— 최적화할 모수
'none'
(디폴트 값) | 'auto'
| 'all'
| 적합한 모수 이름으로 구성된 string형 배열 또는 셀형 배열 | optimizableVariable
객체로 구성된 벡터
최적화할 모수로, 다음 값 중 하나로 지정됩니다.
'none'
— 최적화하지 않습니다.'auto'
—{'Sigma','Standardize'}
를 사용합니다.'all'
— 모든 적합한 모수를 최적화하며, 이는{'BasisFunction','KernelFunction','KernelScale','Sigma','Standardize'}
와 동일합니다.적합한 모수 이름으로 구성된 string형 배열 또는 셀형 배열.
optimizableVariable
객체로 구성된 벡터. 일반적으로hyperparameters
의 출력값입니다.
최적화는 모수를 변경하여 fitrgp
에 대한 교차 검증 손실(오차)을 최소화하려고 합니다. 교차 검증 유형과 최적화의 기타 측면을 제어하려면 HyperparameterOptimizationOptions
이름-값 쌍을 사용하십시오.
참고
OptimizeHyperparameters
값은 다른 이름-값 인수를 사용하여 지정하는 모든 값을 재정의합니다. 예를 들어 OptimizeHyperparameters
를 "auto"
로 설정하면 fitrgp
함수는 "auto"
옵션에 대응되는 하이퍼파라미터를 최적화하고 하이퍼파라미터에 대해 지정된 값을 모두 무시합니다.
fitrgp
에 대한 적합한 모수는 다음과 같습니다.
BasisFunction
—fitrgp
가'constant'
,'none'
,'linear'
,'pureQuadratic'
중에서 탐색을 수행합니다.KernelFunction
—fitrgp
가'ardexponential'
,'ardmatern32'
,'ardmatern52'
,'ardrationalquadratic'
,'ardsquaredexponential'
,'exponential'
,'matern32'
,'matern52'
,'rationalquadratic'
,'squaredexponential'
중에서 탐색을 수행합니다.KernelScale
—fitrgp
가KernelParameters
인수를 사용하여 피팅 중에 일정하게 유지되는 커널 스케일 모수의 값을 지정합니다. 이 경우, 모든 입력 차원이 동일한KernelScale
값을 갖도록 제한됩니다.fitrgp
는 범위[1e-3,1e3]
내에서 로그 스케일링된 양의 값을 대상으로 탐색을 수행합니다.KernelScale
은 어떠한 ARD 커널에 대해서도 최적화될 수 없습니다.Sigma
—fitrgp
는 범위[1e-4,max(1e-3,10*ResponseStd)]
내에서 로그 스케일링된 양의 값을 대상으로 탐색을 수행하며, 이 경우 다음과 같습니다.ResponseStd = std(y)
.내부적으로,
fitrgp
는ConstantSigma
이름-값 쌍을true
로 설정하여Sigma
의 값이 피팅 중에 일정하게 유지됩니다.Standardize
—fitrgp
가true
및false
중에서 탐색을 수행합니다.
디폴트가 아닌 값을 가지는 optimizableVariable
객체로 구성된 벡터를 전달하여 디폴트가 아닌 모수를 설정합니다. 예를 들면 다음과 같습니다.
load fisheriris params = hyperparameters('fitrgp',meas,species); params(1).Range = [1e-4,1e6];
params
를 OptimizeHyperparameters
의 값으로 전달합니다.
기본적으로, 반복 표시가 명령줄에 표시되고, 최적화에 지정된 하이퍼파라미터 개수에 따라 플롯이 표시됩니다. 최적화와 플롯에 대해 목적 함수는 log(1 + cross-validation loss)입니다. 반복 표시를 제어하려면 'HyperparameterOptimizationOptions'
이름-값 인수에 대한 Verbose
필드를 설정하십시오. 플롯을 제어하려면 'HyperparameterOptimizationOptions'
이름-값 인수에 대한 ShowPlots
필드를 설정하십시오.
예제는 GPR 회귀 최적화하기 항목을 참조하십시오.
예: 'auto'
HyperparameterOptimizationOptions
— 최적화에 사용할 옵션
구조체
최적화에 사용할 옵션으로, 구조체로 지정됩니다. 이 인수는 OptimizeHyperparameters
이름-값 인수의 효과를 수정합니다. 이 구조체에 포함된 모든 필드는 선택 사항입니다.
필드 이름 | 값 | 디폴트 값 |
---|---|---|
Optimizer |
| 'bayesopt' |
AcquisitionFunctionName |
최적화는 목적 함수의 런타임에 종속적이기 때문에 이름에 | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | 목적 함수 실행의 최대 횟수입니다. | 'bayesopt' 및 'randomsearch' 의 경우 30 이고, 'gridsearch' 의 경우 그리드 전체입니다. |
MaxTime | 시간 제한으로, 양의 실수형 스칼라로 지정됩니다. 시간 제한은 초 단위이며, | Inf |
NumGridDivisions | 'gridsearch' 의 경우, 각 차원의 값 개수입니다. 이 값은 각 차원에 대한 값의 개수를 제공하는 양의 정수로 구성된 벡터 또는 모든 차원에 적용되는 스칼라일 수 있습니다. 이 필드는 범주형 변수의 경우 무시됩니다. | 10 |
ShowPlots | 플롯 표시 여부를 나타내는 논리값입니다. true 인 경우, 이 필드는 반복 횟수에 대해 최선의 관측된 목적 함수 값을 플로팅합니다. 베이즈 최적화를 사용하는 경우(Optimizer 가 'bayesopt' 임), 이 필드는 최선의 추정된 목적 함수 값도 플로팅합니다. 최선의 관측된 목적 함수 값과 최선의 추정된 목적 함수 값은 각각 반복 표시의 BestSoFar (observed) 열과 BestSoFar (estim.) 열의 값에 대응됩니다. Mdl.HyperparameterOptimizationResults 의 속성 ObjectiveMinimumTrace 및 EstimatedObjectiveMinimumTrace 에서 이러한 값을 확인할 수 있습니다. 문제에 베이즈 최적화를 위한 하나 또는 두 개의 최적화 모수가 있는 경우, ShowPlots 는 이 모수에 대해서도 목적 함수의 모델을 플로팅합니다. | true |
SaveIntermediateResults | Optimizer 가 'bayesopt' 인 경우 결과를 저장할지 여부를 나타내는 논리값입니다. true 인 경우, 이 필드는 각 반복마다 'BayesoptResults' 라는 이름의 작업 공간 변수를 덮어씁니다. 변수는 BayesianOptimization 객체입니다. | false |
Verbose | 명령줄에 표시되는 내용:
자세한 내용은 | 1 |
UseParallel | 베이즈 최적화를 병렬로 실행할지 여부를 나타내는 논리값으로, Parallel Computing Toolbox™가 필요합니다. 병렬 시간 재현이 불가능하기 때문에, 병렬 베이즈 최적화에서 반드시 재현 가능한 결과를 산출하지는 않습니다. 자세한 내용은 Parallel Bayesian Optimization 항목을 참조하십시오. | false |
Repartition | 매 반복 시 교차 검증을 다시 분할할지 여부를 나타내는 논리값입니다. 이 필드의 값이
| false |
다음과 같은 3개 옵션 중 하나만 사용합니다. | ||
CVPartition | cvpartition 으로 생성되는 cvpartition 객체 | 교차 검증 필드를 지정하지 않을 경우 'Kfold',5 |
Holdout | 홀드아웃 비율을 나타내는 범위 (0,1) 내 스칼라 | |
Kfold | 1보다 큰 정수 |
예: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)
데이터형: struct
PredictorNames
— 예측 변수 이름
고유한 이름으로 구성된 string형 배열 | 고유한 문자형 벡터로 구성된 셀형 배열
예측 변수 이름으로, 고유한 이름으로 구성된 string형 배열 또는 고유한 문자형 벡터로 구성된 셀형 배열로 지정됩니다. 'PredictorNames'
의 기능은 훈련 데이터를 어떤 방식으로 제공하느냐에 따라 달라집니다.
X
와y
를 제공하는 경우,'PredictorNames'
를 사용하여X
이름에 예측 변수를 제공할 수 있습니다.PredictorNames
의 이름의 순서는X
의 열 순서와 일치해야 합니다. 즉,PredictorNames{1}
은X(:,1)
의 이름이고,PredictorNames{2}
는X(:,2)
의 이름이 되는 식입니다. 또한,size(X,2)
와numel(PredictorNames)
는 같아야 합니다.기본적으로
PredictorNames
는{'x1','x2',...}
입니다.
Tbl
을 제공하는 경우,'PredictorNames'
를 사용하여 훈련에 사용할 예측 변수를 선택할 수 있습니다. 즉,fitrgp
함수는PredictorNames
의 예측 변수와 이에 대한 응답 변수만을 훈련에 사용합니다.PredictorNames
는Tbl.Properties.VariableNames
의 부분 집합이어야 하므로 응답 변수의 이름은 포함할 수 없습니다.기본적으로,
PredictorNames
는 모든 예측 변수의 이름을 포함합니다.'PredictorNames'
또는formula
중 하나만 사용하여 훈련에 사용할 예측 변수를 지정하는 것이 좋습니다.
예: 'PredictorNames',{'PedalLength','PedalWidth'}
데이터형: string
| cell
ResponseName
— 응답 변수 이름
"Y"
(디폴트 값) | 문자형 벡터 | string형 스칼라
응답 변수 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.
Y
를 제공하는 경우,ResponseName
을 사용하여 응답 변수의 이름을 지정할 수 있습니다.ResponseVarName
또는formula
를 제공하는 경우에는ResponseName
을 사용할 수 없습니다.
예: "ResponseName","response"
데이터형: char
| string
Verbose
— 세부 정보 표시 수준
0
(디폴트 값) | 1
세부 정보 표시 수준으로, 0
또는 1
로 지정됩니다.
0
— 훈련 함수는 활성 세트 선택 및 블록 좌표 하강법과 관련된 진단 메시지를 표시하지 않지만OptimizerOptions
의Display
값에 따라 모수 추정과 관련된 메시지를 표시합니다.1
— 훈련 함수는 모수 추정, 활성 세트 선택, 블록 좌표 하강법과 관련된 반복 진단 메시지를 표시합니다.
예: Verbose=1
CacheSize
— 메가바이트 단위의 캐시 크기
1000
(디폴트 값) | 양의 스칼라
메가바이트(MB) 단위의 캐시 크기로, 양의 스칼라로 지정됩니다. 캐시 크기는 피팅과 활성 세트 선택에 필요한 메모리 외에 사용 가능한 여분의 메모리입니다. 훈련 함수는 CacheSize
를 사용하여 다음을 수행합니다.
모수를 추정할 때 점 간 거리를 캐시할지 여부를 결정합니다.
블록 좌표 하강법과 예측 수행을 위해 행렬 벡터 곱이 계산되는 방법을 결정합니다.
예: CacheSize=2000
데이터형: double
출력 인수
gprMdl
— 가우스 과정 회귀 모델
RegressionGP
객체 | RegressionPartitionedGP
객체
가우스 과정 회귀 모델로, RegressionGP
객체 또는 RegressionPartitionedGP
객체로 반환됩니다.
교차 검증을 수행하는 경우, 즉
'Crossval'
,'KFold'
,'Holdout'
,'Leaveout'
또는'CVPartition'
이름-값 인수 중 하나를 사용하는 경우gprMdl
은RegressionPartitionedGP
객체입니다.kfoldPredict
를 사용하여fitrgp
가 훈련하는 동안 홀드아웃한 관측값에 대한 응답 변수를 예측할 수 있습니다.kfoldPredict
는 해당 관측값 없이 훈련된 모델을 사용하여 각 관측값에 대한 응답 변수를 예측합니다. 교차 검증된 모델에 대해서는 예측 구간을 계산할 수 없습니다.교차 검증을 수행하지 않을 경우
gprMdl
은RegressionGP
객체입니다.predict
를 사용하여 새 관측값에 대한 응답 변수를 예측하고resubPredict
를 사용하여 훈련 관측값에 대한 응답 변수를 예측할 수 있습니다.predict
및resubPredict
를 사용하여 예측 구간을 계산할 수도 있습니다.
세부 정보
활성 세트 선택 및 모수 추정
부분 데이터 근사, 부분 회귀 변수 근사 또는 완전히 독립적인 조건부 근사 피팅 방법(FitMethod
가 'sd'
, 'sr'
또는 'fic'
임)의 경우, 활성 세트(또는 유도 입력 세트)를 지정하지 않으면 fitrgp
가 일련의 반복에서 활성 세트를 선택하고 모수 추정값을 계산합니다.
첫 번째 반복에서 소프트웨어는 벡터 η0 = [β0,σ0,θ0]의 초기 모수 값을 사용하여 활성 세트 A1을 선택합니다. η0을 초기값으로 사용하고 A1을 사용하여 GPR 주변 로그 가능도 또는 해당 근삿값을 최대화하여 새 모수 추정값 η1을 계산합니다. 그런 다음, η1과 A1을 사용하여 새 로그 가능도 L1을 계산합니다.
두 번째 반복에서 소프트웨어는 η1의 모수 값을 사용하여 활성 세트 A2를 선택합니다. 그런 다음, η1을 초기값으로 사용하고 A2를 사용하여 GPR 주변 로그 가능도 또는 해당 근삿값을 최대화하고 새 모수 값 η2를 추정합니다. 다음으로, η2와 A2를 사용하여 새 로그 가능도 값 L2를 계산합니다.
다음 표에는 각 반복과 해당 반복에서의 계산이 요약되어 있습니다.
반복 횟수 | 활성 세트 | 모수 벡터 | 로그 가능도 |
---|---|---|---|
1 | A1 | η1 | L1 |
2 | A2 | η2 | L2 |
3 | A3 | η3 | L3 |
… | … | … | … |
지정된 반복 횟수 동안 유사하게 반복이 수행됩니다. NumActiveSetRepeats
이름-값 인수를 사용하여 활성 세트 선택 시 수행할 반복 실험 수를 지정할 수 있습니다.
팁
fitrgp
는 피팅, 예측, 활성 세트 선택 방법의 모든 조합을 허용합니다. 예측된 응답의 표준편차를 계산할 수 없고 이로 인해 예측 구간 역시 계산할 수 없는 경우가 있을 수 있습니다.predict
를 참조하십시오. 또한, 경우에 따라 정확한 방법을 사용하면 훈련 데이터의 크기로 인해 시간이 오래 걸릴 수 있습니다.PredictorNames
속성은 원래 예측 변수 이름마다 하나의 요소를 저장합니다. 예를 들어, 예측 변수가 3개 있고 그중 하나가 3개 수준을 갖는 범주형 변수인 경우PredictorNames
는 문자형 벡터로 구성된 1×3 셀형 배열입니다.ExpandedPredictorNames
속성은 가변수를 포함하여 예측 변수마다 하나의 요소를 저장합니다. 예를 들어, 예측 변수가 3개 있고 그중 하나가 3개 수준을 갖는 범주형 변수인 경우ExpandedPredictorNames
는 문자형 벡터로 구성된 1×5 셀형 배열입니다.마찬가지로,
Beta
속성은 가변수를 포함하여 예측 변수마다 하나의 베타 계수를 저장합니다.X
속성은 훈련 데이터를 원래 입력된 대로 저장합니다. 가변수는 포함하지 않습니다.fitrgp
에서 헤세 행렬 근삿값을 초기화하는 기본 접근법은 다수의 예측 변수를 갖는 ARD 커널을 사용하는 경우와 같이 다수의 커널 모수를 갖는 GPR 모델이 있는 경우 느릴 수 있습니다. 이 경우,'auto'
또는 초기 스텝 크기의 값을 지정하는 것이 좋습니다.반복 진단 메시지를 표시하려면
'Verbose',1
을 선택하고 디폴트fitrgp
최적화로 LBFGS 또는 준뉴턴 최적화 함수를 사용하여 GPR 모델 훈련을 시작할 수 있습니다. 몇 초 후 반복 진단 메시지가 표시되지 않으면 헤세 행렬 근삿값을 초기화하는 데 너무 많은 시간이 걸리는 것일 수 있습니다. 이 경우, 훈련을 다시 시작하고 초기 스텝 크기를 사용하여 최적화 속도를 높여 보십시오.모델을 훈련시킨 후에는 새 데이터에 대한 응답 변수를 예측하는 C/C++ 코드를 생성할 수 있습니다. C/C++ 코드를 생성하려면 MATLAB Coder™가 필요합니다. 자세한 내용은 Introduction to Code Generation 항목을 참조하십시오. .
알고리즘
GPR 모델 피팅 과정에는 데이터에서 다음과 같은 모델 모수를 추정하는 작업이 포함됩니다.
벡터 의 커널 모수로 모수화되는 공분산 함수 (Kernel (Covariance) Function Options 참조)
잡음 분산
고정된 기저 함수의 계수 벡터
KernelParameters
이름-값 인수의 값은 신호 표준편차 와 특성 길이 스케일 에 대한 초기값으로 구성된 벡터입니다. 이 값을 사용하여 커널 모수가 결정됩니다. 이와 유사하게Sigma
이름-값 인수는 잡음 표준편차 에 대한 초기값을 포함합니다.최적화하는 동안 잡음 표준편차와 커널 모수에 대한 초기값을 사용하여 비제약 초기 모수 값 으로 구성된 벡터가 생성됩니다.
와 에 대한 추정된 값에서
Beta
이름-값 인수로 지정된 명시적 기저 계수 가 해석적으로 판별됩니다. 따라서 수치 최적화를 초기화할 때 는 벡터에 나타나지 않습니다.참고
GPR 모델에 대한 모수의 추정값을 지정하지 않을 경우
Beta
이름-값 인수 값과 기타 초기 모수 값이 알려진 GPR 모수 값으로 사용됩니다(Beta
참조). 그 외 모든 경우,Beta
값은 목적 함수에서 해석적으로 최적화됩니다.준뉴턴 최적화 함수는 헤세 행렬에 대한 조밀한 대칭 랭크 1 기반(SR1) 준뉴턴 근사와 함께 trust-region 방법을 사용합니다. LBFGS 최적화 함수는 헤세 행렬에 대한 LBFGS(limited-memory Broyden-Fletcher-Goldfarb-Shanno) 준뉴턴 근사와 함께 표준 직선 탐색 방법을 사용합니다. Nocedal과 Wright의 문헌 [6]을 참조하십시오.
InitialStepSize
이름-값 인수를"auto"
로 설정하는 경우 을 사용하여 초기 스텝 크기 가 결정됩니다.은 초기 스텝 벡터이고 은 비제약 초기 모수 값으로 구성된 벡터입니다.
최적화하는 동안 다음과 같이 초기 스텝 크기 가 사용됩니다.
초기 스텝 크기와 함께
Optimizer="quasinewton"
을 지정하는 경우 초기 헤세 행렬 근삿값은 입니다.초기 스텝 크기와 함께
Optimizer="lbfgs"
를 지정하는 경우 초기 역헤세 행렬 근삿값은 입니다.은 초기 기울기 벡터이고 는 단위 행렬입니다.
참고 문헌
[1] Nash, W.J., T. L. Sellers, S. R. Talbot, A. J. Cawthorn, and W. B. Ford. "The Population Biology of Abalone (Haliotis species) in Tasmania. I. Blacklip Abalone (H. rubra) from the North Coast and Islands of Bass Strait." Sea Fisheries Division, Technical Report No. 48, 1994.
[2] Waugh, S. "Extending and Benchmarking Cascade-Correlation: Extensions to the Cascade-Correlation Architecture and Benchmarking of Feed-forward Supervised Artificial Neural Networks." University of Tasmania Department of Computer Science thesis, 1995.
[3] Lichman, M. UCI Machine Learning Repository, Irvine, CA: University of California, School of Information and Computer Science, 2013. http://archive.ics.uci.edu/ml.
[4] Rasmussen, C. E. and C. K. I. Williams. Gaussian Processes for Machine Learning. MIT Press. Cambridge, Massachusetts, 2006.
[5] Lagarias, J. C., J. A. Reeds, M. H. Wright, and P. E. Wright. "Convergence Properties of the Nelder-Mead Simplex Method in Low Dimensions." SIAM Journal of Optimization. Vol. 9, Number 1, 1998, pp. 112–147.
[6] Nocedal, J. and S. J. Wright. Numerical Optimization, Second Edition. Springer Series in Operations Research, Springer Verlag, 2006.
확장 기능
자동 병렬 지원
Parallel Computing Toolbox™를 사용해 자동 병렬 계산을 실행하여 코드 실행 속도를 높일 수 있습니다.
병렬 하이퍼파라미터 최적화를 수행하려면 fitrgp
함수에 대한 호출에 'HyperparameterOptimizationOptions', struct('UseParallel',true)
이름-값 인수를 사용하십시오.
병렬 하이퍼파라미터 최적화에 대한 자세한 내용은 Parallel Bayesian Optimization 항목을 참조하십시오.
병렬 연산에 대한 일반적인 내용은 자동 병렬 연산을 지원하는 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2015b에 개발됨R2023b: OptimizeHyperparameters
의 "auto"
옵션에 Standardize
가 포함됨
R2023b부터, OptimizeHyperparameters
값을 "auto"
로 지정하면 fitrgp
함수는 Standardize
를 최적화 가능한 하이퍼파라미터로 포함합니다.
R2023b: GPR 모델을 최적화는 동안 KernelScale
하이퍼파라미터 탐색 범위가 예측 변수 데이터에 따라 달라지지 않음
R2023b부터, fitrgp
함수가 디폴트 탐색 범위 [1e-3,1e3]
을 사용하여 가우스 과정 회귀(GPR) 모델의 커널 스케일 모수를 최적화합니다. 즉, OptimizeHyperparameters
이름-값 인수를 사용하여 GPR 하이퍼파라미터 KernelScale
을 최적화하도록 지정하면 함수는 범위 [1e-3,1e3]
내에서 로그 스케일링된 양수 값들을 탐색합니다.
이전 릴리스에서 KernelScale
하이퍼파라미터의 디폴트 탐색 범위는 [1e-3*MaxPredictorRange,MaxPredictorRange]
였으며, 이때 MaxPredictorRange = max(max(X) - min(X))
입니다.
R2022b: 교차 검증된 가우스 과정 회귀 모델은 RegressionPartitionedGP
객체임
R2022b부터, 교차 검증된 가우스 과정 회귀(GPR) 모델은 RegressionPartitionedGP
객체입니다. 이전 릴리스에서 교차 검증된 GPR 모델은 RegressionPartitionedModel
객체였습니다.
다음 두 가지 방법으로 RegressionPartitionedGP
객체를 생성할 수 있습니다.
crossval
객체 함수를 사용하여 GPR 모델 객체RegressionGP
에서 교차 검증된 모델을 만듭니다.fitrgp
함수를 사용하고 이름-값 인수CrossVal
,CVPartition
,Holdout
,KFold
또는Leaveout
중 하나를 지정하여 교차 검증된 모델을 만듭니다.
전체 또는 교차 검증된 GPR 모델을 먼저 훈련시키든 상관없이 fitrgp
에 대한 호출에서 ActiveSet
값을 지정할 수 없습니다.
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)