Main Content

fitclinear

高次元データに対するバイナリ線形分類器の当てはめ

説明

fitclinear は、高次元の非スパースまたはスパース予測子データを使用して、2 クラス (バイナリ) 学習用の線形分類モデルに学習をさせます。使用可能な線形分類モデルには、正則化されたサポート ベクター マシン (SVM) とロジスティック回帰モデルがあります。fitclinear は、計算時間を短縮する手法 (確率的勾配降下法など) を使用して目的関数を最小化します。

多数の予測子変数が含まれている高次元データセットに対する計算時間を短縮するには、fitclinear を使用して線形分類モデルに学習をさせます。低~中次元の予測子データセットについては、低次元データの代替方法を参照してください。

誤り訂正出力符号を使用して SVM またはロジスティック回帰バイナリ分類器を結合することによりマルチクラス学習用の線形分類モデルに学習をさせる方法については、fitcecoc を参照してください。

Mdl = fitclinear(X,Y) は、バイナリ サポート ベクター マシンを予測子 X とクラス ラベル Y に当てはめた結果が格納されている、学習済みの線形分類モデル オブジェクト Mdl を返します。

Mdl = fitclinear(Tbl,ResponseVarName) は、table Tbl 内の予測子変数と Tbl.ResponseVarName 内のクラス ラベルを使用して、線形分類モデルを返します。

Mdl = fitclinear(Tbl,formula) は、table Tbl 内の標本データを使用して、線形分類モデルを返します。入力引数 formula は、Mdl を当てはめるために使用する Tbl 内の予測子変数の応答およびサブセットの説明モデルです。

Mdl = fitclinear(Tbl,Y) は、table Tbl 内の予測子変数とベクトル Y 内のクラス ラベルを使用して、線形分類モデルを返します。

Mdl = fitclinear(X,Y,Name,Value) では、前の構文におけるいずれかの入力引数の組み合わせに加えて、1 つ以上の名前と値のペアの引数を使用してオプションを指定します。たとえば、予測子行列の列が観測値に対応するように指定したり、ロジスティック回帰の実装や交差検証を指定することができます。名前と値のペアの引数 'Kfold' を使用して交差検証を行うことをお勧めします。交差検証の結果により、モデルがどの程度一般化を行うかを判断します。

[Mdl,FitInfo] = fitclinear(___) は、前の構文のいずれかを使用して、最適化の詳細も返します。交差検証済みモデルについて FitInfo を要求することはできません。

[Mdl,FitInfo,HyperparameterOptimizationResults] = fitclinear(___) は、名前と値のペア OptimizeHyperparameters が渡された場合に、ハイパーパラメーターの最適化の詳細も返します。

すべて折りたたむ

サポート ベクター マシン、双対 SGD およびリッジ正則化を使用して、バイナリ線形分類モデルに学習をさせます。

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

load nlpdata

X は予測子データのスパース行列、Y はクラス ラベルの categorical ベクトルです。データには 2 つを超えるクラスがあります。

Statistics and Machine Learning Toolbox™ のドキュメンテーション Web ページに対応するラベルを特定します。

Ystats = Y == 'stats';

あるドキュメンテーション Web ページの単語数が Statistics and Machine Learning Toolbox™ ドキュメンテーションによるものであるかどうかを識別できるバイナリ線形分類モデルに学習をさせます。データセット全体を使用してモデルに学習をさせます。近似の要約を抽出して、最適化アルゴリズムによるモデルがどの程度データに当てはまるかを判断します。

rng(1); % For reproducibility 
[Mdl,FitInfo] = fitclinear(X,Ystats)
Mdl = 
  ClassificationLinear
      ResponseName: 'Y'
        ClassNames: [0 1]
    ScoreTransform: 'none'
              Beta: [34023x1 double]
              Bias: -1.0059
            Lambda: 3.1674e-05
           Learner: 'svm'


FitInfo = struct with fields:
                    Lambda: 3.1674e-05
                 Objective: 5.3783e-04
                 PassLimit: 10
                 NumPasses: 10
                BatchLimit: []
             NumIterations: 238561
              GradientNorm: NaN
         GradientTolerance: 0
      RelativeChangeInBeta: 0.0562
             BetaTolerance: 1.0000e-04
             DeltaGradient: 1.4582
    DeltaGradientTolerance: 1
           TerminationCode: 0
         TerminationStatus: {'Iteration limit exceeded.'}
                     Alpha: [31572x1 double]
                   History: []
                   FitTime: 0.1708
                    Solver: {'dual'}

MdlClassificationLinear モデルです。Mdl と学習データまたは新しいデータを loss に渡して、標本内分類誤差を調べることができます。または、Mdl と新しい予測子データを predict に渡して、新しい観測値のクラス ラベルを予測することができます。

FitInfo は、重要な情報として終了ステータス (TerminationStatus) とソルバーによるモデルのデータへの当てはめにかかった時間 (FitTime) が含まれている構造体配列です。FitInfo を使用して、最適化終了時の結果が満足できるものであるかどうかを判断することをお勧めします。モデルの再学習を試すこともできますが、学習時間は短いので、データを通す回数を増やしてください。このようにすると、DeltaGradient などの尺度が向上します。

ロジスティック回帰学習器を使用する線形分類モデルに適した LASSO ペナルティの強度を決定するため、5 分割の交差検証を実装します。

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

load nlpdata

X は予測子データのスパース行列、Y はクラス ラベルの categorical ベクトルです。データには 2 つを超えるクラスがあります。

モデルでは、ある Web ページの単語数が Statistics and Machine Learning Toolbox™ ドキュメンテーションによるものであるかどうかを識別できなければなりません。したがって、Statistics and Machine Learning Toolbox™ のドキュメンテーション Web ページに対応するラベルを識別します。

Ystats = Y == 'stats';

10-610-0.5 の範囲で対数間隔で配置された 11 個の正則化強度を作成します。

Lambda = logspace(-6,-0.5,11);

モデルを交差検証します。実行速度を向上させるため、予測子データを転置し、観測値が列単位であることを指定します。SpaRSA を使用して係数を推定します。目的関数の勾配の許容誤差を 1e-8 に下げます。

X = X'; 
rng(10); % For reproducibility
CVMdl = fitclinear(X,Ystats,'ObservationsIn','columns','KFold',5,...
    'Learner','logistic','Solver','sparsa','Regularization','lasso',...
    'Lambda',Lambda,'GradientTolerance',1e-8)
CVMdl = 
  ClassificationPartitionedLinear
    CrossValidatedModel: 'Linear'
           ResponseName: 'Y'
        NumObservations: 31572
                  KFold: 5
              Partition: [1x1 cvpartition]
             ClassNames: [0 1]
         ScoreTransform: 'none'


numCLModels = numel(CVMdl.Trained)
numCLModels = 5

CVMdlClassificationPartitionedLinear モデルです。fitclinear は 5 分割の交差検証を実装するので、各分割について学習させる 5 つの ClassificationLinear モデルが CVMdl に格納されます。

1 番目の学習済み線形分類モデルを表示します。

Mdl1 = CVMdl.Trained{1}
Mdl1 = 
  ClassificationLinear
      ResponseName: 'Y'
        ClassNames: [0 1]
    ScoreTransform: 'logit'
              Beta: [34023x11 double]
              Bias: [-13.2936 -13.2936 -13.2936 -13.2936 -13.2936 -6.8954 -5.4359 -4.7170 -3.4108 -3.1566 -2.9792]
            Lambda: [1.0000e-06 3.5481e-06 1.2589e-05 4.4668e-05 1.5849e-04 5.6234e-04 0.0020 0.0071 0.0251 0.0891 0.3162]
           Learner: 'logistic'


Mdl1ClassificationLinear モデル オブジェクトです。fitclinear は最初の 4 つの分割に対して学習を行うことにより Mdl1 を構築しました。Lambda は正則化強度のシーケンスなので、Mdl1 はそれぞれが Lambda の各正則化強度に対応する 11 個のモデルであると考えることができます。

交差検証分類誤差を推定します。

ce = kfoldLoss(CVMdl);

11 個の正則化強度があるので、ce は 1 行 11 列の分類誤差率のベクトルです。

