Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

fitrsvm

サポート ベクター マシン回帰モデルの近似

説明

fitrsvm は、低~中次元の予測子データセットに対してサポート ベクター マシン (SVM) 回帰モデルに学習をさせるか、SVM 回帰モデルの交差検証を行います。fitrsvm は、カーネル関数を使用する予測子データのマッピングをサポートし、目的関数最小化のための二次計画法による SMO、ISDA または L1 ソフト マージン最小化をサポートします。

高次元データセット、つまり多数の予測子変数が含まれているデータセットに対して線形 SVM 回帰モデルに学習をさせるには、代わりに fitrlinear を使用します。

バイナリ分類用の SVM モデルに学習をさせる方法については、低~中次元の予測子データセットの場合は fitcsvm、高次元データセットの場合は fitclinear を参照してください。

Mdl = fitrsvm(Tbl,ResponseVarName) は、テーブル Tbl に含まれている予測子の値と Tbl.ResponseVarName に含まれている応答値を使用して学習させた、完全な学習済みサポート ベクター マシン (SVM) 回帰モデル Mdl を返します。

Mdl = fitrsvm(Tbl,formula) は、テーブル Tbl 内の予測子の値を使用して学習させた、完全な SVM 回帰モデルを返します。formula は、Mdl の当てはめに使用する応答および Tbl 内の予測子変数サブセットの説明モデルです。

Mdl = fitrsvm(Tbl,Y) は、テーブル Tbl 内の予測子の値とベクトル Y 内の応答値を使用して学習させた、完全な学習済み SVM 回帰モデルを返します。

Mdl = fitrsvm(X,Y) は、行列 X 内の予測子の値とベクトル Y 内の応答値を使用して学習させた、完全な学習済み SVM 回帰モデルを返します。

