이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
fitrsvm
서포트 벡터 머신 회귀 모델 피팅
구문
설명
fitrsvm
은 저차원에서 중간 차원까지의 예측 변수 데이터 세트에 대해 서포트 벡터 머신(SVM) 회귀 모델을 훈련시키거나 교차 검증합니다. fitrsvm
은 커널 함수를 사용하여 예측 변수 데이터를 매핑하는 것을 지원합니다. 또한 SMO, ISDA 또는 목적 함수 최소화를 위한 2차 계획법을 사용하는 L1 소프트 마진 최소화를 지원합니다.
고차원 데이터 세트, 즉 많은 예측 변수를 포함하는 데이터 세트에 대해 선형 SVM 회귀 모델을 훈련시키려면 fitrlinear
를 대신 사용하십시오.
이진 분류를 위해 SVM 모델을 훈련시키려면 저차원에서 중간 차원까지의 예측 변수 데이터 세트의 경우 fitcsvm
을 참조하고 고차원 데이터 세트의 경우 fitclinear
를 참조하십시오.
은 테이블 Mdl
= fitrsvm(Tbl
,ResponseVarName
)Tbl
에 포함된 예측 변수 값과 Tbl.ResponseVarName
에 포함된 응답 변수 값을 사용하여 훈련된 전체 서포트 벡터 머신(SVM) 회귀 모델 Mdl
을 반환합니다.
는 위에 열거된 구문에 하나 이상의 이름-값 쌍의 인수로 지정되는 추가 옵션을 사용하여 SVM 회귀 모델을 반환합니다. 예를 들어, 커널 함수를 지정하거나 교차 검증된 모델을 훈련시킬 수 있습니다.Mdl
= fitrsvm(___,Name,Value
)
예제
선형 서포트 벡터 머신 회귀 모델 훈련시키기
행렬에 저장된 표본 데이터를 사용하여 서포트 벡터 머신(SVM) 회귀 모델을 훈련시킵니다.
carsmall
데이터 세트를 불러옵니다.
load carsmall rng 'default' % For reproducibility
Horsepower
와 Weight
를 예측 변수(X
)로 지정하고 MPG
를 응답 변수(Y
)로 지정합니다.
X = [Horsepower,Weight]; Y = MPG;
디폴트 SVM 회귀 모델을 훈련시킵니다.
Mdl = fitrsvm(X,Y)
Mdl = RegressionSVM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Alpha: [75x1 double] Bias: 57.3800 KernelParameters: [1x1 struct] NumObservations: 94 BoxConstraints: [94x1 double] ConvergenceInfo: [1x1 struct] IsSupportVector: [94x1 logical] Solver: 'SMO'
Mdl
은 훈련된 RegressionSVM
모델입니다.
모델이 수렴하는지 확인합니다.
Mdl.ConvergenceInfo.Converged
ans = logical
0
0
은 모델이 수렴하지 않았음을 나타냅니다.
표준화된 데이터를 사용하여 모델을 다시 훈련시킵니다.
MdlStd = fitrsvm(X,Y,'Standardize',true)
MdlStd = RegressionSVM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Alpha: [77x1 double] Bias: 22.9131 KernelParameters: [1x1 struct] Mu: [109.3441 2.9625e+03] Sigma: [45.3545 805.9668] NumObservations: 94 BoxConstraints: [94x1 double] ConvergenceInfo: [1x1 struct] IsSupportVector: [94x1 logical] Solver: 'SMO'
모델이 수렴하는지 확인합니다.
MdlStd.ConvergenceInfo.Converged
ans = logical
1
1
은 모델이 수렴했음을 나타냅니다.
새 모델에 대해 재대입(표본내) 평균제곱오차를 계산합니다.
lStd = resubLoss(MdlStd)
lStd = 16.8551
서포트 벡터 머신 회귀 모델 훈련시키기
UCI Machine Learning Repository의 전복 데이터를 사용하여 서포트 벡터 머신 회귀 모델을 훈련시킵니다.
데이터를 다운로드한 후 'abalone.csv'
라는 이름으로 현재 폴더에 저장합니다.
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data'; websave('abalone.csv',url);
데이터를 테이블에 읽어 들입니다. 변수 이름을 지정합니다.
varnames = {'Sex'; 'Length'; 'Diameter'; 'Height'; 'Whole_weight';... 'Shucked_weight'; 'Viscera_weight'; 'Shell_weight'; 'Rings'}; Tbl = readtable('abalone.csv','Filetype','text','ReadVariableNames',false); Tbl.Properties.VariableNames = varnames;
표본 데이터는 4177개의 관측값을 포함합니다. 모든 예측 변수는 Sex
를 제외하고 모두 연속형 변수입니다. Sex는 가능한 값으로 'M'
(수컷), 'F'
(암컷), 'I'
(유생)를 갖는 범주형 변수입니다. 전복 껍질에 새겨진 원형 무늬의 개수(Rings
에 저장되어 있음)를 예측하고 물리적 측정값을 사용하여 나이를 확인하는 것이 목적입니다.
자동 커널 스케일을 갖는 가우스 커널 함수를 사용하여 SVM 회귀 모델을 훈련시킵니다. 데이터를 표준화합니다.
rng default % For reproducibility Mdl = fitrsvm(Tbl,'Rings','KernelFunction','gaussian','KernelScale','auto',... 'Standardize',true)
Mdl = RegressionSVM PredictorNames: {'Sex' 'Length' 'Diameter' 'Height' 'Whole_weight' 'Shucked_weight' 'Viscera_weight' 'Shell_weight'} ResponseName: 'Rings' CategoricalPredictors: 1 ResponseTransform: 'none' Alpha: [3635×1 double] Bias: 10.8144 KernelParameters: [1×1 struct] Mu: [0 0 0 0.5240 0.4079 0.1395 0.8287 0.3594 0.1806 0.2388] Sigma: [1 1 1 0.1201 0.0992 0.0418 0.4904 0.2220 0.1096 0.1392] NumObservations: 4177 BoxConstraints: [4177×1 double] ConvergenceInfo: [1×1 struct] IsSupportVector: [4177×1 logical] Solver: 'SMO' Properties, Methods
명령 창에 Mdl
이 훈련된 RegressionSVM
모델로 표시되고 속성 목록이 표시됩니다.
점 표기법을 사용하여 Mdl
의 속성을 표시합니다. 예를 들어, 모델이 수렴했는지 여부와 모델이 몇 회의 반복을 완료했는지를 확인합니다.
conv = Mdl.ConvergenceInfo.Converged
conv = logical
1
iter = Mdl.NumIterations
iter = 2759
반환된 결과는 모델이 2759회 반복 후에 수렴했음을 나타냅니다.
SVM 회귀 모델 교차 검증하기
carsmall
데이터 세트를 불러옵니다.
load carsmall rng 'default' % For reproducibility
Horsepower
와 Weight
를 예측 변수(X
)로 지정하고 MPG
를 응답 변수(Y
)로 지정합니다.
X = [Horsepower Weight]; Y = MPG;
5겹 교차 검증을 사용하여 2개의 SVM 회귀 모델을 교차 검증합니다. 두 모델에 대해 예측 변수를 표준화하도록 지정합니다. 한 모델은 디폴트 선형 커널을 사용하여 훈련하도록 지정하고, 다른 한 모델은 가우스 커널을 사용하도록 지정합니다.
MdlLin = fitrsvm(X,Y,'Standardize',true,'KFold',5)
MdlLin = RegressionPartitionedSVM CrossValidatedModel: 'SVM' PredictorNames: {'x1' 'x2'} ResponseName: 'Y' NumObservations: 94 KFold: 5 Partition: [1x1 cvpartition] ResponseTransform: 'none'
MdlGau = fitrsvm(X,Y,'Standardize',true,'KFold',5,'KernelFunction','gaussian')
MdlGau = RegressionPartitionedSVM CrossValidatedModel: 'SVM' PredictorNames: {'x1' 'x2'} ResponseName: 'Y' NumObservations: 94 KFold: 5 Partition: [1x1 cvpartition] ResponseTransform: 'none'
MdlLin.Trained
ans=5×1 cell array
{1x1 classreg.learning.regr.CompactRegressionSVM}
{1x1 classreg.learning.regr.CompactRegressionSVM}
{1x1 classreg.learning.regr.CompactRegressionSVM}
{1x1 classreg.learning.regr.CompactRegressionSVM}
{1x1 classreg.learning.regr.CompactRegressionSVM}
MdlLin
과 MdlGau
는 RegressionPartitionedSVM
교차 검증된 모델입니다. 각 모델의 Trained
속성은 CompactRegressionSVM
모델로 구성된 5×1 셀형 배열입니다. 셀에 포함된 모델은 1겹 관측값을 빼고 4겹 관측값에 대해 훈련한 결과를 저장합니다.
두 모델의 일반화 오차를 비교합니다. 이 경우 일반화 오차는 표본외 평균제곱오차입니다.
mseLin = kfoldLoss(MdlLin)
mseLin = 17.2987
mseGau = kfoldLoss(MdlGau)
mseGau = 16.5978
가우스 커널을 사용한 SVM 회귀 모델이 선형 커널을 사용한 모델보다 성능이 낫습니다.
전체 데이터 세트를 fitrsvm
으로 전달하여 예측을 수행하는 데 적합한 모델을 만들고, 모델 성능을 더 좋게 만들었던 모든 이름-값 쌍의 인수를 지정합니다. 단, 교차 검증 옵션은 지정하지 않습니다.
MdlGau = fitrsvm(X,Y,'Standardize',true,'KernelFunction','gaussian');
차량 집합의 MPG를 예측하기 위해 차량의 마력 및 중량 측정값을 포함하는 테이블과 Mdl
을 predict
에 전달합니다.
SVM 회귀 최적화하기
이 예제에서는 fitrsvm
을 사용하여 자동으로 하이퍼파라미터를 최적화하는 방법을 보여줍니다. 이 예제에서는 carsmall
데이터를 사용합니다.
carsmall
데이터 세트를 불러옵니다.
load carsmall
Horsepower
와 Weight
를 예측 변수(X
)로 지정하고 MPG
를 응답 변수(Y
)로 지정합니다.
X = [Horsepower Weight]; Y = MPG;
X
와 Y
의 행을 삭제합니다. 두 배열 모두 누락값을 가집니다.
R = rmmissing([X Y]); X = R(:,1:end-1); Y = R(:,end);
자동 하이퍼파라미터 최적화를 사용하여 5겹 교차 검증 손실을 최소화하는 하이퍼파라미터를 구합니다.
재현이 가능하도록 난수 시드값을 설정하고 'expected-improvement-plus'
획득 함수를 사용합니다.
rng default Mdl = fitrsvm(X,Y,'OptimizeHyperparameters','auto',... 'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName',... 'expected-improvement-plus'))
|===================================================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | BoxConstraint| KernelScale | Epsilon | Standardize | | | result | log(1+loss) | runtime | (observed) | (estim.) | | | | | |===================================================================================================================================| | 1 | Best | 2.935 | 0.61823 | 2.935 | 2.935 | 294.5 | 11.95 | 0.4572 | true | | 2 | Accept | 3.1111 | 0.12255 | 2.935 | 2.9768 | 0.3265 | 938.31 | 0.26184 | false | | 3 | Accept | 11.104 | 13.802 | 2.935 | 3.0267 | 439.19 | 0.047381 | 0.060061 | false | | 4 | Accept | 9.0938 | 14.509 | 2.935 | 2.9354 | 0.0086399 | 0.0027446 | 0.61439 | false | | 5 | Accept | 4.1957 | 0.24285 | 2.935 | 2.9354 | 0.042678 | 463.49 | 0.51289 | true | | 6 | Accept | 4.1988 | 0.19724 | 2.935 | 2.9355 | 23.091 | 0.21904 | 29.248 | true | | 7 | Accept | 4.1988 | 0.15779 | 2.935 | 2.9355 | 130.42 | 0.0010014 | 77.154 | true | | 8 | Accept | 4.1988 | 0.33115 | 2.935 | 2.9358 | 0.0019018 | 3.7389 | 81.645 | true | | 9 | Accept | 2.9657 | 0.14087 | 2.935 | 2.9353 | 50.48 | 1.8895 | 0.0092774 | true | | 10 | Accept | 4.1988 | 0.12158 | 2.935 | 2.9357 | 0.0010556 | 972.06 | 719.35 | false | | 11 | Best | 2.9329 | 0.1237 | 2.9329 | 2.9319 | 954.64 | 991.7 | 0.0098825 | false | | 12 | Accept | 2.9752 | 0.13881 | 2.9329 | 2.9324 | 558.61 | 22.677 | 0.0092798 | true | | 13 | Accept | 4.197 | 0.076754 | 2.9329 | 2.9315 | 0.0012485 | 981.45 | 0.0108 | false | | 14 | Accept | 2.9379 | 0.086396 | 2.9329 | 2.9322 | 988.74 | 3.08 | 0.14121 | true | | 15 | Accept | 4.1825 | 0.11408 | 2.9329 | 2.9312 | 986.48 | 970.39 | 0.053123 | true | | 16 | Best | 2.9264 | 0.10297 | 2.9264 | 2.9269 | 30.843 | 257.23 | 0.094026 | false | | 17 | Accept | 2.9465 | 0.19918 | 2.9264 | 2.9268 | 0.0010942 | 0.001003 | 0.14449 | true | | 18 | Accept | 4.1988 | 0.18188 | 2.9264 | 2.9275 | 29.454 | 669.19 | 508.64 | false | | 19 | Accept | 6.0027 | 10.856 | 2.9264 | 2.9272 | 568.56 | 0.0042859 | 0.0093077 | true | | 20 | Accept | 4.1988 | 0.24901 | 2.9264 | 2.927 | 0.0012201 | 0.0010958 | 792.12 | true | |===================================================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | BoxConstraint| KernelScale | Epsilon | Standardize | | | result | log(1+loss) | runtime | (observed) | (estim.) | | | | | |===================================================================================================================================| | 21 | Accept | 4.2071 | 0.23002 | 2.9264 | 2.927 | 0.0019084 | 6.6721 | 0.009295 | true | | 22 | Accept | 4.1988 | 0.070608 | 2.9264 | 2.927 | 941.47 | 86.12 | 806.48 | true | | 23 | Best | 2.9041 | 0.1329 | 2.9041 | 2.9037 | 18.528 | 558.97 | 0.010173 | false | | 24 | Accept | 2.966 | 0.090166 | 2.9041 | 2.9038 | 460.8 | 6.2394 | 0.0097641 | true | | 25 | Accept | 2.9158 | 0.14168 | 2.9041 | 2.9032 | 124.87 | 627.46 | 0.11174 | false | | 26 | Accept | 2.9417 | 0.091459 | 2.9041 | 2.9031 | 0.0010651 | 0.0066941 | 0.0095734 | true | | 27 | Accept | 2.9418 | 0.11926 | 2.9041 | 2.9031 | 0.001026 | 0.0013388 | 0.011524 | true | | 28 | Accept | 3.299 | 0.10753 | 2.9041 | 2.9032 | 0.0011384 | 0.14922 | 0.012052 | true | | 29 | Accept | 2.9502 | 0.10482 | 2.9041 | 2.9031 | 31.89 | 3.5197 | 0.15958 | true | | 30 | Accept | 2.9509 | 0.5413 | 2.9041 | 2.9032 | 885.18 | 307.02 | 0.0094396 | false | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 68.4468 seconds Total objective function evaluation time: 44.0024 Best observed feasible point: BoxConstraint KernelScale Epsilon Standardize _____________ ___________ ________ ___________ 18.528 558.97 0.010173 false Observed objective function value = 2.9041 Estimated objective function value = 2.9032 Function evaluation time = 0.1329 Best estimated feasible point (according to models): BoxConstraint KernelScale Epsilon Standardize _____________ ___________ ________ ___________ 18.528 558.97 0.010173 false Estimated objective function value = 2.9032 Estimated function evaluation time = 0.14529
Mdl = RegressionSVM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Alpha: [93x1 double] Bias: 46.6996 KernelParameters: [1x1 struct] NumObservations: 93 HyperparameterOptimizationResults: [1x1 BayesianOptimization] BoxConstraints: [93x1 double] ConvergenceInfo: [1x1 struct] IsSupportVector: [93x1 logical] Solver: 'SMO'
최적화는 BoxConstraint
, KernelScale
, Epsilon
, Standardize
에 대해 탐색을 수행했습니다. 출력값은 최소 교차 검증 손실 추정값을 갖는 회귀입니다.
입력 인수
Tbl
— 예측 변수 데이터
table형
모델을 훈련시키는 데 사용되는 표본 데이터로, 테이블로 지정됩니다. Tbl
의 각 행은 하나의 관측값에 대응되고, 각 열은 하나의 예측 변수에 대응됩니다. 선택적으로, Tbl
은 응답 변수에 대해 하나의 추가 열을 포함할 수 있습니다. 문자형 벡터로 구성된 셀형 배열 이외의 셀형 배열과 다중 열 변수는 허용되지 않습니다.
Tbl
이 응답 변수를 포함하며 Tbl
의 나머지 모든 변수를 예측 변수로 사용하려는 경우 ResponseVarName
을 사용하여 응답 변수를 지정하십시오.
Tbl
이 응답 변수를 포함하며 Tbl
의 나머지 변수 중 일부만 예측 변수로 사용하려는 경우 formula
를 사용하여 공식을 지정하십시오.
Tbl
이 응답 변수를 포함하지 않는 경우 Y
를 사용하여 응답 변수를 지정하십시오. 응답 변수의 길이와 Tbl
의 행 개수는 동일해야 합니다.
Tbl
의 행 또는 Y
의 요소가 하나 이상의 NaN
을 포함하는 경우 fitrsvm
은 모델을 훈련시킬 때 두 인수에서 해당 행과 요소를 제거합니다.
Tbl
에 나오는 순서로 예측 변수의 이름을 지정하려면 PredictorNames
이름-값 쌍의 인수를 사용하십시오.
데이터형: table
formula
— 응답 변수와 예측 변수의 부분 집합에 대한 설명 모델
문자형 벡터 | string형 스칼라
응답 변수, 그리고 예측 변수의 부분 집합에 대한 설명 모델로, "Y~x1+x2+x3"
형식의 문자형 벡터나 string형 스칼라로 지정됩니다. 이 형식에서 Y
는 응답 변수를 나타내고, x1
, x2
, x3
은 예측 변수를 나타냅니다.
Tbl
의 일부 변수를 모델 훈련에 사용할 예측 변수로 지정하려면 식을 사용하십시오. 사용자가 식을 지정하면 Tbl
의 변수 중 해당 formula
에 표시되지 않은 변수는 사용되지 않습니다.
식에 포함되는 변수 이름은 Tbl
에 포함된 변수 이름(Tbl.Properties.VariableNames
)이면서 동시에 유효한 MATLAB® 식별자여야 합니다. isvarname
함수를 사용하여 Tbl
에 포함된 변수 이름을 확인할 수 있습니다. 변수 이름이 유효하지 않으면 matlab.lang.makeValidName
함수를 사용하여 변수 이름을 변환할 수 있습니다.
데이터형: char
| string
Y
— 응답 변수 데이터
숫자형 벡터
응답 변수 데이터로, n×1 숫자형 벡터로 지정됩니다. Y
의 길이와 Tbl
또는 X
의 행 개수는 동일해야 합니다.
Tbl
또는 X
의 행이나 Y
의 요소가 하나 이상의 NaN
을 포함하는 경우 fitrsvm
은 모델을 훈련시킬 때 두 인수에서 해당 행과 요소를 제거합니다.
응답 변수 이름을 지정하려면 ResponseName
이름-값 쌍의 인수를 사용하십시오.
데이터형: single
| double
X
— 예측 변수 데이터
숫자형 행렬
SVM 회귀 모델이 피팅되는 예측 변수 데이터로, n×p 숫자형 행렬로 지정됩니다. n은 관측값 개수이고 p는 예측 변수의 개수입니다.
Y
의 길이와 X
의 행 개수는 동일해야 합니다.
X
의 행 또는 Y
의 요소가 하나 이상의 NaN
을 포함하는 경우 fitrsvm
은 두 인수에서 해당 행과 요소를 제거합니다.
X
에 나오는 순서로 예측 변수의 이름을 지정하려면 PredictorNames
이름-값 쌍의 인수를 사용하십시오.
데이터형: single
| double
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: 'KernelFunction','gaussian','Standardize',true,'CrossVal','on'
은 가우스 커널과 표준화된 훈련 데이터를 사용하여 10겹 교차 검증된 SVM 회귀 모델을 훈련시킵니다.
참고
교차 검증 이름-값 인수는 'OptimizeHyperparameters'
이름-값 인수와 함께 사용할 수 없습니다. 'OptimizeHyperparameters'
에 대한 교차 검증을 수정하려면 'HyperparameterOptimizationOptions'
이름-값 인수를 사용해야만 합니다.
BoxConstraint
— 상자 제약 조건
양의 스칼라 값
알파 계수에 대한 상자 제약 조건으로, 'BoxConstraint'
와 함께 양의 스칼라 값이 쉼표로 구분되어 지정됩니다.
Alpha
계수의 절댓값은 BoxConstraint
의 값을 초과할 수 없습니다.
'gaussian'
또는 'rbf'
커널 함수의 디폴트 BoxConstraint
값은 iqr(Y)/1.349
입니다. 여기서 iqr(Y)
는 응답 변수 Y
의 사분위 범위입니다. 다른 모든 커널에 대해 디폴트 BoxConstraint
값은 1입니다.
예: BoxConstraint,10
데이터형: single
| double
KernelFunction
— 커널 함수
'linear'
(디폴트 값) | 'gaussian'
| 'rbf'
| 'polynomial'
| 함수 이름
그람 행렬을 계산하는 데 사용되는 커널 함수로, 'KernelFunction'
과 함께 다음 표에 나와 있는 값이 쉼표로 구분되어 지정됩니다.
값 | 설명 | 공식 |
---|---|---|
'gaussian' 또는 'rbf' | 가우스 또는 방사 기저 함수(RBF) 커널 |
|
'linear' | 선형 커널 |
|
'polynomial' | 다항식 커널. 'PolynomialOrder', 를 사용하여 차수가 q 인 다항식 커널을 지정합니다. |
|
'KernelFunction','kernel'
을 설정하여 자신만의 고유한 커널 함수(예: kernel
)를 설정할 수 있습니다. kernel
의 형식은 다음과 같아야 합니다.
function G = kernel(U,V)
U
는 m×p 행렬입니다.V
는 n×p 행렬입니다.G
는U
와V
의 행으로 구성된 m×n 그람 행렬입니다.
또한, kernel.m
은 MATLAB 경로에 있어야 합니다.
커널 함수에 일반적인 이름을 사용하지 않는 것이 좋습니다. 예를 들어, 시그모이드 커널 함수는 'sigmoid'
대신 'mysigmoid'
로 명명하십시오.
예: 'KernelFunction','gaussian'
데이터형: char
| string
KernelScale
— 커널 스케일 모수
1
(디폴트 값) | 'auto'
| 양의 스칼라
커널 스케일 모수로, 'KernelScale'
과 함께 'auto'
또는 양의 스칼라가 쉼표로 구분되어 지정됩니다. 소프트웨어는 예측 변수 행렬 X
의 모든 요소를 KernelScale
의 값으로 나눕니다. 그런 다음, 적합한 커널 노름(Norm)을 적용하여 그람 행렬을 계산합니다.
'auto'
를 지정하면 소프트웨어가 발견적 절차(heuristic procedure)를 사용하여 적합한 스케일링 인자를 선택합니다. 이 발견적 절차는 부표본추출을 사용하므로, 추정값이 호출마다 다를 수 있습니다. 따라서 동일한 결과를 재현하기 위해 분류기를 훈련시키기 전에rng
를 사용하여 난수 시드값을 설정합니다.KernelScale
과 자신만의 고유한 커널 함수(예:'KernelFunction','kernel'
)를 지정하는 경우, 오류가 발생합니다.kernel
내에서 스케일링을 적용해야 합니다.
예: 'KernelScale','auto'
데이터형: double
| single
| char
| string
PolynomialOrder
— 다항식 커널 함수 차수
3
(디폴트 값) | 양의 정수
다항식 커널 함수 차수로, 'PolynomialOrder'
와 함께 양의 정수가 쉼표로 구분되어 지정됩니다.
'PolynomialOrder'
를 설정했는데 KernelFunction
이 'polynomial'
이 아닌 경우, 오류가 발생합니다.
예: 'PolynomialOrder',2
데이터형: double
| single
KernelOffset
— 커널 오프셋 파라미터
음이 아닌 스칼라
커널 오프셋 파라미터로, 'KernelOffset'
과 함께 음이 아닌 스칼라가 쉼표로 구분되어 지정됩니다.
KernelOffset
이 그람 행렬의 각 요소에 추가됩니다.
디폴트 값은 다음과 같습니다.
솔버가 SMO인 경우(즉,
'Solver','SMO'
를 설정하는 경우)0
솔버가 ISDA인 경우(즉,
'Solver','ISDA'
를 설정하는 경우)0.1
예: 'KernelOffset',0
데이터형: double
| single
Epsilon
— 엡실론 무시 대역폭의 절반
iqr(Y)/13.49
(디폴트 값) | 음이 아닌 스칼라 값
엡실론 무시 대역폭의 절반으로, 'Epsilon'
과 함께 음이 아닌 스칼라 값이 쉼표로 구분되어 지정됩니다.
디폴트 Epsilon
값은 iqr(Y)/13.49
입니다. 이는 응답 변수 Y
의 사분위 범위를 사용하여 추정한 표준편차의 1/10입니다. iqr(Y)
가 0인 경우, 디폴트 Epsilon
값은 0.1입니다.
예: 'Epsilon',0.3
데이터형: single
| double
Standardize
— 예측 변수 데이터를 표준화하는 플래그
false
(디폴트 값) | true
예측 변수 데이터를 표준화하는 플래그로, 'Standardize'
와 함께 true
(1
) 또는 false
(0)
이 쉼표로 구분되어 지정됩니다.
'Standardize',true
를 설정할 경우 다음이 수행됩니다.
예: 'Standardize',true
데이터형: logical
Solver
— 최적화 루틴
'ISDA'
| 'L1QP'
| 'SMO'
최적화 루틴으로, 'Solver'
와 함께 다음 표에 나와 있는 값이 쉼표로 구분되어 지정됩니다.
값 | 설명 |
---|---|
'ISDA' | 반복 단일 데이터 알고리즘( 항목 참조) |
'L1QP' | quadprog (Optimization Toolbox)를 사용하여 2차 계획법을 통해 L1 소프트 마진 최소화를 구현합니다. 이 옵션을 사용하려면 Optimization Toolbox™ 라이선스가 필요합니다. 자세한 내용은 2차 계획법 정의 (Optimization Toolbox) 항목을 참조하십시오. |
'SMO' | 순차적 최소규모 최적화( 항목 참조) |
디폴트 값은 다음과 같습니다.
'OutlierFraction'
을 양수 값으로 설정하는 경우'ISDA'
그렇지 않은 경우
'SMO'
예: 'Solver','ISDA'
Alpha
— 알파 계수의 초기 추정값
숫자형 벡터
알파 계수의 초기 추정값으로, 'Alpha'
와 함께 숫자형 벡터가 쉼표로 구분되어 지정됩니다. Alpha
의 길이는 X
의 행 개수와 같아야 합니다.
Alpha
의 각 요소는X
의 관측값에 대응됩니다.Alpha
는NaN
을 포함할 수 없습니다.Alpha
와 교차 검증 이름-값 쌍의 인수('CrossVal'
,'CVPartition'
,'Holdout'
,'KFold'
또는'Leaveout'
) 중 하나를 지정하는 경우, 소프트웨어가 오류를 반환합니다.
Y
가 누락값을 포함하는 경우, 누락값에 대응되는 Y
, X
, Alpha
의 모든 행을 제거하십시오. 즉, 다음을 입력합니다.
idx = ~isnan(Y); Y = Y(idx); X = X(idx,:); alpha = alpha(idx);
Y
, X
, alpha
를 각각 응답 변수, 예측 변수, 초기 알파 추정값으로 전달합니다.
디폴트 값은 zeros(size(Y,1))
입니다.
예: 'Alpha',0.1*ones(size(X,1),1)
데이터형: single
| double
CacheSize
— 캐시 크기
1000
(디폴트 값) | 'maximal'
| 양의 스칼라
캐시 크기로, 'CacheSize'
와 함께 'maximal'
또는 양의 스칼라가 쉼표로 구분되어 지정됩니다.
CacheSize
가 'maximal'
인 경우, 소프트웨어는 전체 n×n 그람 행렬을 유지하는 데 충분한 메모리를 예약합니다.
CacheSize
가 양의 스칼라인 경우, 소프트웨어는 모델 훈련에 사용하기 위해 CacheSize
(단위: 메가바이트) 크기의 메모리를 예약합니다.
예: 'CacheSize','maximal'
데이터형: double
| single
| char
| string
ClipAlphas
— 알파 계수 자르기 여부를 표시하는 플래그
true
(디폴트 값) | false
알파 계수 자르기 여부를 표시하는 플래그로, 'ClipAlphas'
와 함께 true
나 false
가 쉼표로 구분되어 지정됩니다.
관측값 j에 대한 알파 계수가 αj이고 관측값 j의 상자 제약 조건이 Cj인 경우, j = 1,...,n입니다. 여기서 n은 훈련 표본 크기입니다.
값 | 설명 |
---|---|
true | 각 반복마다 αj가 0에 가깝거나 Cj에 가까운 경우, MATLAB이 αj를 각각 0 또는 Cj로 설정합니다. |
false | MATLAB이 최적화 과정 중에 알파 계수를 변경하지 않습니다. |
MATLAB은 훈련된 SVM 모델 객체의 Alpha
속성에 α의 최종 값을 저장합니다.
ClipAlphas
는 SMO 및 ISDA 수렴에 영향을 미칠 수 있습니다.
예: 'ClipAlphas',false
데이터형: logical
NumPrint
— 최적화 진단 메시지 출력 간 반복 횟수
1000
(디폴트 값) | 음이 아닌 정수
최적화 진단 메시지 출력 간 반복 횟수로, 'NumPrint'
와 함께 음이 아닌 정수가 쉼표로 구분되어 지정됩니다.
'Verbose',1
및 'NumPrint',numprint
를 지정하는 경우, 소프트웨어가 명령 창에서 매 numprint
회의 반복마다 SMO 및 ISDA의 모든 최적화 진단 메시지를 표시합니다.
예: 'NumPrint',500
데이터형: double
| single
OutlierFraction
— 훈련 데이터의 이상값 예상 비율
0 (디폴트 값) | 구간 [0,1) 내 숫자형 스칼라
훈련 데이터의 이상값 예상 비율로, 'OutlierFraction'
과 함께 구간 [0,1) 내 숫자형 스칼라가 쉼표로 구분되어 지정됩니다. fitrsvm
은 기울기가 큰 관측값을 제거함으로써 수렴에 도달한 시점에 fitrsvm
이 OutlierFraction
으로 지정된 관측값의 비율을 제거하도록 합니다. 이 이름-값 쌍은 'Solver'
가 'ISDA'
인 경우에만 유효합니다.
예: 'OutlierFraction',0.1
데이터형: single
| double
RemoveDuplicates
— 중복된 관측값을 단일 관측값으로 교체하는지 여부를 나타내는 플래그
false
(디폴트 값) | true
훈련 데이터에서 중복된 관측값을 단일 관측값으로 교체하는 플래그로, 'RemoveDuplicates'
와 함께 true
나 false
가 쉼표로 구분되어 지정됩니다.
RemoveDuplicates
가 true
인 경우, fitrsvm
함수는 훈련 데이터에서 중복된 관측값을 동일한 값을 가지는 단일 관측값으로 바꿉니다. 단일 관측값의 가중치는 제거된 중복 항목의 가중치를 모두 더한 합과 일치합니다(Weights
참조).
팁
데이터 세트에 중복된 관측값이 많이 포함된 경우 'RemoveDuplicates',true
를 지정하면 수렴 시간을 상당히 단축시킬 수 있습니다.
데이터형: logical
Verbose
— 세부 정보 표시 수준
0
(디폴트 값) | 1
| 2
세부 정보 표시 수준으로, 'Verbose'
와 함께 0
, 1
또는 2
가 쉼표로 구분되어 지정됩니다. Verbose
의 값은 소프트웨어가 명령 창에 표시하는 최적화 정보의 양을 제어하고 이 정보를 Mdl.ConvergenceInfo.History
에 구조체로 저장합니다.
다음 표에는 사용 가능한 세부 정보 표시 수준 옵션이 요약되어 있습니다.
값 | 설명 |
---|---|
0 | 소프트웨어가 수렴 정보를 표시하거나 저장하지 않습니다. |
1 | 소프트웨어가 매 numprint 회의 반복마다 진단 메시지를 표시하고 수렴 조건을 저장합니다. 여기서 numprint 는 이름-값 쌍 인수 'NumPrint' 의 값입니다. |
2 | 소프트웨어가 매 반복마다 진단 메시지를 표시하고 수렴 조건을 저장합니다. |
예: 'Verbose',1
데이터형: double
| single
CategoricalPredictors
— 범주형 예측 변수 목록
양의 정수로 구성된 벡터 | 논리형 벡터 | 문자형 행렬 | string형 배열 | 문자형 벡터로 구성된 셀형 배열 | 'all'
범주형 예측 변수 목록으로, 다음 표에 있는 값 중 하나로 지정됩니다.
값 | 설명 |
---|---|
양의 정수로 구성된 벡터 | 벡터의 각 요소는 대응되는 예측 변수가 범주형임을 나타내는 인덱스 값입니다. 인덱스 값은 1과
|
논리형 벡터 | 요소의 값이 |
문자형 행렬 | 행렬의 각 행은 예측 변수의 이름입니다. 이름은 PredictorNames 의 요소와 일치해야 합니다. 문자형 행렬의 각 행의 길이가 같게 되도록 이름 뒤에 추가로 공백을 채웁니다. |
string형 배열 또는 문자형 벡터로 구성된 셀형 배열 | 배열의 각 요소는 예측 변수의 이름입니다. 이름은 PredictorNames 의 요소와 일치해야 합니다. |
"all" | 모든 예측 변수가 범주형 변수입니다. |
기본적으로 예측 변수 데이터가 테이블(Tbl
) 내에 있는 경우, 변수가 논리형 벡터, categorical형 벡터, 문자형 배열, string형 배열 또는 문자형 벡터로 구성된 셀형 배열이면 fitrsvm
함수는 그 변수를 범주형 변수라고 가정합니다. 예측 변수 데이터가 행렬(X
)이면 fitrsvm
함수는 모든 예측 변수를 연속형 변수라고 가정합니다. 다른 모든 예측 변수를 범주형 예측 변수로 식별하려면 이러한 변수를 CategoricalPredictors
이름-값 인수를 사용하여 지정하십시오.
식별된 범주형 예측 변수에 대해 fitrsvm
함수는 범주형 변수에 순서가 지정되어 있는지에 따라 서로 다른 두 가지 체계를 사용하여 가변수를 생성합니다. 순서가 지정되지 않은 범주형 변수에 대해 fitrsvm
함수는 범주형 변수의 각 수준마다 하나의 가변수를 생성합니다. 순서가 지정된 범주형 변수에 대해 fitrsvm
함수는 범주 개수보다 하나가 적은 가변수를 생성합니다. 자세한 내용은 Automatic Creation of Dummy Variables 항목을 참조하십시오.
예: 'CategoricalPredictors','all'
데이터형: single
| double
| logical
| char
| string
| cell
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
를 사용하여 훈련에 사용할 예측 변수를 선택할 수 있습니다. 즉,fitrsvm
함수는PredictorNames
의 예측 변수와 이에 대한 응답 변수만을 훈련 중에 사용합니다.PredictorNames
는Tbl.Properties.VariableNames
의 부분 집합이어야 하므로 응답 변수의 이름은 포함할 수 없습니다.기본적으로,
PredictorNames
는 모든 예측 변수의 이름을 포함합니다.PredictorNames
와formula
중 하나만 사용하여 훈련에 사용할 예측 변수를 지정하는 것이 좋습니다.
예: "PredictorNames",["SepalLength","SepalWidth","PetalLength","PetalWidth"]
데이터형: string
| cell
ResponseName
— 응답 변수 이름
"Y"
(디폴트 값) | 문자형 벡터 | string형 스칼라
응답 변수 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다.
Y
를 제공하는 경우,ResponseName
을 사용하여 응답 변수의 이름을 지정할 수 있습니다.ResponseVarName
또는formula
를 제공하는 경우에는ResponseName
을 사용할 수 없습니다.
예: "ResponseName","response"
데이터형: char
| string
ResponseTransform
— 원시 응답 변수 값을 변환하는 함수
'none'
(디폴트 값) | 함수 핸들 | 함수 이름
원시 응답 변수 값을 변환하는 함수로, 함수 핸들 또는 함수 이름으로 지정됩니다. 디폴트 값은 'none'
입니다. 이는 @(y)y
또는 변환 없음을 의미합니다. 함수는 벡터(원래 응답 변수 값)를 받아 동일한 크기의 벡터(변환된 응답 변수 값)를 반환해야 합니다.
예: myfunction = @(y)exp(y)
를 사용하여 입력 벡터에 지수 변환을 적용하는 함수 핸들을 만들었다고 가정하겠습니다. 그런 다음 응답 변수 변환을 'ResponseTransform',myfunction
으로 지정할 수 있습니다.
데이터형: char
| string
| function_handle
Weights
— 관측값 가중치
ones(size(X,1),1)
(디폴트 값) | 숫자형 값으로 구성된 벡터
관측값 가중치로, 'Weights'
와 함께 숫자형 값으로 구성된 벡터가 쉼표로 구분되어 지정됩니다. Weights
의 크기는 X
의 행 개수와 일치해야 합니다. fitrsvm
은 Weights
의 값의 합이 1이 되도록 정규화합니다.
데이터형: single
| double
CrossVal
— 교차 검증 플래그
'off'
(디폴트 값) | 'on'
교차 검증 플래그로, 'CrossVal'
과 함께 'on'
또는 'off'
가 쉼표로 구분되어 지정됩니다.
'on'
을 지정하면 10겹 교차 검증을 구현합니다.
이 교차 검증 설정을 재정의하려면 CVPartition
, Holdout
, KFold
, Leaveout
이름-값 쌍의 인수 중 하나를 사용하십시오. 교차 검증된 모델을 생성하려면 한 번에 하나의 교차 검증 이름-값 쌍의 인수만 사용해야 합니다.
또는, crossval
메서드를 사용하여 나중에 모델을 교차 검증할 수 있습니다.
예: 'CrossVal','on'
CVPartition
— 교차 검증 분할
[]
(디폴트 값) | cvpartition
객체
교차 검증 분할로, 교차 검증의 유형과 훈련 세트 및 검증 세트의 인덱싱을 지정하는 cvpartition
객체로 지정됩니다.
교차 검증된 모델을 생성하려면 다음 4개의 이름-값 인수 중 하나만 지정할 수 있습니다. CVPartition
, Holdout
, KFold
, Leaveout
예: cvp = cvpartition(500,KFold=5)
를 사용하여 500개 관측값에 대한 5겹 교차 검증에 사용할 임의 분할을 생성한다고 가정하겠습니다. 그러면 CVPartition=cvp
를 설정하여 교차 검증 분할을 지정할 수 있습니다.
Holdout
— 홀드아웃 검증에 사용할 데이터의 비율
(0,1) 범위의 스칼라 값
홀드아웃 검증에 사용할 데이터의 비율로, 범위 [0,1] 내 스칼라 값으로 지정됩니다. Holdout=p
를 지정하는 경우 소프트웨어는 다음 단계를 완료합니다.
데이터의
p*100
%를 무작위로 선택하여 검증 데이터용으로 남겨두고 나머지 데이터를 사용하여 모델을 훈련시킵니다.교차 검증된 모델의
Trained
속성에 훈련된 간소 모델을 저장합니다.
교차 검증된 모델을 생성하려면 다음 4개의 이름-값 인수 중 하나만 지정할 수 있습니다. CVPartition
, Holdout
, KFold
, Leaveout
예: Holdout=0.1
데이터형: double
| single
KFold
— 겹의 개수
10
(디폴트 값) | 1보다 큰 양의 정수 값
교차 검증된 모델에 사용할 겹의 개수로, 1보다 큰 양의 정수 값으로 지정됩니다. KFold=k
를 지정하는 경우 소프트웨어는 다음 단계를 완료합니다.
데이터를
k
개 세트로 임의로 분할합니다.각 세트마다 해당 세트를 검증 데이터로 남겨두고 나머지
k
– 1개의 세트를 사용하여 모델을 훈련시킵니다.교차 검증된 모델의
Trained
속성에k
×1 셀형 벡터로k
개의 훈련된 간소 모델을 저장합니다.
교차 검증된 모델을 생성하려면 다음 4개의 이름-값 인수 중 하나만 지정할 수 있습니다. CVPartition
, Holdout
, KFold
, Leaveout
예: KFold=5
데이터형: single
| double
Leaveout
— 리브-원-아웃(Leave-One-Out) 교차 검증 플래그
"off"
(디폴트 값) | "on"
리브-원-아웃 교차 검증 플래그로, "on"
또는 "off"
로 지정됩니다. Leaveout="on"
을 지정하는 경우, n개(여기서 n은 모델의 NumObservations
속성에 지정된 관측값 중 누락된 관측값을 제외한 개수임)의 관측값 각각에 대해 소프트웨어가 다음 단계를 완료합니다.
1개의 관측값을 검증 데이터로 남겨두고 나머지 n – 1개 관측값을 사용하여 모델을 훈련시킵니다.
교차 검증된 모델의
Trained
속성에 n×1 셀형 벡터로 n개의 훈련된 간소 모델을 저장합니다.
교차 검증된 모델을 생성하려면 다음 4개의 이름-값 인수 중 하나만 지정할 수 있습니다. CVPartition
, Holdout
, KFold
, Leaveout
예: Leaveout="on"
데이터형: char
| string
DeltaGradientTolerance
— 기울기 차이에 대한 허용오차
0 (디폴트 값) | 음이 아닌 스칼라
SMO 또는 ISDA로 구한 상한 이탈값과 하한 이탈값 간의 기울기 차이에 대한 허용오차로, 'DeltaGradientTolerance'
와 함께 음이 아닌 스칼라가 쉼표로 구분되어 지정됩니다.
예: 'DeltaGradientTolerance',1e-4
데이터형: single
| double
GapTolerance
— 실현가능성 격차 허용오차
1e-3
(디폴트 값) | 음이 아닌 스칼라
SMO 또는 ISDA로 구한 실현가능성 격차 허용오차로, 'GapTolerance'
와 함께 음이 아닌 스칼라가 쉼표로 구분되어 지정됩니다.
GapTolerance
가 0
이면 fitrsvm
은 이 모수를 사용하여 수렴을 확인하지 않습니다.
예: 'GapTolerance',1e-4
데이터형: single
| double
IterationLimit
— 수치 최적화 반복의 최대 횟수
1e6
(디폴트 값) | 양의 정수
수치 최적화 반복의 최대 횟수로, 'IterationLimit'
와 함께 양의 정수가 쉼표로 구분되어 지정됩니다.
최적화 루틴이 성공적으로 수렴되는지 여부에 상관없이 소프트웨어가 훈련된 모델을 반환합니다. Mdl.ConvergenceInfo
는 수렴 정보를 포함합니다.
예: 'IterationLimit',1e8
데이터형: double
| single
KKTTolerance
— KKT 위반에 대한 허용오차
0 | 음이 아닌 스칼라 값
카루쉬-쿤-터커(KKT) 위반에 대한 허용오차로, 'KKTTolerance'
와 함께 음이 아닌 스칼라 값이 쉼표로 구분되어 지정됩니다.
이 이름-값 쌍은 'Solver'
가 'SMO'
또는 'ISDA'
인 경우에만 적용됩니다.
KKTTolerance
가 0
이면 fitrsvm
은 이 모수를 사용하여 수렴을 확인하지 않습니다.
예: 'KKTTolerance',1e-4
데이터형: single
| double
ShrinkagePeriod
— 활성 세트 감소 간의 반복 횟수
0
(디폴트 값) | 음이 아닌 정수
활성 세트 감소 간의 반복 횟수로, 'ShrinkagePeriod'
와 함께 음이 아닌 정수가 쉼표로 구분되어 지정됩니다.
'ShrinkagePeriod',0
을 설정하는 경우, 소프트웨어는 활성 세트를 축소하지 않습니다.
예: 'ShrinkagePeriod',1000
데이터형: double
| single
OptimizeHyperparameters
— 최적화할 모수
'none'
(디폴트 값) | 'auto'
| 'all'
| 적합한 모수 이름으로 구성된 string형 배열 또는 셀형 배열 | optimizableVariable
객체로 구성된 벡터
최적화할 모수로, 'OptimizeHyperparameters'
와 함께 다음 값 중 하나가 쉼표로 구분되어 지정됩니다.
'none'
— 최적화하지 않습니다.'auto'
—{'BoxConstraint','KernelScale','Epsilon','Standardize'}
를 사용합니다.'all'
— 모든 적합한 모수를 최적화합니다.적합한 모수 이름으로 구성된 string형 배열 또는 셀형 배열.
optimizableVariable
객체로 구성된 벡터. 일반적으로hyperparameters
의 출력값입니다.
최적화는 모수를 변경하여 fitrsvm
에 대한 교차 검증 손실(오차)을 최소화하려고 합니다. 교차 검증 유형과 최적화의 기타 측면을 제어하려면 HyperparameterOptimizationOptions
이름-값 쌍을 사용하십시오.
참고
OptimizeHyperparameters
값은 다른 이름-값 인수를 사용하여 지정하는 모든 값을 재정의합니다. 예를 들어 OptimizeHyperparameters
를 "auto"
로 설정하면 fitrsvm
함수는 "auto"
옵션에 대응되는 하이퍼파라미터를 최적화하고 하이퍼파라미터에 대해 지정된 값을 모두 무시합니다.
fitrsvm
에 대한 적합한 모수는 다음과 같습니다.
BoxConstraint
—fitrsvm
이 기본적으로 범위[1e-3,1e3]
에서 로그 스케일링된 양수 값 중에서 탐색을 수행합니다.Epsilon
—fitrsvm
이 기본적으로 범위[1e-3,1e2]*iqr(Y)/1.349
에서 로그 스케일링된 양수 값 중에서 탐색을 수행합니다.KernelFunction
—fitrsvm
이'gaussian'
,'linear'
,'polynomial'
중에서 탐색을 수행합니다.KernelScale
—fitrsvm
이 기본적으로 범위[1e-3,1e3]
에서 로그 스케일링된 양수 값 중에서 탐색을 수행합니다.PolynomialOrder
—fitrsvm
이 범위[2,4]
내 정수 중에서 탐색을 수행합니다.Standardize
—fitrsvm
이'true'
및'false'
중에서 탐색을 수행합니다.
디폴트가 아닌 값을 가지는 optimizableVariable
객체로 구성된 벡터를 전달하여 디폴트가 아닌 모수를 설정합니다. 예를 들면 다음과 같습니다.
load carsmall params = hyperparameters('fitrsvm',[Horsepower,Weight],MPG); params(1).Range = [1e-4,1e6];
params
를 OptimizeHyperparameters
의 값으로 전달합니다.
기본적으로, 반복 표시가 명령줄에 표시되고, 최적화에 지정된 하이퍼파라미터 개수에 따라 플롯이 표시됩니다. 최적화와 플롯에 대해 목적 함수는 log(1 + cross-validation loss)입니다. 반복 표시를 제어하려면 'HyperparameterOptimizationOptions'
이름-값 인수에 대한 Verbose
필드를 설정하십시오. 플롯을 제어하려면 'HyperparameterOptimizationOptions'
이름-값 인수에 대한 ShowPlots
필드를 설정하십시오.
예제는 SVM 회귀 최적화하기 항목을 참조하십시오.
예: 'OptimizeHyperparameters','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
출력 인수
Mdl
— 훈련된 SVM 회귀 모델
RegressionSVM
모델 | RegressionPartitionedSVM
교차 검증된 모델
훈련된 SVM 회귀 모델로, RegressionSVM
모델 또는 RegressionPartitionedSVM
교차 검증된 모델로 반환됩니다.
이름-값 쌍의 인수 KFold
, Holdout
, Leaveout
, CrossVal
또는 CVPartition
중 어느 하나라도 설정하면, Mdl
은 RegressionPartitionedSVM
교차 검증된 모델입니다. 그러지 않은 경우 Mdl
은 RegressionSVM
모델입니다.
제한 사항
fitrsvm
함수는 저차원에서 중간 차원까지의 데이터 세트를 지원합니다. 고차원 데이터 세트에 대해서는 fitrlinear
를 대신 사용하십시오.
팁
데이터 세트가 크지 않다면 항상 예측 변수를 표준화하도록 하십시오(
Standardize
참조). 표준화를 수행하면 예측 변수가 측정되는 척도에 영향을 받지 않게 됩니다.KFold
이름-값 쌍의 인수를 사용하여 교차 검증을 수행하는 것이 좋습니다. 교차 검증 결과를 통해 SVM 모델이 얼마나 잘 일반화되는지 확인할 수 있습니다.서포트 벡터의 희소성은 SVM 모델에 있어서는 이상적인 속성입니다. 서포트 벡터의 개수를 줄이려면
BoxConstraint
이름-값 쌍의 인수를 큰 값으로 설정하십시오. 단, 이 동작을 수행하면 훈련 시간이 증가합니다.최적의 훈련 시간을 위해
CacheSize
를 컴퓨터의 메모리 제한이 허용하는 한 최대한 높게 설정하십시오.훈련 세트에서 서포트 벡터의 개수가 관측값보다 훨씬 적을 거라 예상되는 경우, 이름-값 쌍의 인수
'ShrinkagePeriod'
를 사용하여 활성 세트를 축소함으로써 수렴되는 속도를 상당히 높일 수 있습니다.'ShrinkagePeriod',1000
을 사용하는 것이 좋습니다.회귀선에서 멀리 떨어진 중복된 관측값은 수렴에 영향을 미치지 않습니다. 그러나, 회귀선 가까이에 있는 중복된 관측값은 몇 개만 있더라도 수렴되는 속도가 상당히 느려질 수 있습니다. 다음과 같은 경우
'RemoveDuplicates',true
를 지정하여 수렴되는 속도를 높이십시오.데이터 세트에 중복된 관측값이 많이 있는 경우.
몇 개의 중복된 관측값이 회귀선 가까이에 있을 수 있다고 의심되는 경우.
단, 훈련 중에 원래 데이터 세트를 유지하기 위해,
fitrsvm
함수는 원래 데이터 세트와 중복된 관측값을 제거한 데이터 세트를 일시적으로 각각 별도로 저장해야 합니다. 따라서, 몇몇 중복된 관측값을 포함하는 데이터 세트에 대해true
를 지정할 경우fitrsvm
함수는 원래 데이터 메모리의 두 배에 가까운 메모리를 사용합니다.모델을 훈련시킨 후에는 새 데이터에 대한 응답 변수를 예측하는 C/C++ 코드를 생성할 수 있습니다. C/C++ 코드를 생성하려면 MATLAB Coder™가 필요합니다. 자세한 내용은 Introduction to Code Generation 항목을 참조하십시오.
알고리즘
선형 SVM 회귀 문제와 비선형 SVM 회귀 문제의 수학적 정식화, 그리고 솔버 알고리즘에 대해 알아보려면 서포트 벡터 머신 회귀 이해하기 항목을 참조하십시오.
NaN
,<undefined>
, 빈 문자형 벡터(''
), 빈 string형(""
),<missing>
값은 누락 데이터 값을 나타냅니다.fitrsvm
함수는 누락 응답 변수에 대응되는 데이터의 전체 행을 제거합니다. 가중치를 정규화할 때,fitrsvm
함수는 최소 한 개의 누락 예측 변수를 갖는 관측값에 대응되는 가중치를 모두 무시합니다. 따라서, 관측값 상자 제약 조건은BoxConstraint
와 일치하지 않을 수 있습니다.fitrsvm
함수는 가중치가 0인 관측값을 제거합니다.'Standardize',true
와'Weights'
를 설정하면fitrsvm
함수는 대응되는 가중 평균과 가중 표준편차를 사용하여 예측 변수를 표준화합니다. 즉,fitrsvm
은 다음을 사용하여 예측 변수 j(xj)를 표준화합니다.xjk는 예측 변수 j(열)의 관측값 k(행)입니다.
예측 변수 데이터에 범주형 변수가 포함된 경우 소프트웨어가 일반적으로 이러한 변수에 대해 전체 가변수 인코딩을 사용합니다. 소프트웨어는 각 범주형 변수의 각 수준마다 하나의 가변수를 생성합니다.
PredictorNames
속성은 원래 예측 변수 이름마다 하나의 요소를 저장합니다. 예를 들어, 세 개의 예측 변수가 있고, 그중 하나가 세 개 수준을 갖는 범주형 변수라고 가정해 보겠습니다. 그러면PredictorNames
는 예측 변수의 원래 이름을 포함하는 문자형 벡터로 구성된 1×3 셀형 배열이 됩니다.ExpandedPredictorNames
속성은 가변수를 포함하여 예측 변수마다 하나의 요소를 저장합니다. 예를 들어, 세 개의 예측 변수가 있고, 그중 하나가 세 개 수준을 갖는 범주형 변수라고 가정해 보겠습니다. 그러면ExpandedPredictorNames
는 예측 변수 이름 및 새 가변수의 이름을 포함하는 문자형 벡터로 구성된 1×5 셀형 배열이 됩니다.마찬가지로,
Beta
속성은 가변수를 포함하여 예측 변수마다 하나의 베타 계수를 저장합니다.SupportVectors
속성은 가변수를 포함하여 서포트 벡터에 대한 예측 변수 값을 저장합니다. 예를 들어, m개의 서포트 벡터와 세 개의 예측 변수가 있고, 그중 하나가 세 개의 수준을 갖는 범주형 변수라고 가정해 보겠습니다. 그러면SupportVectors
는 m×5 행렬이 됩니다.X
속성은 훈련 데이터를 원래 입력된 대로 저장합니다. 가변수는 포함하지 않습니다. 입력값이 테이블인 경우,X
는 예측 변수로 사용된 열만 포함합니다.
테이블에 지정된 예측 변수에 대해 변수 중 하나가 순서가 지정된(순서형) 범주를 포함하는 경우 소프트웨어는 이러한 변수에 대해 순서형 인코딩(Ordinal Encoding)을 사용합니다.
순서가 지정된 k개의 수준을 갖는 변수에 대해 k – 1개의 가변수를 생성합니다. j번째 가변수는 j 수준까지는 -1이 되고, j + 1에서 k까지의 수준에서는 +1이 됩니다.
ExpandedPredictorNames
속성에 저장된 가변수의 이름은 값 +1을 갖는 첫 번째 수준을 나타냅니다. 소프트웨어는 수준 2, 3, ..., k의 이름을 포함하여 가변수에 대해 k – 1개의 추가 예측 변수 이름을 저장합니다.
모든 솔버는 L1 소프트 마진(Soft-Margin) 최소화를 구현합니다.
p
는 훈련 데이터에서 사용자가 예상하는 이상값 비율이라고 하겠습니다.'OutlierFraction',p
를 설정하면 로버스트 학습을 구현합니다. 다시 말해, 최적화 알고리즘이 수렴될 때 소프트웨어가 관측값의 100p
%를 제거한다는 의미입니다. 제거되는 관측값은 크기가 큰 기울기에 해당합니다.
참고 문헌
[1] Clark, D., Z. Schreter, A. Adams. "A Quantitative Comparison of Dystal and Backpropagation." submitted to the Australian Conference on Neural Networks, 1996.
[2] Fan, R.-E., P.-H. Chen, and C.-J. Lin. “Working set selection using second order information for training support vector machines.” Journal of Machine Learning Research, Vol 6, 2005, pp. 1889–1918.
[3] Kecman V., T. -M. Huang, and M. Vogt. “Iterative Single Data Algorithm for Training Kernel Machines from Huge Data Sets: Theory and Performance.” In Support Vector Machines: Theory and Applications. Edited by Lipo Wang, 255–274. Berlin: Springer-Verlag, 2005.
[4] Lichman, M. UCI Machine Learning Repository, [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.
[5] 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.
[6] 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.
확장 기능
자동 병렬 지원
Parallel Computing Toolbox™를 사용해 자동 병렬 계산을 실행하여 코드 실행 속도를 높일 수 있습니다.
병렬 하이퍼파라미터 최적화를 수행하려면 fitrsvm
함수에 대한 호출에 'HyperparameterOptimizationOptions', struct('UseParallel',true)
이름-값 인수를 사용하십시오.
병렬 하이퍼파라미터 최적화에 대한 자세한 내용은 Parallel Bayesian Optimization 항목을 참조하십시오.
병렬 연산에 대한 일반적인 내용은 자동 병렬 연산을 지원하는 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
사용법 관련 참고 및 제한 사항:
KernelFunction
이름-값 인수를 사용자 지정 커널 함수로 지정할 수 없습니다.Solver
이름-값 인수는 "SMO
"로만 지정할 수 있습니다.OutlierFraction
또는ShrinkagePeriod
이름-값 인수를 지정할 수 없습니다.예측 변수 데이터는 무한대 값을 포함할 수 없습니다.
fitrsvm
함수는 다음 중 하나라도 적용되는 경우 GPU에서 모델을 피팅합니다.입력 인수
X
가gpuArray
객체입니다.입력 인수
Y
가gpuArray
객체입니다.입력 인수
Tbl
이gpuArray
예측 변수 또는 응답 변수를 포함합니다.
버전 내역
R2015b에 개발됨R2023b: OptimizeHyperparameters
의 "auto"
옵션에 Standardize
가 포함됨
R2023b부터, OptimizeHyperparameters
값을 "auto"
로 지정하면 fitrsvm
함수는 Standardize
를 최적화 가능한 하이퍼파라미터로 포함합니다.
R2023a: fitrsvm
이 이제 gpuArray
입력값을 받음(Parallel Computing Toolbox 필요)
R2023a부터 fitrsvm
함수는 GPU 배열을 지원합니다(일부 제약 사항이 있음).
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)