Lambda の値が大きくなると、予測子変数がスパースになります。これは分類器の品質として優れています。データセット全体を使用し、モデルの交差検証を行ったときと同じオプションを指定して、各正則化強度について線形分類モデルに学習をさせます。モデルごとに非ゼロの係数を特定します。

Mdl = fitclinear(X,Ystats,'ObservationsIn','columns',...
    'Learner','logistic','Solver','sparsa','Regularization','lasso',...
    'Lambda',Lambda,'GradientTolerance',1e-8);
numNZCoeff = sum(Mdl.Beta~=0);

同じ図に、各正則化強度についての交差検証分類誤差率と非ゼロ係数の頻度をプロットします。すべての変数を対数スケールでプロットします。

figure;
[h,hL1,hL2] = plotyy(log10(Lambda),log10(ce),...
    log10(Lambda),log10(numNZCoeff)); 
hL1.Marker = 'o';
hL2.Marker = 'o';
ylabel(h(1),'log_{10} classification error')
ylabel(h(2),'log_{10} nonzero-coefficient frequency')
xlabel('log_{10} Lambda')
title('Test-Sample Statistics')
hold off

Figure contains 2 axes objects. Axes object 1 with title Test-Sample Statistics, xlabel log_{10} Lambda, ylabel log_{10} classification error contains an object of type line. Axes object 2 with ylabel log_{10} nonzero-coefficient frequency contains an object of type line.

予測子変数のスパース性と分類誤差の低さのバランスがとれている正則化強度のインデックスを選択します。この場合、10-410-1 の値で十分なはずです。

idxFinal = 7;

選択した正則化強度のモデルを Mdl から選択します。

MdlFinal = selectModels(Mdl,idxFinal);

MdlFinal は、1 つの正則化強度が含まれている ClassificationLinear モデルです。新しい観測値のラベルを推定するには、MdlFinal と新しいデータを predict に渡します。

この例では、fitclinear を使用して線形分類器の交差検証損失を最小化する方法を示します。この例では、NLP のデータセットを使用します。

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

load nlpdata

X は予測子データのスパース行列、Y はクラス ラベルの categorical ベクトルです。データには 2 つを超えるクラスがあります。

モデルでは、ある Web ページの単語数が Statistics and Machine Learning Toolbox™ ドキュメンテーションによるものであるかどうかを識別できなければなりません。関連するラベルを識別します。

X = X';
Ystats = Y == 'stats';

'auto' パラメーターを使用して分類を最適化します。

再現性を得るために、乱数シードを設定し、'expected-improvement-plus' の獲得関数を使用します。

rng default
Mdl = fitclinear(X,Ystats,'ObservationsIn','columns','Solver','sparsa',...
    'OptimizeHyperparameters','auto','HyperparameterOptimizationOptions',...
    struct('AcquisitionFunctionName','expected-improvement-plus'))
|=====================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Lambda |      Learner |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|    1 | Best   |    0.041619 |      2.7452 |    0.041619 |    0.041619 |     0.077903 |     logistic |
|    2 | Best   |  0.00079184 |      2.5313 |  0.00079184 |   0.0029367 |   2.1405e-09 |     logistic |
|    3 | Accept |    0.049221 |      4.1008 |  0.00079184 |  0.00082068 |      0.72101 |          svm |
|    4 | Accept |  0.00079184 |      4.1863 |  0.00079184 |    0.000815 |   3.4734e-07 |          svm |
|    5 | Accept |  0.00079184 |      3.5088 |  0.00079184 |  0.00079162 |   6.3377e-08 |          svm |
|    6 | Best   |  0.00072849 |      4.2901 |  0.00072849 |  0.00072833 |   3.1802e-10 |     logistic |
|    7 | Accept |  0.00088686 |      5.2473 |  0.00072849 |  0.00072669 |   3.1843e-10 |          svm |
|    8 | Accept |  0.00085519 |       4.521 |  0.00072849 |  0.00072431 |   2.6328e-09 |          svm |
|    9 | Accept |  0.00072849 |      6.6481 |  0.00072849 |  0.00074105 |   1.3065e-07 |     logistic |
|   10 | Accept |  0.00072849 |      5.3715 |  0.00072849 |  0.00068654 |   2.6295e-08 |     logistic |
|   11 | Accept |  0.00072849 |      4.6832 |  0.00072849 |  0.00068787 |   4.8181e-08 |     logistic |
|   12 | Accept |  0.00079184 |      6.3828 |  0.00072849 |  0.00068864 |   1.3131e-07 |          svm |
|   13 | Accept |  0.00072849 |      4.8691 |  0.00072849 |  0.00068953 |   3.1674e-10 |     logistic |
|   14 | Accept |  0.00072849 |        4.28 |  0.00072849 |  0.00070079 |   5.4713e-08 |     logistic |
|   15 | Accept |  0.00076017 |       3.286 |  0.00072849 |  0.00070104 |   7.6671e-10 |     logistic |
|   16 | Accept |  0.00072849 |      4.2032 |  0.00072849 |  0.00070772 |   5.5999e-08 |     logistic |
|   17 | Accept |  0.00076017 |      3.1015 |  0.00072849 |   0.0007071 |   1.1954e-08 |     logistic |
|   18 | Accept |  0.00079184 |      3.5361 |  0.00072849 |  0.00070761 |   3.1913e-10 |     logistic |
|   19 | Accept |   0.0012353 |      3.9141 |  0.00072849 |  0.00071418 |   0.00091822 |          svm |
|   20 | Accept |  0.00082351 |      4.6637 |  0.00072849 |  0.00071623 |   5.4565e-05 |          svm |
|=====================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Lambda |      Learner |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|   21 | Accept |  0.00085519 |      3.0064 |  0.00072849 |  0.00071705 |   0.00024701 |          svm |
|   22 | Accept |  0.00082351 |      5.1439 |  0.00072849 |   0.0007168 |   4.3706e-06 |          svm |
|   23 | Accept |   0.0010452 |      15.253 |  0.00072849 |  0.00073211 |   3.4061e-06 |     logistic |
|   24 | Accept |  0.00095021 |      23.717 |  0.00072849 |  0.00072271 |   7.8673e-07 |     logistic |
|   25 | Accept |  0.00076017 |      5.4424 |  0.00072849 |  0.00072279 |   1.3767e-08 |          svm |
|   26 | Accept |  0.00085519 |      5.3183 |  0.00072849 |  0.00072283 |   1.1571e-06 |          svm |
|   27 | Accept |  0.00085519 |      5.1905 |  0.00072849 |  0.00072288 |   1.4404e-05 |          svm |
|   28 | Accept |  0.00076017 |      3.3842 |  0.00072849 |  0.00072288 |   2.4358e-08 |          svm |
|   29 | Best   |  0.00066515 |      3.9876 |  0.00066515 |  0.00071263 |   3.0423e-08 |     logistic |
|   30 | Accept |  0.00072849 |      4.4946 |  0.00066515 |  0.00071418 |   2.7905e-08 |     logistic |

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

Best observed feasible point:
      Lambda      Learner 
    __________    ________

    3.0423e-08    logistic

Observed objective function value = 0.00066515
Estimated objective function value = 0.0007158
Function evaluation time = 3.9876

Best estimated feasible point (according to models):
      Lambda      Learner 
    __________    ________

    4.8181e-08    logistic

Estimated objective function value = 0.00071418
Estimated function evaluation time = 4.6673

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.

Figure contains an axes object. The axes object with title Objective function model, xlabel Lambda, ylabel Learner contains 5 objects of type line, surface, contour. One or more of the lines displays its values using only markers These objects represent Observed points, Model mean, Next point, Model minimum feasible.

Mdl = 
  ClassificationLinear
      ResponseName: 'Y'
        ClassNames: [0 1]
    ScoreTransform: 'logit'
              Beta: [34023x1 double]
              Bias: -9.8962
            Lambda: 4.8181e-08
           Learner: 'logistic'


入力引数

すべて折りたたむ

予測子データ。n 行 p 列の非スパース行列またはスパース行列を指定します。

Y の長さと X の観測値数は同じでなければなりません。

メモ

観測値が列に対応するように予測子行列を配置して 'ObservationsIn','columns' を指定すると、最適化実行時間が大幅に短縮される可能性があります。

