このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
fitrsvm
サポート ベクター マシン回帰モデルの当てはめ
構文
説明
fitrsvm
は、低~中次元の予測子データ セットに対してサポート ベクター マシン (SVM) 回帰モデルに学習をさせるか、SVM 回帰モデルの交差検証を行います。fitrsvm
は、カーネル関数を使用する予測子データのマッピングをサポートし、目的関数最小化のための二次計画法による SMO、ISDA または L1 ソフト マージン最小化をサポートします。
高次元データ セット、つまり多数の予測子変数が含まれているデータ セットに対して線形 SVM 回帰モデルに学習をさせるには、代わりに fitrlinear
を使用します。
バイナリ分類用の SVM モデルに学習をさせる方法については、低~中次元の予測子データ セットの場合は fitcsvm
、高次元データ セットの場合は fitclinear
を参照してください。
は、テーブル Mdl
= fitrsvm(Tbl
,ResponseVarName
)Tbl
に含まれている予測子の値と Tbl.ResponseVarName
に含まれている応答値を使用して学習させた、完全な学習済みサポート ベクター マシン (SVM) 回帰モデル Mdl
を返します。
は、1 つ以上の名前と値のペアの引数で指定された追加オプションと前の構文のいずれかを使用して SVM 回帰モデルを返します。たとえば、カーネル関数を指定したり、交差検証済みモデルを学習させることができます。Mdl
= fitrsvm(___,Name,Value
)
例
線形サポート ベクター マシン回帰モデルの学習
行列に格納されている標本データを使用してサポート ベクター マシン (SVM) 回帰モデルに学習をさせます。
carsmall
データ セットを読み込みます。
load carsmall rng 'default' % For reproducibility
予測子変数 (X
) として Horsepower
と Weight
を、応答変数 (Y
) として MPG
を指定します。
X = [Horsepower,Weight]; Y = MPG;
既定の SVM 回帰モデルに学習をさせます。
Mdl = fitrsvm(X,Y)
Mdl = RegressionSVM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Alpha: [75x1 double] Bias: 57.3958 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
を除くすべての予測子変数は連続です。この変数はカテゴリカル変数で、可能な値は '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
予測子変数 (X
) として Horsepower
と Weight
を、応答変数 (Y
) として MPG
を指定します。
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 列の cell 配列です。セル内のモデルには、観測値の分割を 4 つ使用し、1 つの分割は除外して学習を行った結果が格納されます。
モデルの汎化誤差を比較します。このケースでは、汎化誤差は標本外平均二乗誤差です。
mseLin = kfoldLoss(MdlLin)
mseLin = 17.2987
mseGau = kfoldLoss(MdlGau)
mseGau = 16.6000
ガウス カーネルを使用する SVM 回帰モデルの方が、線形カーネルを使用するモデルより性能が優れています。
データ セット全体を fitrsvm
に渡すことにより、予測に適しているモデルを作成し、より高性能のモデルをもたらした名前と値のペアの引数をすべて指定します。ただし、交差検証オプションは指定しません。
MdlGau = fitrsvm(X,Y,'Standardize',true,'KernelFunction','gaussian');
一連の自動車の MPG を予測するため、自動車の馬力および重量の測定値が格納されているテーブルと Mdl
を predict
に渡します。
SVM 回帰の最適化
この例では、fitrsvm
を使用して自動的にハイパーパラメーターを最適化する方法を示します。この例では、carsmall
データを使用します。
carsmall
データ セットを読み込みます。
load carsmall
予測子変数 (X
) として Horsepower
と Weight
を、応答変数 (Y
) として MPG
を指定します。
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.32233 | 2.935 | 2.935 | 294.5 | 11.95 | 0.4572 | true | | 2 | Accept | 3.1124 | 0.1206 | 2.935 | 2.9771 | 0.3265 | 938.31 | 0.26184 | false | | 3 | Accept | 11.104 | 7.173 | 2.935 | 3.0485 | 439.19 | 0.047381 | 0.060061 | false | | 4 | Accept | 14.705 | 7.2169 | 2.935 | 2.9355 | 0.0086399 | 0.0027446 | 0.61439 | false | | 5 | Accept | 4.1988 | 0.1984 | 2.935 | 3.0066 | 0.123 | 999.3 | 201 | true | | 6 | Accept | 3.0084 | 0.27495 | 2.935 | 2.9355 | 0.89057 | 0.0080922 | 8.0144 | true | | 7 | Accept | 4.1988 | 0.14007 | 2.935 | 3.5404 | 0.0010016 | 0.62201 | 32.871 | true | | 8 | Accept | 4.1418 | 0.10803 | 2.935 | 2.9345 | 0.0037482 | 0.0010004 | 16.616 | true | | 9 | Accept | 8.042 | 6.9421 | 2.935 | 2.9354 | 995.25 | 0.0010955 | 0.14275 | true | | 10 | Accept | 4.1862 | 0.037768 | 2.935 | 2.9355 | 620.98 | 986.71 | 1.5902 | true | | 11 | Best | 2.9241 | 0.036565 | 2.9241 | 2.926 | 2.1316 | 997.42 | 0.0096788 | false | | 12 | Accept | 4.1988 | 0.041986 | 2.9241 | 2.9246 | 0.0010101 | 0.016239 | 147.67 | true | | 13 | Accept | 2.9598 | 0.038039 | 2.9241 | 2.9247 | 1.4657 | 1.4793 | 0.38864 | true | | 14 | Best | 2.9088 | 0.065223 | 2.9088 | 2.9121 | 959.16 | 995.08 | 0.54066 | false | | 15 | Accept | 4.1988 | 0.048769 | 2.9088 | 2.9102 | 754.18 | 993.03 | 275.59 | false | | 16 | Accept | 4.1988 | 0.078209 | 2.9088 | 2.9102 | 16.919 | 0.9408 | 921.29 | true | | 17 | Accept | 2.9568 | 0.073059 | 2.9088 | 2.9106 | 0.050235 | 0.039749 | 0.0093077 | true | | 18 | Accept | 4.1487 | 0.1318 | 2.9088 | 2.9097 | 5.277 | 46.186 | 0.0095359 | true | | 19 | Best | 2.905 | 0.15099 | 2.905 | 2.875 | 0.27078 | 0.061962 | 0.84063 | true | | 20 | Accept | 2.9578 | 0.13621 | 2.905 | 2.8776 | 201.57 | 1.1402 | 0.0094718 | true | |===================================================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | BoxConstraint| KernelScale | Epsilon | Standardize | | | result | log(1+loss) | runtime | (observed) | (estim.) | | | | | |===================================================================================================================================| | 21 | Accept | 2.9308 | 0.062315 | 2.905 | 2.9026 | 546.6 | 882.55 | 0.0094502 | false | | 22 | Accept | 2.9098 | 0.033588 | 2.905 | 2.9032 | 32.703 | 984.05 | 0.12178 | false | | 23 | Accept | 4.1988 | 0.12998 | 2.905 | 2.9025 | 958.12 | 89.399 | 893.27 | true | | 24 | Accept | 2.9651 | 0.068633 | 2.905 | 2.9021 | 0.62018 | 0.28426 | 0.0093797 | true | | 25 | Accept | 4.1989 | 0.043339 | 2.905 | 2.9021 | 0.0010514 | 988.23 | 0.011796 | false | | 26 | Accept | 2.9381 | 0.076026 | 2.905 | 2.8933 | 86.303 | 2.3086 | 0.20666 | true | | 27 | Accept | 2.962 | 0.073026 | 2.905 | 2.8932 | 915.6 | 7.2222 | 0.0093543 | true | | 28 | Accept | 2.9341 | 0.1073 | 2.905 | 2.8946 | 0.13906 | 0.013474 | 0.35647 | true | | 29 | Accept | 2.9494 | 0.049049 | 2.905 | 2.9029 | 966.28 | 4.0378 | 0.088829 | true | | 30 | Accept | 2.9464 | 0.60537 | 2.905 | 2.903 | 986.98 | 248.46 | 0.11212 | false | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 38.2924 seconds Total objective function evaluation time: 24.5837 Best observed feasible point: BoxConstraint KernelScale Epsilon Standardize _____________ ___________ _______ ___________ 0.27078 0.061962 0.84063 true Observed objective function value = 2.905 Estimated objective function value = 2.903 Function evaluation time = 0.15099 Best estimated feasible point (according to models): BoxConstraint KernelScale Epsilon Standardize _____________ ___________ _______ ___________ 0.27078 0.061962 0.84063 true Estimated objective function value = 2.903 Estimated function evaluation time = 0.10503
Mdl = RegressionSVM ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' Alpha: [81x1 double] Bias: 22.9779 KernelParameters: [1x1 struct] Mu: [109.3441 2.9625e+03] Sigma: [45.3545 805.9668] NumObservations: 93 HyperparameterOptimizationResults: [1x1 BayesianOptimization] BoxConstraints: [93x1 double] ConvergenceInfo: [1x1 struct] IsSupportVector: [93x1 logical] Solver: 'SMO'
最適化では、BoxConstraint
、KernelScale
、Epsilon
、および Standardize
に対して探索を行いました。出力は、推定交差検証損失が最小になる回帰です。
入力引数
Tbl
— 予測子データ
テーブル
モデルを学習させるために使用する標本データ。テーブルとして指定します。Tbl
の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。オプションとして、Tbl
に応答変数用の列を 1 つ追加できます。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。
Tbl
に応答変数が含まれている場合に Tbl
内の他の変数をすべて予測子として使用するには、ResponseVarName
を使用して応答変数を指定します。
Tbl
に応答変数が含まれている場合に Tbl
内の他の変数の一部のみを予測子として使用するには、formula
を使用して式を指定します。
Tbl
に応答変数が含まれていない場合は、Y
を使用して応答変数を指定します。応答変数の長さと Tbl
の行数は、同じでなければなりません。
Tbl
の行または Y
の要素に 1 つ以上の NaN
が含まれている場合、モデルを学習させるときに fitrsvm
はその行および要素を両方の引数から削除します。
予測子の名前を Tbl
に表示される順序で指定するには、PredictorNames
名前と値のペアの引数を使用します。
データ型: table
formula
— 応答変数および予測子変数サブセットの説明モデル
文字ベクトル | string スカラー
応答変数および予測子変数サブセットの説明モデル。"Y~x1+x2+x3"
という形式の文字ベクトルまたは string スカラーを指定します。この形式では、Y
は応答変数を、x1
、x2
および x3
は予測子変数を表します。
モデルに学習をさせるための予測子として Tbl
内の変数のサブセットを指定するには、式を使用します。式を指定した場合、formula
に現れない Tbl
内の変数は使用されません。
式の変数名は Tbl
の変数名 (Tbl.Properties.VariableNames
) であり、有効な MATLAB® 識別子でなければなりません。関数 isvarname
を使用して Tbl
の変数名を検証できます。変数名が有効でない場合、関数 matlab.lang.makeValidName
を使用してそれらを変換できます。
データ型: char
| string
Y
— 応答データ
数値ベクトル
応答データ。n 行 1 列の数値ベクトルを指定します。Y
の長さと Tbl
または X
の行数は、同じでなければなりません。
Tbl
または X
の行、または Y
の要素に 1 つ以上の NaN
が含まれている場合、モデルを学習させるときに fitrsvm
はその行および要素を両方の引数から削除します。
応答変数名を指定するには、ResponseName
名前と値のペアの引数を使用します。
データ型: single
| double
X
— 予測子データ
数値行列
SVM 回帰モデルを当てはめる対象となる予測子データ。n 行 p 列の数値行列を指定します。n は観測値の個数、p は予測子変数の個数です。
Y
の長さと X
の行数は等しくなければなりません。
X
の行または Y
の要素に 1 つ以上の 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
の値で除算されます。その後、適切なカーネル ノルムが適用され、グラム行列が計算されます。
'auto'
を指定した場合、ヒューリスティック手法を使用して適切なスケール係数が選択されます。このヒューリスティック手法では副標本抽出を使用するので、呼び出すたびに推定値が変化する可能性があります。このため、結果を再現するには、学習の前にrng
を使用して乱数シードを設定します。'KernelFunction','kernel'
のようにKernelScale
と独自のカーネル関数を指定すると、エラーが発生します。kernel
の内部でスケーリングを適用しなければなりません。
例: 'KernelScale','auto'
データ型: double
| single
| char
| string
PolynomialOrder
— 多項式カーネル関数の次数
3
(既定値) | 正の整数
多項式カーネル関数の次数。'PolynomialOrder'
と正の整数から成るコンマ区切りのペアとして指定されます。
KernelFunction
が 'polynomial'
ではない場合に 'PolynomialOrder'
を設定すると、エラーがスローされます。
例: '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)
がゼロに等しい場合、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' | 反復単一データ アルゴリズム ([30]参照) |
'L1QP' | quadprog (Optimization Toolbox) を使用して二次計画法による L1 ソフト マージン最小化を実装します。このオプションには Optimization Toolbox™ ライセンスが必要です。詳細は、二次計画法の定義 (Optimization Toolbox)を参照してください。 |
'SMO' | 逐次最小最適化 ([17] 参照) |
既定値は以下のとおりです。
'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
は勾配が大きい観測値を削除するので、収束に達するまでに、OutlierFraction
で指定された比率の観測値を fitrsvm
が削除することが保証されます。この名前と値のペアは、'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 | 診断メッセージが表示され、1 回の反復ごとに収束基準が保存されます。 |
例: 'Verbose',1
データ型: double
| single
CategoricalPredictors
— カテゴリカル予測子のリスト
正の整数のベクトル | logical ベクトル | 文字行列 | string 配列 | 文字ベクトルの cell 配列 | 'all'
カテゴリカル予測子のリスト。次の表のいずれかの値として指定します。
値 | 説明 |
---|---|
正の整数のベクトル | ベクトルの各エントリは、対応する予測子がカテゴリカルであることを示すインデックス値です。インデックス値の範囲は 1 ~
|
logical ベクトル |
|
文字行列 | 行列の各行は予測子変数の名前です。名前は PredictorNames のエントリに一致しなくてはなりません。文字行列の各行が同じ長さになるように、名前を余分な空白で埋めてください。 |
文字ベクトルの cell 配列または string 配列 | 配列の各要素は予測子変数の名前です。名前は PredictorNames のエントリに一致しなくてはなりません。 |
"all" | すべての予測子がカテゴリカルです。 |
既定では、予測子データがテーブル (Tbl
) 内にある場合、fitrsvm
は、その変数が logical ベクトル、categorical ベクトル、文字配列、string 配列または文字ベクトルの cell 配列のいずれかである場合に、変数を categorical であると見なします。予測子データが行列 (X
) である場合、fitrsvm
はすべての予測子が連続的であると見なします。他の予測子をカテゴリカル予測子として指定するには、名前と値の引数 CategoricalPredictors
を使用してそれらを指定します。
特定されたカテゴリカル予測子に対して、fitrsvm
はカテゴリカル変数に順序が設定されていないか順序が設定されているかに応じて、2 つの異なる方式を使用してダミー変数を作成します。順序付けのないカテゴリカル変数の場合、fitrsvm
は、そのカテゴリカル変数の各レベルについて 1 つずつダミー変数を作成します。順序付けされたカテゴリカル変数の場合、fitrsvm
は、カテゴリの数よりも 1 つ少ないダミー変数を作成します。詳細については、ダミー変数の自動作成を参照してください。
例: 'CategoricalPredictors','all'
データ型: single
| double
| logical
| char
| string
| cell
PredictorNames
— 予測子変数名
一意な名前の string 配列 | 一意な文字ベクトルの cell 配列
予測子変数名。一意な名前の string 配列または一意な文字ベクトルの cell 配列として指定します。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
は、合計が 1 になるように Weights
の値を正規化します。
データ型: single
| double
CrossVal
— 交差検証フラグ
'off'
(既定値) | 'on'
交差検証フラグ。'CrossVal'
と、'on'
または 'off'
で構成されるコンマ区切りのペアとして指定します。
'on'
を指定した場合、10 分割の交差検証が実施されます。
この交差検証の設定をオーバーライドするには、名前と値のペアの引数 CVPartition
、Holdout
、KFold
、Leaveout
のいずれかを使用します。交差検証済みモデルを作成するために使用できる交差検証の名前と値のペアの引数は、一度に 1 つだけです。
または、crossval
メソッドを使用して後からモデルの交差検証を行うことができます。
例: 'CrossVal','on'
CVPartition
— 交差検証分割
[]
(既定値) | cvpartition
オブジェクト
交差検証分割。交差検証のタイプと学習セットおよび検証セットのインデックス付けを指定する cvpartition
オブジェクトとして指定します。
交差検証済みモデルの作成で指定できる名前と値の引数は、CVPartition
、Holdout
、KFold
、Leaveout
の 4 つのうちのいずれかのみです。
例: cvp = cvpartition(500,KFold=5)
を使用して、500 個の観測値に対する 5 分割交差検証について無作為な分割を作成するとします。この場合、CVPartition=cvp
を設定して交差検証分割を指定できます。
Holdout
— ホールドアウト検証の対象データの比率
(0,1) の範囲のスカラー値
ホールドアウト検証に使用するデータの比率。範囲 [0,1] のスカラー値として指定します。Holdout=p
を指定した場合、以下の手順が実行されます。
p*100
% のデータを無作為に選択して検証データとして確保し、残りのデータを使用してモデルに学習をさせる。コンパクトな学習済みモデルを交差検証済みモデルの
Trained
プロパティに格納する。
交差検証済みモデルの作成で指定できる名前と値の引数は、CVPartition
、Holdout
、KFold
、Leaveout
の 4 つのうちのいずれかのみです。
例: Holdout=0.1
データ型: double
| single
KFold
— 分割の数
10
(既定値) | 1 より大きい正の整数値
交差検証済みモデルで使用する分割の数。1 より大きい正の整数値として指定します。KFold=k
を指定した場合、以下の手順が実行されます。
データを無作為に
k
個のセットに分割する。各セットについて、そのセットを検証データとして確保し、他の
k
– 1 個のセットを使用してモデルに学習をさせる。k
個のコンパクトな学習済みモデルを、交差検証済みモデルのTrained
プロパティに含まれているk
行 1 列の cell ベクトルに格納する。
交差検証済みモデルの作成で指定できる名前と値の引数は、CVPartition
、Holdout
、KFold
、Leaveout
の 4 つのうちのいずれかのみです。
例: KFold=5
データ型: single
| double
Leaveout
— Leave-one-out 法の交差検証のフラグ
"off"
(既定値) | "on"
Leave-one-out 法の交差検証のフラグ。"on"
または "off"
として指定します。Leaveout="on"
を指定した場合、n 個の観測値 (n は、モデルの NumObservations
プロパティで指定される、欠損観測値を除外した観測値の個数) のそれぞれについて以下の手順が実行されます。
いずれかの観測値を検証データとして確保し、他の n - 1 個の観測値を使用してモデルに学習をさせる。
n 個のコンパクトな学習済みモデルを、交差検証済みモデルの
Trained
プロパティに含まれている n 行 1 列の cell ベクトルに格納する。
交差検証済みモデルの作成で指定できる名前と値の引数は、CVPartition
、Holdout
、KFold
、Leaveout
の 4 つのうちのいずれかのみです。
例: 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 配列または cell 配列 | optimizableVariable
オブジェクトのベクトル
最適化するパラメーター。'OptimizeHyperparameters'
と次のいずれかから構成されるコンマ区切りのペアとして指定します。
'none'
— 最適化を行いません。'auto'
—{'BoxConstraint','KernelScale','Epsilon','Standardize'}
を使用します。'all'
— すべての使用可能パラメーターを最適化します。使用可能パラメーター名の string 配列または cell 配列。
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];
OptimizeHyperparameters
の値として params
を渡します。
既定では、コマンド ラインに反復表示が表示され、最適化のハイパーパラメーターの個数に従ってプロットが表示されます。最適化とプロットにおける目的関数は、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 で確認できます。問題にベイズ最適化の最適化パラメーターが 1 つまたは 2 つある場合、ShowPlots はパラメーターに対する目的関数のモデルもプロットします。 | true |
SaveIntermediateResults | Optimizer が 'bayesopt' である場合に結果を保存するかどうかを示す論理値。true の場合、'BayesoptResults' という名前のワークスペース変数が反復ごとに上書きされます。この変数は BayesianOptimization オブジェクトです。 | false |
Verbose | コマンド ラインに次を表示します。
詳細については、 | 1 |
UseParallel | ベイズ最適化を並列実行するかどうかを示す論理値。並列実行には Parallel Computing Toolbox™ が必要です。並列でのタイミングに再現性がないため、並列ベイズ最適化で再現性のある結果が生成されるとは限りません。詳細については、並列ベイズ最適化を参照してください。 | false |
Repartition | 反復ごとに交差検証を再分割するかどうかを示す論理値。 分割ノイズが考慮されるので、通常は | false |
以下の 3 つのオプションは 1 つだけ使用できます。 | ||
CVPartition | cvpartition によって作成される cvpartition オブジェクト | 交差検証フィールドが指定されていない場合 'Kfold',5 |
Holdout | ホールドアウトの比率を表す範囲 (0,1) のスカラー | |
Kfold | 1 より大きい整数 |
例: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)
データ型: struct
出力引数
Mdl
— 学習済みの SVM 回帰モデル
RegressionSVM
モデル | RegressionPartitionedSVM
交差検証済みモデル
学習済みの SVM 回帰モデル。RegressionSVM
モデルまたは RegressionPartitionedSVM
交差検証済みモデルとして返されます。
以下の名前と値のペアの引数のうちいずれかが設定されている場合、Mdl
は RegressionPartitionedSVM
交差検証済みモデルとなります。KFold
、Holdout
、Leaveout
、CrossVal
または CVPartition
。それ以外の場合、Mdl
は RegressionSVM
モデルです。
制限
fitrsvm
は、低~中次元のデータ セットをサポートします。高次元データ セットの場合は、代わりに fitrlinear
を使用してください。
ヒント
データ セットが大規模でない限り、常に予測子を標準化してください (
Standardize
を参照してください)。標準化を行うと、予測子を測定するスケールの影響を受けなくなります。名前と値のペアの引数
KFold
を使用して交差検証を行うことをお勧めします。交差検証の結果により、SVM モデルがどの程度一般化を行うかを判断します。サポート ベクターのスパース性は SVM モデルの望ましい特性です。サポート ベクターの数を少なくするには、名前と値のペアの引数
BoxConstraint
を大きい値に設定します。このようにすると、学習時間も長くなります。学習時間を最適にするには、使用しているコンピューターで許容されるメモリの制限に近い値まで
CacheSize
を大きくします。サポート ベクターの個数が学習セット内の観測値数よりはるかに少ないと考えられる場合、名前と値のペアの引数
'ShrinkagePeriod'
を使用してアクティブ セットを縮小すると、収束を大幅に高速化することができます。'ShrinkagePeriod',1000
の使用をお勧めします。回帰直線から離れている重複する観測値は、収束に影響を与えません。しかし、重複する観測値が回帰直線の近くに少しでもあると、収束が大幅に遅くなる可能性があります。収束を高速化するには、次の場合に
'RemoveDuplicates',true
を指定します。多数の重複する観測値がデータ セットに含まれている。
少数の重複する観測値が回帰直線の近くにあると考えられる。
ただし、学習時に元のデータ セットを維持するため、
fitrsvm
は複数のデータ セット、つまり元のデータ セットと重複する観測値を除外したデータ セットを一時的に格納しなければなりません。このため、重複がほとんど含まれていないデータ セットの場合にtrue
を指定すると、fitrsvm
は元のデータの場合の 2 倍に近いメモリを消費します。モデルに学習をさせた後で、新しいデータについて応答を予測する C/C++ コードを生成できます。C/C++ コードの生成には MATLAB Coder™ が必要です。詳細については、コード生成の紹介を参照してください。
アルゴリズム
線形および非線形 SVM 回帰問題の数学的定式化およびソルバーのアルゴリズムについては、サポート ベクター マシン回帰についてを参照してください。
NaN
、<undefined>
、空の文字ベクトル (''
)、空の string (""
)、および<missing>
値は、欠損データ値を示します。fitrsvm
は、欠損応答に対応するデータ行全体を削除します。fitrsvm
は、重みを正規化するときに、欠損している予測子が 1 つ以上ある観測値に対応する重みを無視します。したがって、観測値のボックス制約がBoxConstraint
に等しくならない可能性があります。fitrsvm
は、重みがゼロの観測値を削除します。'Standardize',true
と'Weights'
を設定した場合、fitrsvm
は対応する加重平均および加重標準偏差を使用して予測子を標準化します。つまり、fitrsvm
は以下を使用して予測子 j (xj) を標準化します。xjk は、予測子 j (列) の観測値 k (行) です。
予測子データにカテゴリカル変数が含まれている場合、一般にこれらの変数について完全なダミー エンコードが使用されます。各カテゴリカル変数の各レベルについて、1 つずつダミー変数が作成されます。
PredictorNames
プロパティには、元の予測子変数名のそれぞれについて 1 つずつ要素が格納されます。たとえば、3 つの予測子があり、そのうちの 1 つは 3 つのレベルがあるカテゴリカル変数であるとします。この場合、PredictorNames
は元の予測子変数名が含まれている 1 行 3 列の文字ベクトルの cell 配列になります。ExpandedPredictorNames
プロパティには、ダミー変数を含む予測子変数のそれぞれについて 1 つずつ要素が格納されます。たとえば、3 つの予測子があり、そのうちの 1 つは 3 つのレベルがあるカテゴリカル変数であるとします。この場合、ExpandedPredictorNames
は予測子変数および新しいダミー変数の名前が含まれている 1 行 5 列の文字ベクトルの cell 配列になります。同様に、
Beta
プロパティには、ダミー変数を含む各予測子について 1 つずつベータ係数が格納されます。SupportVectors
プロパティには、ダミー変数を含むサポート ベクターの予測子の値が格納されます。たとえば、m 個のサポート ベクターと 3 つの予測子があり、そのうちの 1 つは 3 つのレベルがあるカテゴリカル変数であるとします。この場合、SupportVectors
は m 行 5 列の行列になります。X
プロパティには、はじめに入力した状態で学習データが格納されます。ダミー変数は含まれません。入力がテーブルの場合、X
には予測子として使用した列のみが格納されます。
テーブルで予測子を指定した場合、いずれかの変数に順序付きのカテゴリが含まれていると、これらの変数について順序付きエンコードが使用されます。
k 個の順序付きレベルが変数に含まれている場合、k – 1 個のダミー変数が作成されます。j 番目のダミー変数は、j までのレベルについては -1、j + 1 から k までのレベルについては +1 になります。
ExpandedPredictorNames
プロパティに格納されるダミー変数の名前は 1 番目のレベルを示し、値は +1 になります。レベル 2, 3, ..., k の名前を含む k – 1 個の追加予測子名がダミー変数について格納されます。
どのソルバーも L1 ソフト マージン最小化を実装します。
学習データで想定される外れ値の比率を
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)
を指定します。
並列的なハイパーパラメーターの最適化の詳細については、並列ベイズ最適化を参照してください。
並列計算の全般的な情報については、自動並列サポートを使用した 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 コマンド ウィンドウに入力して実行してください。Web ブラウザーは 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)