Mdl = fitrsvm(___,Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加オプションと前の構文のいずれかを使用して SVM 回帰モデルを返します。たとえば、カーネル関数を指定したり、交差検証済みモデルを学習させることができます。

すべて折りたたむ

行列に格納されている標本データを使用してサポート ベクター マシン (SVM) 回帰モデルに学習をさせます。

carsmall データセットを読み込みます。

load carsmall
rng 'default'  % For reproducibility

予測子変数 (X) として HorsepowerWeight を、応答変数 (Y) として MPG を指定します。

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 を除くすべての予測子変数は連続です。この変数はカテゴリカル変数で、可能な値は '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 回の反復後に収束したことを示しています。

carsmall データセットを読み込みます。

load carsmall
rng 'default'  % For reproducibility

予測子変数 (X) として HorsepowerWeight を、応答変数 (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}

MdlLinMdlGauRegressionPartitionedSVM 交差検証済みモデルです。各モデルの Trained プロパティは、CompactRegressionSVM モデルによる 5 行 1 列の cell 配列です。セル内のモデルには、観測値の分割を 4 つ使用し、1 つの分割は除外して学習を行った結果が格納されます。

モデルの汎化誤差を比較します。このケースでは、汎化誤差は標本外平均二乗誤差です。

mseLin = kfoldLoss(MdlLin)
mseLin = 17.2987
mseGau = kfoldLoss(MdlGau)
mseGau = 16.5978

ガウス カーネルを使用する SVM 回帰モデルの方が、線形カーネルを使用するモデルより性能が優れています。

データセット全体を fitrsvm に渡すことにより、予測に適しているモデルを作成し、より高性能のモデルをもたらした名前と値のペアの引数をすべて指定します。ただし、交差検証オプションは指定しません。

MdlGau = fitrsvm(X,Y,'Standardize',true,'KernelFunction','gaussian');

一連の自動車の MPG を予測するため、自動車の馬力および重量の測定値が格納されているテーブルと Mdlpredict に渡します。

この例では、fitrsvm を使用して自動的にハイパーパラメーターを最適化する方法を示します。この例では、carsmall データを使用します。

carsmall データセットを読み込みます。

load carsmall

予測子変数 (X) として HorsepowerWeight を、応答変数 (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 |      1.2233 |       2.935 |       2.935 |        294.5 |        11.95 |       0.4572 |         true |
|    2 | Accept |      3.1111 |     0.14188 |       2.935 |      2.9768 |       0.3265 |       938.31 |      0.26184 |        false |
|    3 | Accept |      11.104 |      9.9651 |       2.935 |      3.0267 |       439.19 |     0.047381 |     0.060061 |        false |
|    4 | Accept |      9.0938 |      11.246 |       2.935 |      2.9354 |    0.0086399 |    0.0027446 |      0.61439 |        false |
|    5 | Accept |      4.1957 |     0.14793 |       2.935 |      2.9354 |     0.042678 |       463.49 |      0.51289 |         true |
|    6 | Accept |      4.1988 |     0.19473 |       2.935 |      2.9355 |       23.091 |      0.21904 |       29.248 |         true |
|    7 | Accept |      4.1988 |     0.14214 |       2.935 |      2.9355 |       130.42 |    0.0010014 |       77.154 |         true |
|    8 | Accept |      4.1988 |    0.080622 |       2.935 |      2.9358 |    0.0019018 |       3.7389 |       81.645 |         true |
|    9 | Accept |      2.9657 |    0.070464 |       2.935 |      2.9353 |        50.48 |       1.8895 |    0.0092774 |         true |
|   10 | Accept |      4.1988 |    0.083159 |       2.935 |      2.9357 |    0.0010556 |       972.06 |       719.35 |        false |
|   11 | Best   |      2.9329 |     0.24026 |      2.9329 |      2.9319 |       954.64 |        991.7 |    0.0098825 |        false |
|   12 | Accept |      2.9752 |     0.15905 |      2.9329 |      2.9324 |       558.61 |       22.677 |    0.0092798 |         true |
|   13 | Accept |       4.197 |     0.10496 |      2.9329 |      2.9315 |    0.0012485 |       981.45 |       0.0108 |        false |
|   14 | Accept |      2.9379 |     0.10223 |      2.9329 |      2.9322 |       988.74 |         3.08 |      0.14121 |         true |
|   15 | Accept |      4.1825 |      0.3108 |      2.9329 |      2.9312 |       986.48 |       970.39 |     0.053123 |         true |
|   16 | Best   |      2.9264 |     0.43748 |      2.9264 |      2.9269 |       30.843 |       257.23 |     0.094026 |        false |
|   17 | Accept |      2.9465 |     0.42523 |      2.9264 |      2.9268 |    0.0010942 |     0.001003 |      0.14449 |         true |
|   18 | Accept |      4.1988 |     0.16697 |      2.9264 |      2.9275 |       29.454 |       669.19 |       508.64 |        false |
|   19 | Accept |      6.0027 |      10.255 |      2.9264 |      2.9272 |       568.56 |    0.0042859 |    0.0093077 |         true |
|   20 | Accept |      4.1988 |    0.077266 |      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.086487 |      2.9264 |       2.927 |    0.0019084 |       6.6721 |     0.009295 |         true |
|   22 | Accept |      4.1988 |     0.19208 |      2.9264 |       2.927 |       941.47 |        86.12 |       806.48 |         true |
|   23 | Best   |      2.9041 |     0.11369 |      2.9041 |      2.9037 |       18.528 |       558.97 |     0.010173 |        false |
|   24 | Accept |       2.966 |     0.13494 |      2.9041 |      2.9038 |        460.8 |       6.2394 |    0.0097641 |         true |
|   25 | Accept |      2.9158 |    0.087168 |      2.9041 |      2.9032 |       124.87 |       627.46 |      0.11174 |        false |
|   26 | Accept |      2.9417 |    0.071682 |      2.9041 |      2.9031 |    0.0010651 |    0.0066941 |    0.0095734 |         true |
|   27 | Accept |      2.9418 |     0.13283 |      2.9041 |      2.9031 |     0.001026 |    0.0013388 |     0.011524 |         true |
|   28 | Accept |       3.299 |     0.11591 |      2.9041 |      2.9032 |    0.0011384 |      0.14922 |     0.012052 |         true |
|   29 | Accept |      2.9502 |     0.07864 |      2.9041 |      2.9031 |        31.89 |       3.5197 |      0.15958 |         true |
|   30 | Accept |      2.9509 |     0.49815 |      2.9041 |      2.9032 |       885.18 |       307.02 |    0.0094396 |        false |

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 63.4905 seconds
Total objective function evaluation time: 37.0863

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.11369

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.18895

Figure contains an axes object. The axes object with title Min objective vs. Number of function evaluations, xlabel Function evaluations, ylabel Min objective contains 2 objects of type line. These objects represent Min observed objective, Estimated min objective.

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'


最適化では、BoxConstraintKernelScaleEpsilon、および Standardize に対して探索を行いました。出力は、推定交差検証損失が最小になる回帰です。

入力引数

すべて折りたたむ

モデルを学習させるために使用する標本データ。テーブルとして指定します。Tbl の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。オプションとして、Tbl に応答変数用の列を 1 つ追加できます。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。

Tbl に応答変数が含まれている場合に Tbl 内の他の変数をすべて予測子として使用するには、ResponseVarName を使用して応答変数を指定します。

Tbl に応答変数が含まれている場合に Tbl 内の他の変数の一部のみを予測子として使用するには、formula を使用して式を指定します。

Tbl に応答変数が含まれていない場合は、Y を使用して応答変数を指定します。応答変数の長さと Tbl の行数は、同じでなければなりません。

Tbl の行または Y の要素に 1 つ以上の NaN が含まれている場合、モデルを学習させるときに fitrsvm はその行および要素を両方の引数から削除します。

予測子の名前を Tbl に表示される順序で指定するには、PredictorNames 名前と値のペアの引数を使用します。

データ型: table

応答変数の名前。Tbl 内の変数の名前で指定します。応答変数は、数値ベクトルでなければなりません。

ResponseVarName には文字ベクトルまたは string スカラーを指定しなければなりません。たとえば、応答変数 YTblTbl.Y として格納されている場合、'Y' を指定します。それ以外の場合、モデルを学習させるときに、Tbl の列は Y を含めてすべて予測子として扱われます。

データ型: char | string

応答変数および予測子変数サブセットの説明モデル。"Y~x1+x2+x3" という形式の文字ベクトルまたは string スカラーを指定します。この形式では、Y は応答変数を、x1x2 および x3 は予測子変数を表します。

モデルに学習をさせるための予測子として Tbl 内の変数のサブセットを指定するには、式を使用します。式を指定した場合、formula に現れない Tbl 内の変数は使用されません。

式の変数名は Tbl の変数名 (Tbl.Properties.VariableNames) であり、有効な MATLAB® 識別子でなければなりません。関数 isvarname を使用して Tbl の変数名を検証できます。変数名が有効でない場合、関数 matlab.lang.makeValidName を使用してそれらを変換できます。

データ型: char | string

応答データ。n 行 1 列の数値ベクトルを指定します。Y の長さと Tbl または X の行数は、同じでなければなりません。

Tbl または X の行、または Y の要素に 1 つ以上の NaN が含まれている場合、モデルを学習させるときに fitrsvm はその行および要素を両方の引数から削除します。

応答変数名を指定するには、ResponseName 名前と値のペアの引数を使用します。

データ型: single | double

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' と正のスカラー値から構成されるコンマ区切りのペアとして指定します。

Alpha 係数の絶対値が BoxConstraint の値を超えることはできません。

カーネル関数が 'gaussian' または 'rbf' の場合、BoxConstraint の既定値は iqr(Y)/1.349 です。iqr(Y) は、応答変数 Y の四分位数間範囲です。他のすべてのカーネルの場合、BoxConstraint の既定値は 1 です。

例: BoxConstraint,10

データ型: single | double

グラム行列の計算に使用するカーネル関数。'KernelFunction' と次の表の値から構成されるコンマ区切りのペアとして指定します。

説明
'gaussian' または 'rbf'ガウスまたは放射基底関数 (RBF) カーネル

G(xj,xk)=exp(xjxk2)

'linear'線形カーネル

G(xj,xk)=xjxk

'polynomial'多項式カーネル。'PolynomialOrder',q を使用して多項式カーネルの順序 (q) を指定します。

G(xj,xk)=(1+xjxk)q

独自のカーネル関数を設定することもできます。たとえば、'KernelFunction','kernel' を設定すると kernel が設定されます。この kernel は次の形式でなければなりません。

function G = kernel(U,V)
ここで、

  • U は、m 行 p 列の行列です。

  • V は、n 行 p 列の行列です。

  • G は、UV の行による m 行 n 列のグラム行列です。

kernel.m は、MATLAB パス上になければなりません。

カーネル関数には一般的な名前を使用しないようにしてください。たとえば、シグモイド カーネル関数には 'sigmoid' ではなく 'mysigmoid' などの名前を使用します。

例: 'KernelFunction','gaussian'

データ型: char | string

カーネル スケール パラメーター。'KernelScale' と、'auto' または正のスカラーで構成される、コンマ区切りのペアとして指定します。予測子行列 X のすべての要素が KernelScale の値で除算されます。その後、適切なカーネル ノルムが適用され、グラム行列が計算されます。

  • 'auto' を指定した場合、ヒューリスティック手法を使用して適切なスケール係数が選択されます。このヒューリスティック手法では副標本抽出を使用するので、呼び出すたびに推定値が変化する可能性があります。このため、結果を再現するには、学習の前に rng を使用して乱数シードを設定します。

  • 'KernelFunction','kernel' のように KernelScale と独自のカーネル関数を指定すると、エラーが発生します。kernel の内部でスケーリングを適用しなければなりません。

例: 'KernelScale','auto'

データ型: double | single | char | string

多項式カーネル関数の次数。'PolynomialOrder' と正の整数から成るコンマ区切りのペアとして指定されます。

KernelFunction'polynomial' ではない場合に 'PolynomialOrder' を設定すると、エラーがスローされます。

例: 'PolynomialOrder',2

データ型: double | single

カーネル オフセット パラメーター。'KernelOffset' と非負のスカラーで構成されるコンマ区切りのペアとして指定します。

KernelOffset がグラム行列の各要素に追加されます。

既定値は以下のとおりです。

  • ソルバーが SMO の場合 (つまり、'Solver','SMO' を設定した場合) は 0

  • ソルバーが ISDA の場合 (つまり、'Solver','ISDA' を設定した場合) は 0.1

例: 'KernelOffset',0

データ型: double | single

イプシロン不感応区間の幅の半分。'Epsilon' と非負のスカラー値から構成されるコンマ区切りのペアとして指定します。

Epsilon の既定値は、iqr(Y)/13.49 です。これは、応答変数 Y の四分位数間範囲を使用した標準偏差の 1/10 の推定値です。iqr(Y) がゼロに等しい場合、Epsilon の既定値は 0.1 になります。

例: 'Epsilon',0.3

データ型: single | double

予測子データを標準化するためのフラグ。'Standardize'true (1) または false (0) から構成されるコンマ区切りのペアとして指定します。

'Standardize',true を設定した場合、次のようになります。

  • 列の加重平均と標準偏差によって予測子データ (X) の各列がそれぞれセンタリングおよびスケーリングされます (重みを付けた標準化の詳細についてはアルゴリズムを参照してください)。MATLAB では、カテゴリカル予測子用に生成されたダミー変数の列に含まれているデータは標準化されません。

  • モデルの学習には標準化された予測子行列が使用されますが、モデルの X プロパティには標準化されていないデータが格納されます。

例: 'Standardize',true

データ型: logical

最適化ルーチン。'Solver' と次の表の値から構成されるコンマ区切りのペアとして指定します。

説明
'ISDA'反復単一データ アルゴリズム ([30]参照)
'L1QP'quadprog (Optimization Toolbox) を使用して二次計画法による L1 ソフト マージン最小化を実装します。このオプションには Optimization Toolbox™ ライセンスが必要です。詳細は、二次計画法の定義 (Optimization Toolbox)を参照してください。
'SMO'逐次最小最適化 ([17] 参照)

既定値は以下のとおりです。

  • 'OutlierFraction' を正の値に設定した場合は 'ISDA'

  • それ以外の場合は 'SMO'

例: 'Solver','ISDA'

アルファ係数の初期推定値。'Alpha' と数値ベクトルから構成されるコンマ区切りのペアとして指定します。Alpha の長さは X の行数と等価でなければなりません。

  • Alpha の各要素は X の観測値に対応します。

  • AlphaNaN を格納できません。

  • Alpha を交差検証の名前と値のペアの引数 ('CrossVal''CVPartition''Holdout''KFold' または 'Leaveout') のいずれかと同時に指定すると、エラーが返されます。

Y に欠損値が含まれている場合は、欠損値に対応するすべての行を YX および Alpha から削除してください。つまり、次のように入力します。

idx = ~isnan(Y);
Y = Y(idx);
X = X(idx,:);
alpha = alpha(idx);
そして、YX および alpha をそれぞれ応答値、予測子およびアルファの初期推定値として渡します。

既定の設定は zeros(size(Y,1)) です。

例: 'Alpha',0.1*ones(size(X,1),1)

データ型: single | double

キャッシュ サイズ。'CacheSize''maximal' または正のスカラーで構成されるコンマ区切りのペアとして指定します。

CacheSize'maximal' の場合、n 行 n 列 のグラム行列を保持できる十分なメモリが確保されます。

CacheSize が正のスカラーの場合、モデルの学習用に CacheSize メガバイトのメモリが確保されます。

例: 'CacheSize','maximal'

データ型: double | single | char | string

アルファ係数をクリップするためのフラグ。'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' と非負の整数で構成されるコンマ区切りのペアとして指定します。

'Verbose',1'NumPrint',numprint を指定すると、numprint 回反復するたびに SMO と ISDA からのすべての最適化診断メッセージがコマンド ウィンドウに表示されます。

例: 'NumPrint',500

データ型: double | single

学習データで想定される外れ値の比率。'OutlierFraction' と区間 [0,1) の数値スカラーから構成されるコンマ区切りのペアとして指定します。fitrsvm は勾配が大きい観測値を削除するので、収束に達するまでに、OutlierFraction で指定された比率の観測値を fitrsvm が削除することが保証されます。この名前と値のペアは、'Solver''ISDA' の場合のみ有効です。

例: 'OutlierFraction',0.1

データ型: single | double

学習データ内の重複する観測値を単一の観測値に置き換えるためのフラグ。'RemoveDuplicates'true または false から構成されるコンマ区切りのペアとして指定します。

RemoveDuplicatestrue の場合、fitrsvm は学習データ内の重複する観測値を同じ値の単一の観測値に置き換えます。単一の観測値の重みは、削除された対応する重複の重みの合計に等しくなります (Weights を参照)。

ヒント

多数の重複する観測値がデータセットに含まれている場合は、'RemoveDuplicates',true を指定すると収束時間が大幅に短くなる可能性があります。

データ型: logical

詳細レベル。'Verbose'01 または 2 から構成されるコンマ区切りのペアとして指定します。Verbose の値は、コマンド ウィンドウに表示され構造体として Mdl.ConvergenceInfo.History に保存される最適化情報の量を制御します。

次の表は、使用できる詳細レベル オプションの一覧です。

説明
0収束情報の表示や保存は行われません。
1診断メッセージが表示され、numprint 回の反復ごとに収束基準が保存されます。ここで、numprint は名前と値のペアの引数 'NumPrint' の値です。
2診断メッセージが表示され、1 回の反復ごとに収束基準が保存されます。

例: 'Verbose',1

データ型: double | single

他の回帰のオプション

すべて折りたたむ

カテゴリカル予測子のリスト。次の表のいずれかの値として指定します。

説明
正の整数のベクトル

ベクトルの各エントリは、対応する予測子がカテゴリカルであることを示すインデックス値です。インデックス値の範囲は 1 ~ p です。p はモデルの学習に使用した予測子の数です。

fitrsvm が入力変数のサブセットを予測子として使用する場合、関数はサブセットのみを使用して予測子にインデックスを作成します。応答変数、観測値の重みの変数、および関数で使用されないその他の変数は、CategoricalPredictors 値でカウントされません。

logical ベクトル

true というエントリは、対応する予測子がカテゴリカルであることを意味します。ベクトルの長さは p です。

文字行列行列の各行は予測子変数の名前です。名前は 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

予測子変数名。一意な名前の string 配列または一意な文字ベクトルの cell 配列として指定します。PredictorNames の機能は、学習データの提供方法によって決まります。

  • XY を指定した場合、PredictorNames を使用して X 内の予測子変数に名前を割り当てることができます。

    • PredictorNames 内の名前の順序は、X の列の順序に一致しなければなりません。つまり、PredictorNames{1}X(:,1) の名前、PredictorNames{2}X(:,2) の名前であり、他も同様です。また、size(X,2)numel(PredictorNames) は等しくなければなりません。

    • 既定では PredictorNames{'x1','x2',...} です。

  • Tbl を指定する場合、PredictorNames を使用して学習に使用する予測子変数を選択できます。つまり、fitrsvm は、学習中に PredictorNames の予測子変数と応答変数のみを使用します。

    • PredictorNamesTbl.Properties.VariableNames のサブセットでなければならず、応答変数の名前を含めることはできません。

    • 既定では、すべての予測子変数の名前が PredictorNames に格納されます。

    • PredictorNamesformula の両方ではなく、いずれか一方を使用して学習用の予測子を指定することをお勧めします。

例: "PredictorNames",["SepalLength","SepalWidth","PetalLength","PetalWidth"]

データ型: string | cell

応答変数名。文字ベクトルまたは string スカラーとして指定します。

  • Y を指定した場合、ResponseName を使用して応答変数の名前を指定できます。

  • ResponseVarName または formula を指定した場合、ResponseName を使用できません。

例: "ResponseName","response"

データ型: char | string

応答の変換。'none' または関数ハンドルのいずれかとして指定します。既定の設定は 'none' です。これは @(y)y、つまり変換なしを表します。MATLAB 関数またはユーザー定義関数の場合は、応答変換用の関数ハンドルを使用します。関数ハンドルは、ベクトル (元の応答値) を受け入れて同じサイズのベクトル (変換した応答値) を返さなければなりません。

例: myfunction = @(y)exp(y) を使用して、指数変換を入力ベクトルに適用する関数のハンドルを作成するとします。この場合、応答変換として 'ResponseTransform',myfunction を指定できます。

データ型: char | string | function_handle

観測値の重み。'Weights' と数値ベクトルから構成されるコンマ区切りのペアとして指定します。Weights のサイズは X の行数と等しくなければなりません。fitrsvm は、合計が 1 になるように Weights の値を正規化します。

データ型: single | double

交差検証オプション

すべて折りたたむ

交差検証フラグ。'CrossVal' と、'on' または 'off' で構成されるコンマ区切りのペアとして指定します。

'on' を指定した場合、10 分割の交差検証が実施されます。

この交差検証の設定をオーバーライドするには、名前と値のペアの引数 CVPartitionHoldoutKFoldLeaveout のいずれかを使用します。交差検証済みモデルを作成するために使用できる交差検証の名前と値のペアの引数は、一度に 1 つだけです。

または、crossval メソッドを使用して後からモデルの交差検証を行うことができます。

例: 'CrossVal','on'

交差検証分割。交差検証のタイプと学習セットおよび検証セットのインデックス付けを指定する cvpartition オブジェクトとして指定します。

交差検証済みモデルの作成で指定できる名前と値の引数は、CVPartitionHoldoutKFoldLeaveout の 4 つのうちのいずれかのみです。

例: cvp = cvpartition(500,KFold=5) を使用して、500 個の観測値に対する 5 分割交差検証について無作為な分割を作成するとします。この場合、CVPartition=cvp を設定して交差検証分割を指定できます。

ホールドアウト検証に使用するデータの比率。範囲 [0,1] のスカラー値として指定します。Holdout=p を指定した場合、以下の手順が実行されます。

  1. p*100% のデータを無作為に選択して検証データとして確保し、残りのデータを使用してモデルに学習をさせる。

  2. コンパクトな学習済みモデルを交差検証済みモデルの Trained プロパティに格納する。

交差検証済みモデルの作成で指定できる名前と値の引数は、CVPartitionHoldoutKFoldLeaveout の 4 つのうちのいずれかのみです。

例: Holdout=0.1

データ型: double | single

交差検証済みモデルで使用する分割の数。1 より大きい正の整数値として指定します。KFold=k を指定した場合、以下の手順が実行されます。

  1. データを無作為に k 個のセットに分割する。

  2. 各セットについて、そのセットを検証データとして確保し、他の k – 1 個のセットを使用してモデルに学習をさせる。

  3. k 個のコンパクトな学習済みモデルを、交差検証済みモデルの Trained プロパティに含まれている k 行 1 列の cell ベクトルに格納する。

交差検証済みモデルの作成で指定できる名前と値の引数は、CVPartitionHoldoutKFoldLeaveout の 4 つのうちのいずれかのみです。

例: KFold=5

データ型: single | double

Leave-one-out 法の交差検証のフラグ。"on" または "off" として指定します。Leaveout="on" を指定した場合、n 個の観測値 (n は、モデルの NumObservations プロパティで指定される、欠損観測値を除外した観測値の個数) のそれぞれについて以下の手順が実行されます。

  1. いずれかの観測値を検証データとして確保し、他の n - 1 個の観測値を使用してモデルに学習をさせる。

  2. n 個のコンパクトな学習済みモデルを、交差検証済みモデルの Trained プロパティに含まれている n 行 1 列の cell ベクトルに格納する。

交差検証済みモデルの作成で指定できる名前と値の引数は、CVPartitionHoldoutKFoldLeaveout の 4 つのうちのいずれかのみです。

例: Leaveout="on"

データ型: char | string

収束制御

すべて折りたたむ

SMO または ISDA で取得した上位の違反値と下位の違反値の間の勾配差分の許容誤差。'DeltaGradientTolerance' と非負のスカラーから構成されるコンマ区切りのペアとして指定します。

例: 'DeltaGradientTolerance',1e-4

データ型: single | double

SMO または ISDA により取得された実行可能性ギャップの許容誤差。'GapTolerance' と非負のスカラーで構成されるコンマ区切りのペアとして指定します。

GapTolerance0 の場合、fitrsvm はこのパラメーターを収束のチェックに使用しません。

例: 'GapTolerance',1e-4

データ型: single | double

数値最適化反復の最大回数。'IterationLimit' と正の整数値で構成されるコンマ区切りのペアとして指定します。

最適化ルーチンが正常に収束したかどうかに関係なく、学習済みのモデルが返されます。Mdl.ConvergenceInfo に収束情報が格納されます。

例: 'IterationLimit',1e8

データ型: double | single

カルーシュ・キューン・タッカー (KKT) 違反の許容誤差。'KKTTolerance' と非負のスカラー値から構成されるコンマ区切りのペアとして指定します。

この名前と値のペアは、'Solver''SMO' または 'ISDA' の場合のみ適用されます。

KKTTolerance0 の場合、fitrsvm はこのパラメーターを収束のチェックに使用しません。

例: 'KKTTolerance',1e-4

データ型: single | double

アクティブ セットの縮小間の反復回数。'ShrinkagePeriod' と非負の整数から構成されるコンマ区切りのペアとして指定します。

'ShrinkagePeriod',0 を設定すると、アクティブ セットは縮小されません。

例: 'ShrinkagePeriod',1000

データ型: double | single

ハイパーパラメーターの最適化

すべて折りたたむ

最適化するパラメーター。'OptimizeHyperparameters' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

  • 'none' — 最適化を行いません。

  • 'auto'{'BoxConstraint','KernelScale','Epsilon','Standardize'} を使用します。

  • 'all' — すべての使用可能パラメーターを最適化します。

  • 使用可能パラメーター名の string 配列または cell 配列。

  • optimizableVariable オブジェクトのベクトル。通常は hyperparameters の出力です。

最適化では、パラメーターを変化させることにより、fitrsvm の交差検証損失 (誤差) を最小化しようとします。交差検証のタイプおよびその他の最適化の側面を制御するには、名前と値のペア HyperparameterOptimizationOptions を使用します。

メモ

'OptimizeHyperparameters' の値は、他の名前と値の引数を使用して指定した値より優先されます。たとえば、'OptimizeHyperparameters''auto' に設定すると、fitrsvm'auto' オプションに対応するハイパーパラメーターを最適化して、ハイパーパラメーターに指定された値を無視します。

fitrsvm では、以下のパラメーターを使用できます。

  • BoxConstraintfitrsvm は、既定では範囲 [1e-3,1e3] の対数スケールで、正の値を探索します。

  • Epsilonfitrsvm は、既定では範囲 [1e-3,1e2]*iqr(Y)/1.349 の対数スケールで、正の値を探索します。

  • KernelFunctionfitrsvm は、'gaussian''linear' および 'polynomial' で探索します。

  • KernelScalefitrsvm は、既定では範囲 [1e-3,1e3] の対数スケールで、正の値を探索します。

  • PolynomialOrderfitrsvm は、範囲 [2,4] の整数値を探索します。

  • Standardizefitrsvm は、'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'

最適化のオプション。構造体として指定します。この引数を指定すると、名前と値の引数 OptimizeHyperparameters の効果が変化します。この構造体のフィールドは、すべてオプションです。

フィールド名既定の設定
Optimizer
  • 'bayesopt' — ベイズ最適化を使用。内部的には bayesopt が呼び出されます。

  • 'gridsearch' — 次元ごとに NumGridDivisions の値があるグリッド探索を使用。

  • 'randomsearch'MaxObjectiveEvaluations 個の点で無作為に探索。

'gridsearch' では、グリッドからの一様な非復元抽出により、無作為な順序で探索します。最適化後、sortrows(Mdl.HyperparameterOptimizationResults) コマンドを使用してグリッド順のテーブルを取得できます。

'bayesopt'
AcquisitionFunctionName

  • 'expected-improvement-per-second-plus'

  • 'expected-improvement'

  • 'expected-improvement-plus'

  • 'expected-improvement-per-second'

  • 'lower-confidence-bound'

  • 'probability-of-improvement'

オブジェクト関数のランタイムによって最適化が異なるので、名前に per-second が含まれている獲得関数は、再現性がある結果を生成しません。名前に plus が含まれている獲得関数は、領域を過剰利用している場合に動作を変更します。詳細は、獲得関数のタイプを参照してください。

'expected-improvement-per-second-plus'
MaxObjectiveEvaluations目的関数評価の最大数。'bayesopt' および 'randomsearch' の場合は 30'gridsearch' の場合はグリッド全体
MaxTime

制限時間。正の実数スカラーを指定します。制限時間の単位は、tictoc によって測定される秒です。MaxTime は関数評価を中断させないため、実行時間が MaxTime を超える可能性があります。

Inf
NumGridDivisions'gridsearch' における各次元の値の個数。値は、各次元の値の個数を表す正の整数のベクトル、またはすべての次元に適用されるスカラーが可能です。カテゴリカル変数の場合、このフィールドは無視されます。10
ShowPlotsプロットを表示するかどうかを示す論理値。true の場合、最良の観測された目的関数の値が反復回数に対してプロットされます。ベイズ最適化を使用する場合 (Optimizer'bayesopt')、最良の推定された目的関数値もプロットされます。最良の観測された目的関数値および最良の推定された目的関数値は、反復表示の BestSoFar (observed) 列および BestSoFar (estim.) 列の値にそれぞれ対応しています。これらの値は、Mdl.HyperparameterOptimizationResults のプロパティ ObjectiveMinimumTrace および EstimatedObjectiveMinimumTrace で確認できます。問題にベイズ最適化の最適化パラメーターが 1 つまたは 2 つある場合、ShowPlots はパラメーターに対する目的関数のモデルもプロットします。true
SaveIntermediateResultsOptimizer'bayesopt' である場合に結果を保存するかどうかを示す論理値。true の場合、'BayesoptResults' という名前のワークスペース変数が反復ごとに上書きされます。この変数は BayesianOptimization オブジェクトです。false
Verbose

コマンド ラインに次を表示します。

  • 0 — 反復表示なし

  • 1 — 反復表示あり

  • 2 — 追加情報付きで反復表示あり

詳細については、bayesopt の名前と値の引数 Verbose およびベイズ最適化の使用による分類器の当てはめの最適化の例を参照してください。

1
UseParallelベイズ最適化を並列実行するかどうかを示す論理値。並列実行には Parallel Computing Toolbox™ が必要です。並列でのタイミングに再現性がないため、並列ベイズ最適化で再現性のある結果が生成されるとは限りません。詳細については、並列ベイズ最適化を参照してください。false
Repartition

反復ごとに交差検証を再分割するかどうかを示す論理値。false の場合、オプティマイザーは単一の分割を最適化に使用します。

分割ノイズが考慮されるので、通常は true に設定すると最も確実な結果が得られます。ただし、true で良好な結果を得るには、2 倍以上の関数評価が必要になります。

false
以下の 3 つのオプションは 1 つだけ使用できます。
CVPartitioncvpartition によって作成される cvpartition オブジェクト交差検証フィールドが指定されていない場合 'Kfold',5
Holdoutホールドアウトの比率を表す範囲 (0,1) のスカラー
Kfold1 より大きい整数

例: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)

データ型: struct

出力引数

すべて折りたたむ

学習済みの SVM 回帰モデル。RegressionSVM モデルまたは RegressionPartitionedSVM 交差検証済みモデルとして返されます。

以下の名前と値のペアの引数のうちいずれかが設定されている場合、MdlRegressionPartitionedSVM 交差検証済みモデルとなります。KFoldHoldoutLeaveoutCrossVal または CVPartition。それ以外の場合、MdlRegressionSVM モデルです。

制限

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) を標準化します。

    xj=xjμjσj.

    • μj=1kwkkwkxjk.

    • xjk は、予測子 j (列) の観測値 k (行) です。

    • (σj)2=v1v12v2kwk(xjkμj)2.

    • v1=jwj.

    • v2=j(wj)2.

  • 予測子データにカテゴリカル変数が含まれている場合、一般にこれらの変数について完全なダミー エンコードが使用されます。各カテゴリカル変数の各レベルについて、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 までのレベルについては -1j + 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.

拡張機能

バージョン履歴

R2015b で導入

すべて展開する