データ型: single | double

分類モデルが学習するクラス ラベル。categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。

  • fitclinear はバイナリ分類のみをサポートします。Y に正確に 2 つの異なるクラスを含めるか、名前と値のペアの引数 'ClassNames' を使用して学習用の 2 つのクラスを指定しなければなりません。マルチクラス学習については、fitcecoc を参照してください。

  • Y の長さは X または Tbl の観測値の数と等しくなければなりません。

  • Y が文字配列の場合、各ラベルは配列の 1 つの行に対応しなければなりません。

  • 名前と値のペアの引数 ClassNames を使用してクラスの順序を指定することをお勧めします。

データ型: char | string | cell | categorical | logical | single | double

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

必要に応じて、Tbl に応答変数用の列と観測値の重み用の列を含めることができます。

  • 応答変数は、categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列でなければなりません。

    • fitclinear はバイナリ分類のみをサポートします。応答変数に正確に 2 つの異なるクラスを含めるか、名前と値の引数 ClassNames を使用して学習用の 2 つのクラスを指定しなければなりません。マルチクラス学習については、fitcecoc を参照してください。

    • 名前と値の引数 ClassNames を使用して応答変数におけるクラスの順序を指定することをお勧めします。

  • 重みの列は数値ベクトルでなければなりません。

  • Tbl 内の応答変数は ResponseVarName または formula を使用して指定し、Tbl 内の観測値の重みは Weights を使用して指定しなければなりません。

    • ResponseVarName を使用して応答変数を指定 — fitclinear は、残りの変数を予測子として使用します。Tbl 内の残りの変数のサブセットを予測子として使用するには、PredictorNames を使用して予測子変数を指定します。

    • formula を使用してモデル仕様を定義 — fitclinear は、formula の指定に従って、Tbl 内の変数のサブセットを予測子変数および応答変数として使用します。

Tbl に応答変数が含まれていない場合は、Y を使用して応答変数を指定します。応答変数 Y の長さと Tbl の行数は等しくなければなりません。Tbl 内の変数のサブセットを予測子として使用するには、PredictorNames を使用して予測子変数を指定します。

データ型: table

応答変数の名前。Tbl 内の変数の名前で指定します。

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

応答変数は、categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列でなければなりません。Y が文字配列である場合、応答変数の各要素は配列の 1 つの行に対応しなければなりません。

名前と値の引数 ClassNames を使用してクラスの順序を指定することをお勧めします。

データ型: 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

メモ:

ソフトウェアは、NaN、空の文字ベクトル ('')、空の string ("")、<missing>、および <undefined> の要素を欠損値として扱い、以下のいずれかの特性をもつ観測値を削除します。

  • 応答変数 (たとえば、Y または ValidationData{2}) の欠損値

  • 予測子の観測値 (たとえば、X または ValidationData{1} の行) 内の少なくとも 1 つの欠損値

  • NaN 値または重み 0 (たとえば、Weights または ValidationData{3} 内の値)

メモリを節約するため、学習を行う前に欠損値が含まれている観測値を学習データから手動で削除することをお勧めします。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: 'ObservationsIn','columns','Learner','logistic','CrossVal','on' は、予測子行列の列が観測値に対応すること、ロジスティック回帰の実装、および 10 分割交差検証の実装を指定します。

メモ

交差検証の名前と値の引数は、名前と値の引数 'OptimizeHyperparameters' と一緒には使用できません。'OptimizeHyperparameters' の場合の交差検証は、名前と値の引数 'HyperparameterOptimizationOptions' を使用することのみによって変更できます。

線形分類のオプション

すべて折りたたむ

正則化項の強度。'Lambda''auto'、非負のスカラーまたは非負値のベクトルから構成されるコンマ区切りのペアとして指定します。

  • 'auto' の場合、Lambda = 1/n です。

    • 交差検証の名前と値のペアの引数 (CrossVal など) を指定した場合、n は分割内観測値の数です。

    • それ以外の場合、n は学習標本のサイズです。

  • 非負値のベクトルの場合、fitclinear は、Lambda の異なる値それぞれについて目的関数の最適化を逐次的に昇順で実行します。

    • Solver'sgd' または 'asgd'Regularization'lasso' の場合、fitclinear が前の係数の推定値を次の最適化反復のウォーム スタートとして使用することはありません。それ以外の場合、fitclinear はウォーム スタートを使用します。

    • Regularization'lasso' の場合、fitclinearLambda の以後の値を使用して最適化を行うときに、係数の推定値 0 は値が保持されます。

    • fitclinear は、指定された正則化強度ごとに係数の推定値を返します。

例: 'Lambda',10.^(-(10:-2:2))

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

線形分類モデルのタイプ。'Learner''svm' または 'logistic' から構成されるコンマ区切りのペアとして指定します。

次の表では、f(x)=xβ+b. です。

  • β は p 個の係数のベクトルです。

  • x は p 個の予測子変数による観測値です。

  • b はスカラー バイアスです。

アルゴリズム応答の範囲損失関数
'svm'サポート ベクター マシンy ∊ {–1,1}。陽性クラスの場合は 1、それ以外の場合は –1ヒンジ: [y,f(x)]=max[0,1yf(x)]
'logistic'ロジスティック回帰'svm' と同じ逸脱度 (ロジスティック): [y,f(x)]=log{1+exp[yf(x)]}

例: 'Learner','logistic'

予測子データにおける観測値の次元。'rows' または 'columns' として指定します。

メモ

観測値が列に対応するように予測子行列を配置して 'ObservationsIn','columns' を指定すると、計算時間が大幅に短縮される可能性があります。table の予測子データに対して 'ObservationsIn','columns' を指定することはできません。

例: 'ObservationsIn','columns'

データ型: char | string

複雑度ペナルティのタイプ。'Regularization''lasso' または 'ridge' から構成されるコンマ区切りのペアとして指定します。

最小化のための目的関数は、平均損失関数 (Learner を参照) と次の表の正則化項を加算することにより作成されます。

説明
'lasso'LASSO (L1) ペナルティ: λj=1p|βj|
'ridge'リッジ (L2) ペナルティ: λ2j=1pβj2

正則化項の強度 (式の λ) を指定するには、Lambda を使用します。

バイアス項 (β0) は正則化ペナルティから除外されます。

Solver'sparsa' の場合、Regularization の既定値は 'lasso' になります。それ以外の場合は、既定値は 'ridge' です。

ヒント

  • 予測子変数を選択する場合は、'lasso' を指定します。変数の選択の詳細については、特徴選択の紹介を参照してください。

  • 最適化の精度を向上させるには、'ridge' を指定します。

例: 'Regularization','lasso'

目的関数の最小化手法。'Solver' と次の表の値をもつ文字ベクトル、string スカラー、string 配列、または文字ベクトルの cell 配列から構成されるコンマ区切りのペアとして指定します。

説明制限
'sgd'確率的勾配降下法 (SGD) [4][2] 
'asgd'平均化確率的勾配降下法 (ASGD) [7] 
'dual'SVM 用の双対 SGD [1][6]Regularization'ridge'Learner'svm' でなければなりません。
'bfgs'Broyden-Fletcher-Goldfarb-Shanno 準ニュートン アルゴリズム (BFGS) [3]X の次元数が非常に多い場合は非効率的です。Regularization'ridge' でなければなりません。
'lbfgs'記憶制限 BFGS (LBFGS) [3]Regularization'ridge' でなければなりません。
'sparsa'可分近似によるスパース再構成 (SpaRSA) [5]Regularization'lasso' でなければなりません。

指定する項目によって、内容は次のように変わります。

  • X に 100 個以下の予測子変数が格納されている場合にリッジ ペナルティ (Regularization を参照) を指定すると、既定のソルバーは 'bfgs' になります。

  • X に 100 個より多い予測子変数が格納されている場合に SVM モデル (Learner を参照) とリッジ ペナルティを指定すると、既定のソルバーは 'dual' になります。

  • X に 100 個以下の予測子変数が格納されている場合に LASSO ペナルティを指定すると、既定のソルバーは 'sparsa' になります。

それ以外の場合、既定のソルバーは 'sgd' になります。既定のソルバーはハイパーパラメーターの最適化を実行するときに変更できることに注意してください。詳細については、ハイパーパラメーターの最適化で使用されるソルバーを正則化手法に基づいて決定を参照してください。

ソルバー名の string 配列または cell 配列を指定する場合、Lambda のそれぞれの値に対して、ソルバー j の解がソルバー j + 1 のウォーム スタートとして使用されます。

例: {'sgd' 'lbfgs'} は、オブジェクティブを解決するために SGD を適用し、解を LBFGS のウォーム スタートとして使用します。

ヒント

  • SGD および ASGD は他のソルバーより高速に目的関数を解決できるのに対し、LBFGS および SpaRSA は他のソルバーより正確な解が得られます。{'sgd' 'lbfgs'}{'sgd' 'sparsa'} のようにソルバーを組み合わせると、速度と精度の最適化のバランスをとることができます。

  • SGD と ASGD のいずれかを選択する場合、以下を考慮します。

    • SGD は反復あたりの時間が短くなりますが、収束するまでに必要な反復回数が多くなります。

    • ASGD は収束するまでに必要な反復回数が少なくなりますが、反復あたりの時間が長くなります。

  • 予測子データが高次元で Regularization'ridge' の場合、Solver に次の組み合わせのいずれかを設定します。

    • 'sgd'

    • 'asgd'

    • 'dual' (Learner'svm' の場合)

    • 'lbfgs'

    • {'sgd','lbfgs'}

    • {'asgd','lbfgs'}

    • {'dual','lbfgs'} (Learner'svm' の場合)

    他の組み合わせも設定できますが、多くの場合、不十分な精度の解となります。

  • 予測子データが中~低次元で Regularization'ridge' の場合、Solver'bfgs' に設定します。

  • Regularization'lasso' の場合、Solver に次の組み合わせのいずれかを設定します。

    • 'sgd'

    • 'asgd'

    • 'sparsa'

    • {'sgd','sparsa'}

    • {'asgd','sparsa'}

例: 'Solver',{'sgd','lbfgs'}

線形係数の初期推定値 (β)、'Beta' と p 次元の数値ベクトルまたは p 行 L 列の数値行列から構成されるコンマ区切りのペアとして指定します。p はカテゴリカル変数用にダミー変数が作成された後の予測子変数の数 (詳細については、CategoricalPredictors を参照)、L は正則化強度値の数 (詳細については、Lambda を参照) です。

  • p 次元ベクトルを指定した場合、次のプロセスを使用して目的関数が L 回最適化されます。

    1. 初期値として Beta、正則化強度として Lambda の最小値を使用して最適化を行う。

    2. 前回の最適化で生成された推定値をウォーム スタートとして使用し、Lambda 内の次に小さい値を正則化強度として使用して、再度最適化を行う。

    3. Lambda の値をすべて使用するまでステップ 2 を繰り返す。

  • p 行 L 列の行列を指定した場合、目的関数が L 回最適化されます。反復 j では、初期値として Beta(:,j) が使用され、Lambda を昇順で並べ替えた後で正則化強度として Lambda(j) が使用されます。

'Solver','dual' を設定した場合、Beta は無視されます。

データ型: single | double

切片の初期推定値 (b)。'Bias' と数値スカラーまたは L 次元の数値ベクトルから構成されるコンマ区切りのペアとして指定します。L は正則化強度値の数です (詳細については、Lambda を参照)。

  • スカラーを指定した場合、次のプロセスを使用して目的関数が L 回最適化されます。

    1. 初期値として Bias、正則化強度として Lambda の最小値を使用して最適化を行う。

    2. 生成された推定値を次回の最適化の反復でウォーム スタートとして使用し、Lambda 内の次に小さい値を正則化強度として使用する。

    3. Lambda の値をすべて使用するまでステップ 2 を繰り返す。

  • L 次元ベクトルを指定した場合、目的関数が L 回最適化されます。反復 j では、初期値として Bias(j) が使用され、Lambda を昇順で並べ替えた後で正則化強度として Lambda(j) が使用されます。

  • 既定の設定では、次のようになります。

    • Learner'logistic' の場合、gjY(j) が陽性クラスであれば 1、そうでなければ -1 になります。Bias は、学習の場合は g の、交差検証の場合は分割内観測値の加重平均になります。

    • Learner'svm' の場合、Bias は 0 になります。

データ型: single | double

線形モデルの切片使用フラグ。'FitBias'true または false から構成されるコンマ区切りのペアとして指定します。

説明
true線形モデルにバイアス項 b が追加され、推定されます。
false推定時に b = 0 に設定されます。

例: 'FitBias',false

データ型: logical

最適化後に線形モデルの切片を当てはめるフラグ。'PostFitBias'true または false から構成されるコンマ区切りのペアとして指定します。

説明
false最適化時にバイアス項 b と係数 β が推定されます。
true

b を推定するため、以下が行われます。

  1. モデルを使用して β と b を推定する

  2. 分類スコアを推定する

  3. 最大精度が得られる分類スコアのしきい値を設定して b を再度当てはめる

true を指定する場合、FitBias は true でなければなりません。

例: 'PostFitBias',true

データ型: logical

詳細レベル。'Verbose' と非負の整数から構成されるコンマ区切りのペアとして指定します。Verbose は、fitclinear がコマンド ラインに表示する診断情報の量を制御します。

説明
0fitclinear は診断情報を表示しません。
1fitclinear は、目的関数の値や勾配の大きさなどの診断情報を定期的に表示および格納します。診断情報は FitInfo.History に格納されます。
他の正の整数fitclinear は、各最適化反復における診断情報を表示および格納します。診断情報は FitInfo.History に格納されます。

例: 'Verbose',1

データ型: double | single

SGD および ASGD ソルバーのオプション

すべて折りたたむ

ミニバッチのサイズ。'BatchSize' と正の整数から構成されるコンマ区切りのペアとして指定します。各反復では、学習データの観測値を BatchSize 個使用して劣勾配が推定されます。

  • X が数値行列の場合、既定値は 10 です。

  • X がスパース行列の場合、既定値は max([10,ceil(sqrt(ff))]) です。ここで、ff = numel(X)/nnz(X) (X"スパース性係数") です。

例: 'BatchSize',100

データ型: single | double

学習率。'LearnRate' と正のスカラーで構成される、コンマ区切りのペアとして指定します。LearnRate は、劣勾配をスケールすることによって最適化のステップ サイズを制御します。

  • Regularization'ridge' の場合、LearnRate は初期学習率 γ0 を指定します。fitclinear は、次の式を使用して、反復 t、γt についての学習率を決定します。

    γt=γ0(1+λγ0t)c.

    • λ は Lambda の値です。

    • Solver'sgd' の場合、c = 1 です。

    • Solver'asgd' の場合、c は 0.75 です [7]

  • Regularization'lasso' の場合、すべての反復について LearnRate は一定になります。

既定の設定では、LearnRate1/sqrt(1+max((sum(X.^2,obsDim)))) です。obsDim は、観測値が予測子データ X の列から構成されている場合は 1、それ以外の場合は 2 です。

例: 'LearnRate',0.01

データ型: single | double

発散 (最小値の限度を超える状態) が検出された場合に学習率を減少させるフラグ。'OptimizeLearnRate'true または false から構成されるコンマ区切りのペアとして指定します。

OptimizeLearnRate'true' の場合、次のようになります。

  1. 数回の最適化反復について、LearnRate を学習率として使用して最適化が開始される。

  2. 目的関数の値が増加した場合、現在の学習率の半分の値を使用して再開される。

  3. 目的関数が減少するまで、ステップ 2 が繰り返される。

例: 'OptimizeLearnRate',true

データ型: logical

LASSO 切り捨て実行間のミニバッチの回数。'TruncationPeriod' と正の整数から構成されるコンマ区切りのペアとして指定します。

切り捨て実行の後で、ソフトしきい値が線形係数に適用されます。つまり、k = TruncationPeriod 回のミニバッチが処理された後で、次を使用して係数推定 j が切り捨てられます。

β^j={β^jutifβ^j>ut,0if|β^j|ut,β^j+utifβ^j<ut.

  • SGD の場合、β^j はミニバッチを次を満たす k の回数処理した後の係数 j の推定値です。ut=kγtλ.γt は反復 t における学習率です。λ は Lambda の値です。

  • ASGD の場合、β^j はミニバッチを次を満たす k の回数処理した後の係数 j の平均推定値です。ut=kλ.

Regularization'ridge' の場合、TruncationPeriod は無視されます。

例: 'TruncationPeriod',100

データ型: single | double

その他の分類オプション

すべて折りたたむ

カテゴリカル予測子のリスト。次の表のいずれかの値として指定します。説明は、予測子データの行に観測値、列に予測子があると仮定しています。

説明
正の整数のベクトル

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

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

logical ベクトル

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

文字行列行列の各行は予測子変数の名前です。名前は PredictorNames のエントリに一致しなくてはなりません。文字行列の各行が同じ長さになるように、名前を余分な空白で埋めてください。
文字ベクトルの cell 配列または string 配列配列の各要素は予測子変数の名前です。名前は PredictorNames のエントリに一致しなくてはなりません。
"all"すべての予測子がカテゴリカルです。

既定では、予測子データがテーブル (Tbl) 内にある場合、fitclinear は、その変数が logical ベクトル、categorical ベクトル、文字配列、string 配列または文字ベクトルの cell 配列のいずれかである場合に、変数を categorical であると見なします。予測子データが行列 (X) である場合、fitclinear はすべての予測子が連続的であると見なします。他の予測子をカテゴリカル予測子として指定するには、名前と値の引数 CategoricalPredictors を使用してそれらを指定します。

特定されたカテゴリカル予測子に対して、fitclinear はカテゴリカル変数に順序が設定されていないか順序が設定されているかに応じて、2 つの異なる方式を使用してダミー変数を作成します。順序付けのないカテゴリカル変数の場合、fitclinear は、そのカテゴリカル変数の各レベルについて 1 つずつダミー変数を作成します。順序付けされたカテゴリカル変数の場合、fitclinear は、カテゴリの数よりも 1 つ少ないダミー変数を作成します。詳細については、ダミー変数の自動作成を参照してください。

例: 'CategoricalPredictors','all'

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

学習に使用するクラスの名前。categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列として指定します。ClassNames のデータ型は Tbl 内の応答変数または Y と同じでなければなりません。

ClassNames が文字配列の場合、各要素は配列の 1 つの行に対応しなければなりません。

ClassNames の使用目的は次のとおりです。

  • 学習時のクラスの順序を指定する。

  • クラスの順序に対応する入力または出力引数の次元の順序を指定する。たとえば、Cost の次元の順序や predict によって返される分類スコアの列の順序を指定するために ClassNames を使用します。

  • 学習用にクラスのサブセットを選択する。たとえば、Y に含まれているすべての異なるクラス名の集合が ["a","b","c"] であるとします。クラス "a" および "c" のみの観測値を使用してモデルに学習をさせるには、"ClassNames",["a","c"] を指定します。

ClassNames の既定値は、Tbl 内の応答変数または Y に含まれているすべての異なるクラス名の集合です。

例: "ClassNames",["b","g"]

データ型: categorical | char | string | logical | single | double | cell

誤分類のコスト。'Cost' と正方行列または構造体から構成されるコンマ区切りペアとして指定します。

  • 正方行列 cost を指定する場合 ('Cost',cost)、cost(i,j) は真のクラスが i である点をクラス j に分類するコストです。つまり、行は真のクラスに、列は予測するクラスに対応します。cost の対応する行と列についてクラスの順序を指定するには、名前と値のペアの引数 ClassNames を使用します。

  • 構造体 S を指定する場合 ('Cost',S)、次の 2 つのフィールドが必要です。

    • S.ClassNames: Y と同じデータ型のクラス名を表す変数を含む。

    • S.ClassificationCosts。行と列の順序が S.ClassNames と同じコスト行列。

Cost の既定値は ones(K) – eye(K) です。K は異なるクラスの個数です。

fitclinearCost を使用して、Prior で指定されたクラスの事前確率を調整します。その後、fitclinear は調整した事前確率を学習に使用します。

例: 'Cost',[0 2; 1 0]

データ型: single | double | struct

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

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

    • PredictorNames 内の名前の順序は、X の予測子の順序に一致しなければなりません。X が既定の方向 (行に観測値、列に予測子) をもつと仮定すると、PredictorNames{1}X(:,1) の名前、PredictorNames{2}X(:,2) の名前 (以下同様) になります。また、size(X,2)numel(PredictorNames) は等しくなければなりません。

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

  • Tbl が与えられた場合、'PredictorNames' を使用して学習に使用する予測子変数を選択できます。つまり、fitclinear は、学習中に PredictorNames の予測子変数と応答変数のみを使用します。

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

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

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

例: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}

データ型: string | cell

各クラスの事前確率。'Prior''empirical''uniform'、数値ベクトルまたは構造体配列から構成されるコンマ区切りのペアとして指定します。

次の表は、事前確率の設定に使用できるオプションの一覧です。

説明
'empirical'クラスの事前確率は、Y のクラスの相対的頻度です。
'uniform'クラスの事前確率はいずれも 1/K (K はクラス数) となります。
数値ベクトル各要素はクラスの事前確率です。Y 内の順序に従って要素の順序を指定します。名前と値のペアの引数 'ClassNames' を使用して順序を指定した場合は、それに従って要素の順序が設定されます。
構造体配列

構造体 S には 2 つのフィールドがあります。

  • S.ClassNames: Y と同じ型の変数のクラス名が格納されます。

  • S.ClassProbs: 対応する事前確率のベクトルが格納されます。

fitclinear は、合計が 1 になるように Prior の事前確率を正規化します。

例: 'Prior',struct('ClassNames',{{'setosa','versicolor'}},'ClassProbs',1:2)

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

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

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

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

例: "ResponseName","response"

データ型: char | string

スコア変換。文字ベクトル、string スカラー、または関数ハンドルとして指定します。

次の表は、使用可能な文字ベクトルおよび string スカラーをまとめています。

説明
"doublelogit"1/(1 + e–2x)
"invlogit"log(x / (1 – x))
"ismax"最大のスコアをもつクラスのスコアを 1 に設定し、他のすべてのクラスのスコアを 0 に設定する
"logit"1/(1 + e–x)
"none" または "identity"x (変換なし)
"sign"x < 0 のとき –1
x = 0 のとき 0
x > 0 のとき 1
"symmetric"2x – 1
"symmetricismax"最大のスコアをもつクラスのスコアを 1 に設定し、他のすべてのクラスのスコアを –1 に設定する
"symmetriclogit"2/(1 + e–x) – 1

MATLAB 関数またはユーザー定義関数の場合は、スコア変換用の関数ハンドルを使用します。関数ハンドルは、行列 (元のスコア) を受け入れて同じサイズの行列 (変換したスコア) を返さなければなりません。

例: "ScoreTransform","logit"

データ型: char | string | function_handle

観測値の重み。非負の数値ベクトルまたは Tbl 内の変数の名前を指定します。ソフトウェアは、X または Tbl の各観測値に、Weights の対応する値で重みを付けます。Weights の長さは、X または Tbl の観測値の数と等しくなければなりません。

入力データをテーブル Tbl として指定した場合、Weights は数値ベクトルが含まれている Tbl 内の変数の名前にすることができます。この場合、Weights には文字ベクトルまたは string スカラーを指定しなければなりません。たとえば、重みベクトル WTbl.W として格納されている場合、'W' として指定します。それ以外の場合、モデルに学習をさせるときに、Tbl の列は W を含めてすべて予測子または応答変数として扱われます。

既定の設定では、Weightsones(n,1) です。nX または Tbl の観測値数です。

合計が各クラスの事前確率の値と等しくなるように Weights が正規化されます。

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

交差検証オプション

すべて折りたたむ

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

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

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

例: 'Crossval','on'

交差検証分割。'CVPartition'cvpartition により作成された cvpartition 分割オブジェクトで構成されるコンマ区切りのペアとして指定します。分割オブジェクトは交差検証のタイプおよび学習と検証セットのインデックス付けを指定します。

交差検証済みモデルを作成するために使用できるオプションは、'CVPartition''Holdout''KFold' のいずれかのみです。

ホールドアウト検証に使用されるデータの比率。'Holdout' と、(0,1) の範囲内のスカラー値から成るコンマ区切りのペアとして指定します。'Holdout',p を指定すると、次が実行されます。

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

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

交差検証済みモデルを作成するために使用できるオプションは、'CVPartition''Holdout''KFold' のいずれかのみです。

例: 'Holdout',0.1

データ型: double | single

交差検証分類器で使用する分割の数。'KFold' と 1 より大きい正の整数値から構成されるコンマ区切りのペアとして指定します。たとえば 'KFold',k を指定すると、次が実行されます。

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

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

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

交差検証済みモデルを作成するために使用できるオプションは、'CVPartition''Holdout''KFold' のいずれかのみです。

例: 'KFold',8

データ型: single | double

SGD と ASGD の収束制御

すべて折りたたむ

バッチを処理する最大回数。'BatchLimit' と正の整数から構成されるコンマ区切りのペアとして指定します。BatchLimit 回のバッチが処理されると、最適化が終了します。

  • 既定の設定では、次のようになります。

    • データを通す回数は PassLimit 回です。

    • 複数のソルバーを指定し、SGD または ASGD を使用して次のソルバーの初期近似値を取得する場合、既定値は ceil(1e6/BatchSize) です。BatchSize は名前と値のペアの引数 'BatchSize' の値です。

  • BatchLimit を指定した場合、fitclinear では、BatchLimitPassLimit の引数のうち、処理する観測値の数が少なくなる方が使用されます。

例: 'BatchLimit',100

データ型: single | double

線形係数およびバイアス項 (切片) の相対許容誤差。'BetaTolerance' と非負のスカラーから構成されるコンマ区切りのペアとして指定します。

Bt=[βtbt] であるとします。これは、最適化反復 t における係数およびバイアス項のベクトルです。BtBt1Bt2<BetaTolerance で最適化が終了します。

Solver で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。

例: 'BetaTolerance',1e-6

データ型: single | double

次回の収束チェックの前にバッチを処理する回数。'NumCheckConvergence' と正の整数から構成されるコンマ区切りのペアとして指定します。

バッチのサイズの指定について、BatchSize を参照してください。

既定の設定では、データセット全体が通されるたびに約 10 回収束がチェックされます。

例: 'NumCheckConvergence',100

データ型: single | double

データを通す最大回数。'PassLimit' と正の整数から構成されるコンマ区切りのペアとして指定します。

データが完全に 1 回通されると、すべての観測値が fitclinear で処理されます。

データが通される回数が PassLimit になると、fitclinear は最適化を終了します。

BatchLimit を指定した場合、fitclinear では、BatchLimitPassLimit の引数のうち、処理する観測値の数が少なくなる方が使用されます。

例: 'PassLimit',5

データ型: single | double

最適化の収束を検出するための検証データ。'ValidationData' と cell 配列またはテーブルで構成されるコンマ区切りのペアとして指定します。

最適化時に、ValidationData の損失が定期的に推定されます。検証データの損失が増加する場合、最適化が終了します。詳細は、アルゴリズムを参照してください。交差検証を使用してハイパーパラメーターを最適化する方法については、CrossVal など交差検証のオプションを参照してください。

応答変数を含む予測子データの table Tbl を使用する場合、ValidationData を table として指定できます。この場合、ValidationData は、Tbl 内に含まれるものと同じ予測子および応答を格納していなければなりません。ソフトウェアは、Tbl が重さのベクトルを含む場合であっても、観測値に重みを適用することはありません。重みを指定するには、ValidationData を cell 配列として指定しなければなりません。

ValidationData を cell 配列として指定する場合、次の形式でなければなりません。

  • ValidationData{1} は、予測子データと同じデータ型および方向でなければなりません。つまり、予測子行列 X を使用する場合、ValidationData{1} は、予測子データが X と同じ方向で格納されている m 行 p 列または p 行 m 列の非スパース行列またはスパース行列でなければなりません。学習データ X の予測子変数と ValidationData{1} の予測子変数は対応していなければなりません。同様に、予測子データの予測子 table Tbl を使用する場合、ValidationData{1} は、Tbl に含まれるものと同じ予測子変数を格納していなければなりません。ValidationData{1} と予測子データの観測値の数が同じである必要はありません。

  • ValidationData{2} は応答変数 (Y または ResponseVarName) のデータ型および形式と一致しなければなりません。ValidationData{2} がクラス ラベルの配列である場合、ValidationData{1} にある観測値の数と同じ数の要素を指定しなければなりません。ValidationData{2} に含まれているすべての異なるラベルの集合は、Y に含まれているすべての異なるラベルの部分集合でなければなりません。ValidationData{1} が table である場合、ValidationData{2} はその table 内の応答変数の名前とすることができます。同じ ResponseVarName または formula を使用する場合、ValidationData{2}[] として指定できます。

  • 必要に応じて、ValidationData{3} を観測値の重みについての m 次元の数値ベクトル、または観測値の重みを含むテーブル ValidationData{1} 内の変数名として指定できます。検証データに関する重みは、合計が 1 になるように正規化されます。

ValidationData を指定し、コマンド ラインで検証損失を表示するには、0 より大きい値を Verbose に指定します。

Solver で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。

既定の設定では、検証データの損失を監視することによる収束の検出は行われません。

双対 SGD の収束制御

すべて折りたたむ

線形係数およびバイアス項 (切片) の相対許容誤差。'BetaTolerance' と非負のスカラーから構成されるコンマ区切りのペアとして指定します。

Bt=[βtbt] であるとします。これは、最適化反復 t における係数およびバイアス項のベクトルです。BtBt1Bt2<BetaTolerance で最適化が終了します。

DeltaGradientTolerance も指定した場合、いずれかの終了条件が満たされると最適化が終了します。

Solver で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。

例: 'BetaTolerance',1e-6

データ型: single | double

上位および下位プールのカルーシュ・キューン・タッカー (KKT) 相補性条件違反値の間における勾配差分の許容誤差。非負のスカラーとして指定します。

  • KKT 違反値の大きさが DeltaGradientTolerance より小さい場合、最適化が終了します。

  • Solver で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。

例: 'DeltaGradientTolerance',1e-2

データ型: double | single

次回の収束チェックの前に処理するデータセット全体が通される回数。'NumCheckConvergence' と正の整数から構成されるコンマ区切りのペアとして指定します。

例: 'NumCheckConvergence',100

データ型: single | double

データを通す最大回数。'PassLimit' と正の整数から構成されるコンマ区切りのペアとして指定します。

データが完全に 1 回通されると、すべての観測値が処理されます。

データが通される回数が PassLimit になると、最適化が終了します。

例: 'PassLimit',5

データ型: single | double

最適化の収束を検出するための検証データ。'ValidationData' と cell 配列またはテーブルで構成されるコンマ区切りのペアとして指定します。

最適化時に、ValidationData の損失が定期的に推定されます。検証データの損失が増加する場合、最適化が終了します。詳細は、アルゴリズムを参照してください。交差検証を使用してハイパーパラメーターを最適化する方法については、CrossVal など交差検証のオプションを参照してください。

応答変数を含む予測子データの table Tbl を使用する場合、ValidationData を table として指定できます。この場合、ValidationData は、Tbl 内に含まれるものと同じ予測子および応答を格納していなければなりません。ソフトウェアは、Tbl が重さのベクトルを含む場合であっても、観測値に重みを適用することはありません。重みを指定するには、ValidationData を cell 配列として指定しなければなりません。

ValidationData を cell 配列として指定する場合、次の形式でなければなりません。

  • ValidationData{1} は、予測子データと同じデータ型および方向でなければなりません。つまり、予測子行列 X を使用する場合、ValidationData{1} は、予測子データが X と同じ方向で格納されている m 行 p 列または p 行 m 列の非スパース行列またはスパース行列でなければなりません。学習データ X の予測子変数と ValidationData{1} の予測子変数は対応していなければなりません。同様に、予測子データの予測子 table Tbl を使用する場合、ValidationData{1} は、Tbl に含まれるものと同じ予測子変数を格納していなければなりません。ValidationData{1} と予測子データの観測値の数が同じである必要はありません。

  • ValidationData{2} は応答変数 (Y または ResponseVarName) のデータ型および形式と一致しなければなりません。ValidationData{2} がクラス ラベルの配列である場合、ValidationData{1} にある観測値の数と同じ数の要素を指定しなければなりません。ValidationData{2} に含まれているすべての異なるラベルの集合は、Y に含まれているすべての異なるラベルの部分集合でなければなりません。ValidationData{1} が table である場合、ValidationData{2} はその table 内の応答変数の名前とすることができます。同じ ResponseVarName または formula を使用する場合、ValidationData{2}[] として指定できます。

  • 必要に応じて、ValidationData{3} を観測値の重みについての m 次元の数値ベクトル、または観測値の重みを含むテーブル ValidationData{1} 内の変数名として指定できます。検証データに関する重みは、合計が 1 になるように正規化されます。

ValidationData を指定し、コマンド ラインで検証損失を表示するには、0 より大きい値を Verbose に指定します。

Solver で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。

既定の設定では、検証データの損失を監視することによる収束の検出は行われません。

BFGS、LBFGS および SpaRSA の収束制御

すべて折りたたむ

線形係数およびバイアス項 (切片) の相対許容誤差。非負のスカラーとして指定します。

Bt=[βtbt] であるとします。これは、最適化反復 t における係数およびバイアス項のベクトルです。BtBt1Bt2<BetaTolerance で最適化が終了します。

GradientTolerance も指定した場合、いずれかの終了条件が満たされると最適化が終了します。

Solver で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。

例: 'BetaTolerance',1e-6

データ型: single | double

勾配の絶対許容誤差。非負のスカラーとして指定します。

最適化反復 t における係数およびバイアス項に関する目的関数の勾配ベクトルを t とします。t=max|t|<GradientTolerance で最適化が終了します。

BetaTolerance も指定した場合、いずれかの終了条件が満たされると最適化が終了します。

指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。

例: 'GradientTolerance',1e-5

データ型: single | double

ヘッセ近似の履歴バッファーのサイズ。'HessianHistorySize' と正の整数から構成されるコンマ区切りのペアとして指定します。各反復において、最新の HessianHistorySize 回の反復の統計量を使用してヘッシアンが構成されます。

SpaRSA の場合、'HessianHistorySize' はサポートされません。

例: 'HessianHistorySize',10

データ型: single | double

最適化反復の最大回数。'IterationLimit' と正の整数から構成されるコンマ区切りのペアとして指定します。IterationLimit は、Solver の値が 'bfgs''lbfgs' または 'sparsa' である場合に適用されます。

例: 'IterationLimit',500

データ型: single | double

最適化の収束を検出するための検証データ。'ValidationData' と cell 配列またはテーブルで構成されるコンマ区切りのペアとして指定します。

最適化時に、ValidationData の損失が定期的に推定されます。検証データの損失が増加する場合、最適化が終了します。詳細は、アルゴリズムを参照してください。交差検証を使用してハイパーパラメーターを最適化する方法については、CrossVal など交差検証のオプションを参照してください。

応答変数を含む予測子データの table Tbl を使用する場合、ValidationData を table として指定できます。この場合、ValidationData は、Tbl 内に含まれるものと同じ予測子および応答を格納していなければなりません。ソフトウェアは、Tbl が重さのベクトルを含む場合であっても、観測値に重みを適用することはありません。重みを指定するには、ValidationData を cell 配列として指定しなければなりません。

ValidationData を cell 配列として指定する場合、次の形式でなければなりません。

  • ValidationData{1} は、予測子データと同じデータ型および方向でなければなりません。つまり、予測子行列 X を使用する場合、ValidationData{1} は、予測子データが X と同じ方向で格納されている m 行 p 列または p 行 m 列の非スパース行列またはスパース行列でなければなりません。学習データ X の予測子変数と ValidationData{1} の予測子変数は対応していなければなりません。同様に、予測子データの予測子 table Tbl を使用する場合、ValidationData{1} は、Tbl に含まれるものと同じ予測子変数を格納していなければなりません。ValidationData{1} と予測子データの観測値の数が同じである必要はありません。

  • ValidationData{2} は応答変数 (Y または ResponseVarName) のデータ型および形式と一致しなければなりません。ValidationData{2} がクラス ラベルの配列である場合、ValidationData{1} にある観測値の数と同じ数の要素を指定しなければなりません。ValidationData{2} に含まれているすべての異なるラベルの集合は、Y に含まれているすべての異なるラベルの部分集合でなければなりません。ValidationData{1} が table である場合、ValidationData{2} はその table 内の応答変数の名前とすることができます。同じ ResponseVarName または formula を使用する場合、ValidationData{2}[] として指定できます。

  • 必要に応じて、ValidationData{3} を観測値の重みについての m 次元の数値ベクトル、または観測値の重みを含むテーブル ValidationData{1} 内の変数名として指定できます。検証データに関する重みは、合計が 1 になるように正規化されます。

ValidationData を指定し、コマンド ラインで検証損失を表示するには、0 より大きい値を Verbose に指定します。

Solver で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。

既定の設定では、検証データの損失を監視することによる収束の検出は行われません。

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

すべて折りたたむ

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

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

  • 'auto'{'Lambda','Learner'} を使用します。

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

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

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

最適化では、パラメーターを変化させることにより、fitclinear の交差検証損失 (誤差) を最小化しようとします。(各種の状況における) 交差検証損失の詳細については、分類損失を参照してください。交差検証のタイプおよびその他の最適化の側面を制御するには、名前と値のペア HyperparameterOptimizationOptions を使用します。

メモ

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

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

  • Lambdafitclinear は、既定では範囲 [1e-5/NumObservations,1e5/NumObservations] の対数スケールで、正の値を探索します。

  • Learnerfitclinear は、'svm''logistic' で探索します。

  • Regularizationfitclinear は、'ridge''lasso' で探索します。

    • Regularization'ridge' の場合、Solver の値は既定では 'lbfgs' に設定されます。

    • Regularization'lasso' の場合、Solver の値は既定では 'sparsa' に設定されます。

既定以外のパラメーターを設定するには、既定以外の値が含まれている optimizableVariable オブジェクトのベクトルを渡します。たとえば、以下のようにします。

load fisheriris
params = hyperparameters('fitclinear',meas,species);
params(1).Range = [1e-4,1e6];

OptimizeHyperparameters の値として params を渡します。

既定では、コマンド ラインに反復表示が表示され、最適化のハイパーパラメーターの個数に従ってプロットが表示されます。最適化とプロットにおける目的関数は誤分類率です。反復表示を制御するには、名前と値の引数 'HyperparameterOptimizationOptions'Verbose フィールドを設定します。プロットを制御するには、名前と値の引数 'HyperparameterOptimizationOptions'ShowPlots フィールドを設定します。

たとえば、線形分類器の最適化を参照してください。

例: '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

出力引数

すべて折りたたむ

学習済みの線形分類モデル。ClassificationLinear モデル オブジェクトまたは ClassificationPartitionedLinear 交差検証済みモデル オブジェクトとして返されます。

名前と値のペアの引数 KFoldHoldoutCrossValCVPartition のいずれかを設定した場合、MdlClassificationPartitionedLinear 交差検証済みモデル オブジェクトになります。それ以外の場合、MdlClassificationLinear モデル オブジェクトになります。

Mdl のプロパティを参照するには、ドット表記を使用します。たとえば、推定された係数のベクトルまたは行列を表示するには、コマンド ウィンドウに Mdl.Beta と入力します。

メモ

他の分類モデルとは異なり、また、メモリ消費を節約するため、学習データや学習過程の詳細 (収束履歴など) は ClassificationLinear および ClassificationPartitionedLinear モデル オブジェクトに格納されません。

最適化の詳細。構造体配列として返されます。

各フィールドには、最終的な値または名前と値のペアの引数の指定が格納されます。たとえば、Objective は最適化が終了したときの目的関数の値です。多次元フィールドの行は Lambda の値に、列は Solver の値に対応します。

次の表で、主なフィールドを説明します。

フィールド説明
TerminationStatus
  • 最適化の終了理由

  • TerminationCode の値に対応

FitTime秒単位の経過実時間
History

各反復における最適化情報の構造体配列。Solver フィールドには、整数符号化を使用してソルバーのタイプが格納されます。

整数ソルバー
1SGD
2ASGD
3SVM 用の双対 SGD
4LBFGS
5BFGS
6SpaRSA

フィールドにアクセスするには、ドット表記を使用します。たとえば、各反復における目的関数値のベクトルにアクセスするには、FitInfo.History.Objective と入力します。

FitInfo を確認して、収束が満足できるものであるかどうかを評価することをお勧めします。

ハイパーパラメーターの交差検証最適化。ハイパーパラメーターおよび関連する値が含まれている table または BayesianOptimization オブジェクトとして返されます。'OptimizeHyperparameters' の値が 'none' ではない場合、出力は空以外です。出力値は、名前と値のペアの引数 'HyperparameterOptimizationOptions'Optimizer フィールドの値に依存します。

Optimizer フィールドの値HyperparameterOptimizationResults の値
'bayesopt' (既定の設定)BayesianOptimization クラスのオブジェクト
'gridsearch' または 'randomsearch'使用したハイパーパラメーター、観測された目的関数の値 (交差検証損失)、および最低 (最良) から最高 (最悪) までの観測値の順位が格納されているテーブル

詳細

すべて折りたたむ

ウォーム スタート

"ウォーム スタート" は、収束時間を短縮するために最適化ルーチンに与えられるベータ係数およびバイアス項の初期推定値です。

低次元データの代替方法

fitclinear および fitrlinear は、高次元の線形モデルについては比較的高速に目的関数を最小化しますが、精度が犠牲になり、モデルがパラメーターに関して線形でなければならないという制限があります。予測子データ セットが低~中次元の場合は、別の分類または回帰近似関数を使用できます。次の表は、どの近似関数がデータ セットに適しているかを判断するために役立ちます。

近似させるモデル関数主なアルゴリズムの違い
SVM
  • 非線形カーネル変換に適している、予測子変数のグラム行列を計算します。

  • quadprog (Optimization Toolbox) を使用して二次計画法で SMO、ISDA または L1 最小化により双対問題を解きます。

線形回帰
  • 正則化を行わない最小二乗: fitlm

  • LASSO ペナルティを使用する正則化最小二乗: lasso

  • リッジ回帰: ridge または lasso

  • lasso は、循環的な座標降下を実装します。

ロジスティック回帰
  • 正則化を行わないロジスティック回帰: fitglm

  • LASSO ペナルティを使用する正則化ロジスティック回帰: lassoglm

  • fitglm は、反復的に再重み付けした最小二乗を実装します。

  • lassoglm は、循環的な座標降下を実装します。

ヒント

  • 観測値が列に対応するように予測子行列を配置して 'ObservationsIn','columns' を指定することをお勧めします。このようにすると、最適化実行時間が大幅に短縮される可能性があります。

  • 予測子データに含まれている観測値の数が少なく、予測子変数の数が多い場合、次のようにします。

    • 'PostFitBias',true を指定します。

    • ソルバーが SGD または ASGD の場合、PassLimit を 1 より大きい正の整数 (5 や 10 など) に設定します。このように設定すると、多くの場合に精度が向上します。

  • ソルバーが SGD または ASGD の場合、BatchSize は収束速度に影響を与えます。

    • BatchSize が小さすぎる場合、fitclinear が最小値を計算するための反復回数は多くなりますが、反復ごとの勾配の計算時間は短くなります。

    • BatchSize が大きすぎる場合、fitclinear が最小値を計算するための反復回数は少なくなりますが、反復ごとの勾配の計算時間は長くなります。

  • 学習率 (LearnRate を参照) が大きいと、最小値への収束が高速になりますが、発散 (最小値の限度を超える状態) の可能性があります。学習率が小さいと最小値への収束が保証されますが、終了までに時間がかかる可能性があります。

  • LASSO ペナルティを使用する場合は、さまざまな値の TruncationPeriod を試してください。たとえば、TruncationPeriod110 に設定してから 100 に設定します。

  • 効率のため、fitclinear は予測子データを標準化しません。X を標準化して観測値が列に対応するように配置するには、次のように入力します。

    X = normalize(X,2);

    観測値が行に対応するように配置する場合は、次のように入力します。

    X = normalize(X);

    メモリを節約するため、このコードは元の予測子データを標準化されたデータに置き換えます。

  • モデルに学習をさせた後で、新しいデータについてラベルを予測する C/C++ コードを生成できます。C/C++ コードの生成には MATLAB Coder™ が必要です。詳細については、コード生成の紹介を参照してください。

アルゴリズム

  • ValidationData を指定した場合、目的関数の最適化時に以下が行われます。

    • fitclinear は、現在のモデルを使用して ValidationData の検証損失を定期的に推定し、最小の推定値を追跡します。

    • fitclinear は、検証損失を推定するときに、推定値を最小の推定値と比較します。

    • 以後の検証損失の推定値が最小推定値の 5 倍より大きくなった場合、fitclinear は最適化を終了します。

  • ValidationData を指定して交差検証ルーチン (CrossValCVPartitionHoldout または KFold) を実装した場合、次のようになります。

    1. fitclinear は、選択された交差検証ルーチンに従って XY (または Tbl) を無作為に分割します。

    2. fitclinear は、学習データの分割を使用してモデルに学習をさせます。目的関数の最適化時に、fitclinear は最適化を終了させるための他の可能な方法として ValidationData を使用します (詳細については、前の項目を参照)。

    3. 終了条件が満たされると、fitclinear は最適化された線形係数および切片に基づいて学習済みのモデルを構築します。

      1. k 分割交差検証を実装した場合、fitclinear が網羅していない学習セット分割があると、fitclinear はステップ 2 に戻り、次の学習セット分割を使用して学習を行います。

      2. それ以外の場合、fitclinear は学習を終了させ、交差検証済みのモデルを返します。

    4. 交差検証済みモデルの品質を判断できます。以下に例を示します。

      • ステップ 1 のホールドアウトまたは分割外データを使用して検証損失を決定するには、交差検証済みのモデルを kfoldLoss に渡します。

      • ステップ 1 のホールドアウトまたは分割外データで観測値を予測するには、交差検証済みのモデルを kfoldPredict に渡します。

  • 名前と値の引数 CostPrior、および Weights を指定すると、出力モデル オブジェクトに CostPrior、および W の各プロパティの指定値がそれぞれ格納されます。Cost プロパティには、ユーザー指定のコスト行列 (C) が変更なしで格納されます。Prior プロパティと W プロパティには、正規化後の事前確率と観測値の重みがそれぞれ格納されます。モデルの学習用に、事前確率と観測値の重みが更新されて、コスト行列で指定されているペナルティが組み込まれます。詳細については、誤分類コスト行列、事前確率、および観測値の重みを参照してください。

参照

[1] Hsieh, C. J., K. W. Chang, C. J. Lin, S. S. Keerthi, and S. Sundararajan. “A Dual Coordinate Descent Method for Large-Scale Linear SVM.” Proceedings of the 25th International Conference on Machine Learning, ICML ’08, 2001, pp. 408–415.

[2] Langford, J., L. Li, and T. Zhang. “Sparse Online Learning Via Truncated Gradient.” J. Mach. Learn. Res., Vol. 10, 2009, pp. 777–801.

[3] Nocedal, J. and S. J. Wright. Numerical Optimization, 2nd ed., New York: Springer, 2006.

[4] Shalev-Shwartz, S., Y. Singer, and N. Srebro. “Pegasos: Primal Estimated Sub-Gradient Solver for SVM.” Proceedings of the 24th International Conference on Machine Learning, ICML ’07, 2007, pp. 807–814.

[5] Wright, S. J., R. D. Nowak, and M. A. T. Figueiredo. “Sparse Reconstruction by Separable Approximation.” Trans. Sig. Proc., Vol. 57, No 7, 2009, pp. 2479–2493.

[6] Xiao, Lin. “Dual Averaging Methods for Regularized Stochastic Learning and Online Optimization.” J. Mach. Learn. Res., Vol. 11, 2010, pp. 2543–2596.

[7] Xu, Wei. “Towards Optimal One Pass Large Scale Learning with Averaged Stochastic Gradient Descent.” CoRR, abs/1107.2490, 2011.

拡張機能

バージョン履歴

R2016a で導入

すべて展開する