高次元データに対する線形分類モデルのあてはめ
fitclinear
は、高次元の非スパースまたはスパース予測子データを使用して、2 クラス (バイナリ) 学習用の線形分類モデルに学習をさせます。使用可能な線形分類モデルには、正則化されたサポート ベクター マシン (SVM) とロジスティック回帰モデルがあります。fitclinear
は、計算時間を短縮する手法 (確率的勾配降下法など) を使用して目的関数を最小化します。
多数の予測子変数が含まれている高次元データセットに対する計算時間を短縮するには、fitclinear
を使用して線形分類モデルに学習をさせます。低~中次元の予測子データセットについては、低次元データの代替方法を参照してください。
誤り訂正出力符号を使用して SVM またはロジスティック回帰バイナリ分類器を結合することによりマルチクラス学習用の線形分類モデルに学習をさせる方法については、fitcecoc
を参照してください。
は、table Mdl
= fitclinear(Tbl
,ResponseVarName
)Tbl
内の予測子変数と Tbl.ResponseVarName
内のクラス ラベルを使用して、線形分類モデルを返します。
では、前の構文におけるいずれかの入力引数の組み合わせに加えて、1 つ以上の名前と値のペアの引数を使用してオプションを指定します。たとえば、予測子行列の列が観測値に対応するように指定したり、ロジスティック回帰の実装や交差検証を指定することができます。名前と値のペアの引数 Mdl
= fitclinear(X
,Y
,Name,Value
)'Kfold'
を使用して交差検証を行うことをお勧めします。交差検証の結果により、モデルがどの程度一般化を行うかを判断します。
[
は、名前と値のペア 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' Properties, Methods
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.1291
Solver: {'dual'}
Mdl
は ClassificationLinear
モデルです。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';
~ の範囲で対数間隔で配置された 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: [1×1 cvpartition] ClassNames: [0 1] ScoreTransform: 'none' Properties, Methods
numCLModels = numel(CVMdl.Trained)
numCLModels = 5
CVMdl
は ClassificationPartitionedLinear
モデルです。fitclinear
は 5 分割の交差検証を実装するので、各分割について学習させる 5 つの ClassificationLinear
モデルが CVMdl
に格納されます。
1 番目の学習済み線形分類モデルを表示します。
Mdl1 = CVMdl.Trained{1}
Mdl1 = ClassificationLinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'logit' Beta: [34023×11 double] Bias: [-13.2559 -13.2559 -13.2559 -13.2559 -9.1017 -7.1128 -5.4113 -4.4974 -3.6007 -3.1606 -2.9794] 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' Properties, Methods
Mdl1
は ClassificationLinear
モデル オブジェクトです。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
予測子変数のスパース性と分類誤差の低さのバランスがとれている正則化強度のインデックスを選択します。この場合、 ~ の値で十分なはずです。
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 | 4.0257 | 0.041619 | 0.041619 | 0.077903 | logistic |
| 2 | Best | 0.00072849 | 3.8245 | 0.00072849 | 0.0028767 | 2.1405e-09 | logistic |
| 3 | Accept | 0.049221 | 4.6777 | 0.00072849 | 0.00075737 | 0.72101 | svm |
| 4 | Accept | 0.00079184 | 4.299 | 0.00072849 | 0.00074989 | 3.4734e-07 | svm |
| 5 | Accept | 0.00082351 | 3.9102 | 0.00072849 | 0.00072924 | 1.1738e-08 | logistic |
| 6 | Accept | 0.00085519 | 4.2132 | 0.00072849 | 0.00072746 | 2.4529e-09 | svm |
| 7 | Accept | 0.00079184 | 4.1282 | 0.00072849 | 0.00072518 | 3.1854e-08 | svm |
| 8 | Accept | 0.00088686 | 4.4564 | 0.00072849 | 0.00072236 | 3.1717e-10 | svm |
| 9 | Accept | 0.00076017 | 3.7918 | 0.00072849 | 0.00068304 | 3.1837e-10 | logistic |
| 10 | Accept | 0.00079184 | 4.4733 | 0.00072849 | 0.00072853 | 1.1258e-07 | svm |
| 11 | Accept | 0.00076017 | 3.9953 | 0.00072849 | 0.00072144 | 2.1214e-09 | logistic |
| 12 | Accept | 0.00079184 | 6.7875 | 0.00072849 | 0.00075984 | 2.2819e-07 | logistic |
| 13 | Accept | 0.00072849 | 4.2131 | 0.00072849 | 0.00075648 | 6.6161e-08 | logistic |
| 14 | Best | 0.00069682 | 4.3785 | 0.00069682 | 0.00069781 | 7.4324e-08 | logistic |
| 15 | Best | 0.00066515 | 4.3717 | 0.00066515 | 0.00068861 | 7.6994e-08 | logistic |
| 16 | Accept | 0.00076017 | 3.9068 | 0.00066515 | 0.00068881 | 7.0687e-10 | logistic |
| 17 | Accept | 0.00066515 | 4.5966 | 0.00066515 | 0.0006838 | 7.7159e-08 | logistic |
| 18 | Accept | 0.0012353 | 4.6723 | 0.00066515 | 0.00068521 | 0.00083275 | svm |
| 19 | Accept | 0.00076017 | 4.2389 | 0.00066515 | 0.00068508 | 5.0781e-05 | svm |
| 20 | Accept | 0.00085519 | 3.2483 | 0.00066515 | 0.00068527 | 0.00022104 | svm |
|=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | Lambda | Learner | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 21 | Accept | 0.00082351 | 6.7163 | 0.00066515 | 0.00068569 | 4.5396e-06 | svm |
| 22 | Accept | 0.0010769 | 15.946 | 0.00066515 | 0.00070107 | 5.1931e-06 | logistic |
| 23 | Accept | 0.00095021 | 17.989 | 0.00066515 | 0.00069594 | 1.3051e-06 | logistic |
| 24 | Accept | 0.00085519 | 5.5831 | 0.00066515 | 0.00069625 | 1.6481e-05 | svm |
| 25 | Accept | 0.00085519 | 4.5366 | 0.00066515 | 0.00069643 | 1.157e-06 | svm |
| 26 | Accept | 0.00079184 | 3.6968 | 0.00066515 | 0.00069667 | 1.0016e-08 | svm |
| 27 | Accept | 0.00072849 | 3.9655 | 0.00066515 | 0.00069848 | 4.2234e-08 | logistic |
| 28 | Accept | 0.049221 | 0.49611 | 0.00066515 | 0.00069842 | 3.1608 | logistic |
| 29 | Accept | 0.00085519 | 4.3911 | 0.00066515 | 0.00069855 | 8.5626e-10 | svm |
| 30 | Accept | 0.00076017 | 3.8952 | 0.00066515 | 0.00069837 | 3.1946e-10 | logistic |
__________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 173.5287 seconds. Total objective function evaluation time: 153.4246 Best observed feasible point: Lambda Learner __________ ________ 7.6994e-08 logistic Observed objective function value = 0.00066515 Estimated objective function value = 0.00069859 Function evaluation time = 4.3717 Best estimated feasible point (according to models): Lambda Learner __________ ________ 7.4324e-08 logistic Estimated objective function value = 0.00069837 Estimated function evaluation time = 4.3951
Mdl = ClassificationLinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'logit' Beta: [34023×1 double] Bias: -10.1723 Lambda: 7.4324e-08 Learner: 'logistic' Properties, Methods
X
— 予測子データ予測子データ。n 行 p 列の非スパース行列またはスパース行列を指定します。
Y
の長さと X
の観測値数は同じでなければなりません。
メモ
観測値が列に対応するように予測子行列を配置して 'ObservationsIn','columns'
を指定すると、最適化実行時間が大幅に短縮される可能性があります。
データ型: single
| double
Y
— クラス ラベル分類モデルが学習するクラス ラベル。categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。
fitclinear
はバイナリ分類のみをサポートします。Y
に正確に 2 つの異なるクラスを含めるか、名前と値のペアの引数 'ClassNames'
を使用して学習用の 2 つのクラスを指定しなければなりません。マルチクラス学習については、fitcecoc
を参照してください。
Y
が文字配列の場合、各要素は配列の 1 つの行に対応しなければなりません。
名前と値のペアの引数 ClassNames
を使用してクラスの順序を指定することをお勧めします。
データ型: char
| string
| cell
| categorical
| logical
| single
| double
Tbl
— 標本データモデルを学習させるために使用する標本データ。テーブルとして指定します。Tbl
の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。オプションとして、Tbl
に応答変数用の列を 1 つ追加できます。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。
Tbl
に応答変数が含まれている場合に Tbl
内の他の変数をすべて予測子として使用するには、ResponseVarName
を使用して応答変数を指定します。
Tbl
に応答変数が含まれている場合に Tbl
内の他の変数の一部のみを予測子として使用するには、formula
を使用して式を指定します。
Tbl
に応答変数が含まれていない場合は、Y
を使用して応答変数を指定します。応答変数の長さと Tbl
の行数は等しくなければなりません。
データ型: table
ResponseVarName
— 応答変数名Tbl
内の変数の名前応答変数の名前。Tbl
内の変数の名前で指定します。
ResponseVarName
には文字ベクトルまたは string スカラーを指定しなければなりません。たとえば、応答変数 Y
が Tbl.Y
として格納されている場合、'Y'
として指定します。それ以外の場合、モデルを学習させるときに、Tbl
の列は Y
を含めてすべて予測子として扱われます。
応答変数は、categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列でなければなりません。Y
が文字配列である場合、応答変数の各要素は配列の 1 つの行に対応しなければなりません。
名前と値のペアの引数 ClassNames
を使用してクラスの順序を指定することをお勧めします。
データ型: char
| string
formula
— 応答変数および予測子変数サブセットの説明モデル応答変数および予測子変数サブセットの説明モデル。'Y~X1+X2+X3'
という形式の文字ベクトルまたは string スカラーを指定します。この式では、Y
は応答変数を、X1
、X2
および X3
は予測子変数を表します。
モデルに学習をさせるための予測子として Tbl
内の変数のサブセットを指定するには、式を使用します。式を指定した場合、formula
に現れない Tbl
内の変数は使用されません。
式の変数名は Tbl
の変数名 (Tbl.Properties.VariableNames
) であり、有効な MATLAB® 識別子でなければなりません。
関数 isvarname
を使用して Tbl
の変数名を検証できます。次のコードは、有効な変数名をもつ各変数の logical 1
(true
) を返します。
cellfun(@isvarname,Tbl.Properties.VariableNames)
Tbl
の変数名が有効ではない場合、関数 matlab.lang.makeValidName
を使用してそれらを変換します。Tbl.Properties.VariableNames = matlab.lang.makeValidName(Tbl.Properties.VariableNames);
データ型: char
| string
メモ:
ソフトウェアは、NaN
、空の文字ベクトル (''
)、空の string (""
)、<missing>
、および <undefined>
の要素を欠損値として扱い、以下のいずれかの特性をもつ観測値を削除します。
応答変数 (たとえば、Y
または ValidationData
{2}
) の欠損値
予測子の観測値 (たとえば、X
または ValidationData{1}
の行) 内の少なくとも 1 つの欠損値
NaN
値または重み 0
(たとえば、Weights
または ValidationData{3}
内の値)
メモリを節約するため、学習を行う前に欠損値が含まれている観測値を学習データから手動で削除することをお勧めします。
オプションの Name,Value
引数のコンマ区切りペアを指定します。Name
は引数名で、Value
は対応する値です。Name
は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN
のように、複数の名前と値のペアの引数を、任意の順番で指定できます。
'ObservationsIn','columns','Learner','logistic','CrossVal','on'
は、予測子行列の列が観測値に対応すること、ロジスティック回帰の実装、および 10 分割交差検証の実装を指定します。メモ
交差検証の名前と値のペアの引数を名前と値のペアの引数 'OptimizeHyperparameters'
と同時に使用することはできません。'OptimizeHyperparameters'
の場合の交差検証は、名前と値のペアの引数 'HyperparameterOptimizationOptions'
を使用することのみによって変更できます。
'Lambda'
— 正則化項の強度'auto'
(既定値) | 非負のスカラー | 非負値のベクトル。正則化項の強度。'Lambda'
と 'auto'
、非負のスカラーまたは非負値のベクトルから構成されるコンマ区切りのペアとして指定します。
'auto'
の場合、Lambda
= 1/n です。
交差検証の名前と値のペアの引数 (CrossVal
など) を指定した場合、n は分割内観測値の数です。
それ以外の場合、n は学習標本のサイズです。
非負値のベクトルの場合、fitclinear
は、Lambda
の異なる値それぞれについて目的関数の最適化を逐次的に昇順で実行します。
Solver
が 'sgd'
または 'asgd'
で Regularization
が 'lasso'
の場合、fitclinear
が前の係数の推定値を次の最適化反復のウォーム スタートとして使用することはありません。それ以外の場合、fitclinear
はウォーム スタートを使用します。
Regularization
が 'lasso'
の場合、fitclinear
が Lambda
の以後の値を使用して最適化を行うときに、係数の推定値 0 は値が保持されます。
fitclinear
は、指定された正則化強度ごとに係数の推定値を返します。
例: 'Lambda',10.^(-(10:-2:2))
データ型: char
| string
| double
| single
'Learner'
— 線形分類モデルのタイプ'svm'
(既定値) | 'logistic'
線形分類モデルのタイプ。'Learner'
と 'svm'
または 'logistic'
から構成されるコンマ区切りのペアとして指定します。
次の表では、 です。
β は p 個の係数のベクトルです。
x は p 個の予測子変数による観測値です。
b はスカラー バイアスです。
値 | アルゴリズム | 応答の範囲 | 損失関数 |
---|---|---|---|
'svm' | サポート ベクター マシン | y ∊ {–1,1}。陽性クラスの場合は 1、それ以外の場合は –1 | ヒンジ: |
'logistic' | ロジスティック回帰 | 'svm' と同じ | 逸脱度 (ロジスティック): |
例: 'Learner','logistic'
'ObservationsIn'
— 予測子データにおける観測値の次元'rows'
(既定値) | 'columns'
予測子データにおける観測値の次元。'ObservationsIn'
と 'columns'
または 'rows'
から構成されるコンマ区切りのペアとして指定します。
メモ
観測値が列に対応するように予測子行列を配置して 'ObservationsIn','columns'
を指定すると、最適化実行時間が大幅に短縮される可能性があります。table の予測子データに対して 'ObservationsIn','columns'
を指定することはできません。
'Regularization'
— 複雑度ペナルティのタイプ'lasso'
| 'ridge'
複雑度ペナルティのタイプ。'Regularization'
と 'lasso'
または 'ridge'
から構成されるコンマ区切りのペアとして指定します。
最小化のための目的関数は、平均損失関数 (Learner
を参照) と次の表の正則化項を加算することにより作成されます。
値 | 説明 |
---|---|
'lasso' | LASSO (L1) ペナルティ: |
'ridge' | リッジ (L2) ペナルティ: |
正則化項の強度 (式の λ) を指定するには、Lambda
を使用します。
バイアス項 (β0) は正則化ペナルティから除外されます。
Solver
が 'sparsa'
の場合、Regularization
の既定値は 'lasso'
になります。それ以外の場合は、既定値は 'ridge'
です。
例: 'Regularization','lasso'
'Solver'
— 目的関数の最小化手法'sgd'
| 'asgd'
| 'dual'
| 'bfgs'
| 'lbfgs'
| 'sparsa'
| string 配列 | 文字ベクトルの cell 配列目的関数の最小化手法。'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 の次元数が非常に多い場合は非効率的です。 |
'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
について使用されます。
選択するソルバーの詳細は、ヒントを参照してください。
例: 'Solver',{'sgd','lbfgs'}
'Beta'
— 線形係数の初期推定値zeros(p
,1)
(既定値) | 数値ベクトル | 数値行列線形係数の初期推定値 (β)、'Beta'
と p 次元の数値ベクトルまたは p 行 L 列の数値行列から構成されるコンマ区切りのペアとして指定します。p は X
の予測子変数の数、L は正則化強度値の数です (詳細については、Lambda
を参照)。
p 次元ベクトルを指定した場合、次のプロセスを使用して目的関数が L 回最適化されます。
初期値として Beta
、正則化強度として Lambda
の最小値を使用して最適化を行う。
前回の最適化で生成された推定値をウォーム スタートとして使用し、Lambda
内の次に小さい値を正則化強度として使用して、再度最適化を行う。
Lambda
の値をすべて使用するまでステップ 2 を繰り返す。
p 行 L 列の行列を指定した場合、目的関数が L 回最適化されます。反復 j
では、初期値として Beta(:,
が使用され、j
)Lambda
を昇順で並べ替えた後で正則化強度として Lambda(
が使用されます。j
)
'Solver','dual'
を設定した場合、Beta
は無視されます。
データ型: single
| double
'Bias'
— 切片の初期推定値切片の初期推定値 (b)。'Bias'
と数値スカラーまたは L 次元の数値ベクトルから構成されるコンマ区切りのペアとして指定します。L は正則化強度値の数です (詳細については、Lambda
を参照)。
スカラーを指定した場合、次のプロセスを使用して目的関数が L 回最適化されます。
初期値として Bias
、正則化強度として Lambda
の最小値を使用して最適化を行う。
生成された推定値を次回の最適化の反復でウォーム スタートとして使用し、Lambda
内の次に小さい値を正則化強度として使用する。
Lambda
の値をすべて使用するまでステップ 2 を繰り返す。
L 次元ベクトルを指定した場合、目的関数が L 回最適化されます。反復 j
では、初期値として Bias(
が使用され、j
)Lambda
を昇順で並べ替えた後で正則化強度として Lambda(
が使用されます。j
)
既定の設定では、次のようになります。
Learner
が 'logistic'
の場合、gj は Y(
が陽性クラスであれば 1、そうでなければ -1 になります。j
)Bias
は、学習の場合は g の、交差検証の場合は分割内観測値の加重平均になります。
Learner
が 'svm'
の場合、Bias
は 0 になります。
データ型: single
| double
'FitBias'
— 線形モデルの切片使用フラグtrue
(既定値) | false
線形モデルの切片使用フラグ。'FitBias'
と true
または false
から構成されるコンマ区切りのペアとして指定します。
値 | 説明 |
---|---|
true | 線形モデルにバイアス項 b が追加され、推定されます。 |
false | 推定時に b = 0 に設定されます。 |
例: 'FitBias',false
データ型: logical
'PostFitBias'
— 最適化後に線形モデルの切片をあてはめるフラグfalse
(既定値) | true
最適化後に線形モデルの切片をあてはめるフラグ。'PostFitBias'
と true
または false
から構成されるコンマ区切りのペアとして指定します。
値 | 説明 |
---|---|
false | 最適化時にバイアス項 b と係数 β が推定されます。 |
true |
b を推定するため、以下が行われます。
|
true
を指定する場合、FitBias
は true でなければなりません。
例: 'PostFitBias',true
データ型: logical
'Verbose'
— 詳細レベル0
(既定値) | 非負の整数詳細レベル。'Verbose'
と非負の整数から構成されるコンマ区切りのペアとして指定します。Verbose
は、fitclinear
がコマンド ラインに表示する診断情報の量を制御します。
値 | 説明 |
---|---|
0 | fitclinear は診断情報を表示しません。 |
1 | fitclinear は、目的関数の値や勾配の大きさなどの診断情報を定期的に表示および格納します。診断情報は FitInfo.History に格納されます。 |
他の正の整数 | fitclinear は、各最適化反復における診断情報を表示および格納します。診断情報は FitInfo.History に格納されます。 |
例: 'Verbose',1
データ型: double
| single
'BatchSize'
— ミニバッチのサイズミニバッチのサイズ。'BatchSize'
と正の整数から構成されるコンマ区切りのペアとして指定します。各反復では、学習データの観測値を BatchSize
個使用して劣勾配が推定されます。
X
が数値行列の場合、既定値は 10
です。
X
がスパース行列の場合、既定値は max([10,ceil(sqrt(ff))])
です。ここで、ff = numel(X)/nnz(X)
(X
の "スパース性係数") です。
例: 'BatchSize',100
データ型: single
| double
'LearnRate'
— 学習率学習率。'LearnRate'
と正のスカラーで構成される、コンマ区切りのペアとして指定します。LearnRate
は、劣勾配をスケールすることによって最適化のステップ サイズを制御します。
Regularization
が 'ridge'
の場合、LearnRate
は初期学習率 γ0 を指定します。fitclinear
は、次の式を使用して、反復 t、γt についての学習率を決定します。
Regularization
が 'lasso'
の場合、すべての反復について LearnRate
は一定になります。
既定の設定では、LearnRate
は 1/sqrt(1+max((sum(X.^2,obsDim))))
です。obsDim
は、観測値が予測子データ X
の列から構成されている場合は 1
、それ以外の場合は 2
です。
例: 'LearnRate',0.01
データ型: single
| double
'OptimizeLearnRate'
— 学習率を減少させるフラグtrue
(既定値) | false
発散 (最小値の限度を超える状態) が検出された場合に学習率を減少させるフラグ。'OptimizeLearnRate'
と true
または false
から構成されるコンマ区切りのペアとして指定します。
OptimizeLearnRate
が 'true'
の場合、次のようになります。
数回の最適化反復について、LearnRate
を学習率として使用して最適化が開始される。
目的関数の値が増加した場合、現在の学習率の半分の値を使用して再開される。
目的関数が減少するまで、ステップ 2 が繰り返される。
例: 'OptimizeLearnRate',true
データ型: logical
'TruncationPeriod'
— LASSO 切り捨て実行間のミニバッチの回数10
(既定値) | 正の整数LASSO 切り捨て実行間のミニバッチの回数。'TruncationPeriod'
と正の整数から構成されるコンマ区切りのペアとして指定します。
切り捨て実行の後で、ソフトしきい値が線形係数に適用されます。つまり、k = TruncationPeriod
回のミニバッチが処理された後で、次を使用して係数推定 j が切り捨てられます。
SGD の場合、 はミニバッチを次を満たす k の回数処理した後の係数 j の推定値です。γt は反復 t における学習率です。λ は Lambda
の値です。
ASGD の場合、 はミニバッチを次を満たす k の回数処理した後の係数 j の平均推定値です。
Regularization
が 'ridge'
の場合、TruncationPeriod
は無視されます。
例: 'TruncationPeriod',100
データ型: single
| double
'CategoricalPredictors'
— カテゴリカル予測子のリスト'all'
カテゴリカル予測子のリスト。'CategoricalPredictors'
と次の表のいずれかの値から構成されるコンマ区切りのペアとして指定します。説明は、予測子データの行に観測値、列に予測子があると仮定しています。
値 | 説明 |
---|---|
正の整数のベクトル | ベクトルの各エントリは、カテゴリカル変数が含まれている予測子データ (X または Tbl ) の列に対応するインデックス値です。 |
logical ベクトル | true というエントリは、予測子データ (X または Tbl ) の対応する列がカテゴリカル変数であることを意味します。 |
文字行列 | 行列の各行は予測子変数の名前です。名前は 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
'ClassNames'
— 学習に使用するクラスの名前学習に使用するクラスの名前。'ClassNames'
と categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列から構成されるコンマ区切りのペアとして指定します。ClassNames
のデータ型は Y
と同じでなければなりません。
ClassNames
が文字配列の場合、各要素は配列の 1 つの行に対応しなければなりません。
'ClassNames'
の使用目的は次のとおりです。
学習時のクラスの順序を指定する。
クラスの順序に対応する入力または出力引数の次元の順序を指定する。たとえば、Cost
の次元の順序や predict
によって返される分類スコアの列の順序を指定するために 'ClassNames'
を使用します。
学習用にクラスのサブセットを選択する。たとえば、Y
に含まれているすべての異なるクラス名の集合が {'a','b','c'}
であるとします。クラス 'a'
および 'c'
のみの観測値を使用してモデルに学習をさせるには、'ClassNames',{'a','c'}
を指定します。
ClassNames
の既定値は、Y
に含まれているすべての異なるクラス名の集合です。
例: 'ClassNames',{'b','g'}
データ型: categorical
| char
| string
| logical
| single
| double
| cell
'Cost'
— 誤分類のコスト誤分類のコスト。'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
は異なるクラスの個数です。
fitclinear
は Cost
を使用して、Prior
で指定されたクラスの事前確率を調整します。その後、fitclinear
は調整した事前確率を学習に使用し、コスト行列を既定設定にリセットします。
例: 'Cost',[0 2; 1 0]
データ型: single
| double
| struct
'PredictorNames'
— 予測子変数名予測子変数名。'PredictorNames'
と一意な名前の string 配列または一意な文字ベクトルの cell 配列から構成されるコンマ区切りのペアとして指定します。'PredictorNames'
の機能は、学習データの提供方法によって決まります。
X
と Y
を指定した場合、'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
の予測子変数と応答変数のみを使用します。
PredictorNames
は Tbl.Properties.VariableNames
のサブセットでなければならず、応答変数の名前を含めることはできません。
既定では、すべての予測子変数の名前が PredictorNames
に格納されます。
'PredictorNames'
と formula
の両方ではなく、いずれか一方を使用して学習用の予測子を指定することをお勧めします。
例: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}
データ型: string
| cell
'Prior'
— 事前確率'empirical'
(既定値) | 'uniform'
| 数値ベクトル | 構造体配列各クラスの事前確率。'Prior'
と 'empirical'
、'uniform'
、数値ベクトルまたは構造体配列から構成されるコンマ区切りのペアとして指定します。
次の表は、事前確率の設定に使用できるオプションの一覧です。
値 | 説明 |
---|---|
'empirical' | クラスの事前確率は、Y のクラスの相対的頻度です。 |
'uniform' | クラスの事前確率はいずれも 1/K (K はクラス数) となります。 |
数値ベクトル | 各要素はクラスの事前確率です。Y 内の順序に従って要素の順序を指定します。名前と値のペアの引数 'ClassNames' を使用して順序を指定した場合は、それに従って要素の順序が設定されます。 |
構造体配列 |
構造体
|
fitclinear
は、合計が 1 になるように Prior
の事前確率を正規化します。
例: 'Prior',struct('ClassNames',{{'setosa','versicolor'}},'ClassProbs',1:2)
データ型: char
| string
| double
| single
| struct
'ResponseName'
— 応答変数名'Y'
(既定値) | 文字ベクトル | string スカラー応答変数名。'ResponseName'
と文字ベクトルまたは string スカラーから構成されるコンマ区切りのペアとして指定します。
Y
を指定した場合、'ResponseName'
を使用して応答変数の名前を指定できます。
ResponseVarName
または formula
を指定した場合、'ResponseName'
を使用することはできません。
例: 'ResponseName','response'
データ型: char
| string
'ScoreTransform'
— スコア変換'none'
(既定値) | 'doublelogit'
| 'invlogit'
| 'ismax'
| 'logit'
| 関数ハンドル | ...スコア変換。'ScoreTransform'
と文字ベクトル、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
'Weights'
— 観測値の重みTbl
内の変数の名前観測値の重み。'Weights'
と、正の数値ベクトル (または Tbl
に含まれる変数の名前) から構成されるコンマ区切りのペアとして指定します。ソフトウェアは、X
または Tbl
の各観測値に、Weights
の対応する値で重みを付けます。Weights
の長さは、X
または Tbl
の観測値の数と等しくなければなりません。
入力データをテーブル Tbl
として指定した場合、Weights
は数値ベクトルが含まれている Tbl
内の変数の名前にすることができます。この場合、Weights
には文字ベクトルまたは string スカラーを指定しなければなりません。たとえば、重みベクトル W
が Tbl.W
として格納されている場合、'W'
として指定します。それ以外の場合、モデルに学習をさせるときに、Tbl
の列は W
を含めてすべて予測子または応答変数として扱われます。
既定の設定では、Weights
は ones(n,1)
です。n
は X
または Tbl
の観測値数です。
合計が各クラスの事前確率の値と等しくなるように Weights
が正規化されます。
データ型: single
| double
| char
| string
'CrossVal'
— 交差検証フラグ'off'
(既定値) | 'on'
交差検証フラグ。'Crossval'
と 'on'
または 'off'
から構成されるコンマ区切りのペアとして指定します。
'on'
を指定した場合、10 分割の交差検証が実施されます。
この交差検証の設定をオーバーライドするには、名前と値のペアの引数 CVPartition
、Holdout
、KFold
のいずれかを使用します。交差検証済みモデルを作成するために使用できる交差検証の名前と値のペアの引数は、一度に 1 つだけです。
例: 'Crossval','on'
'CVPartition'
— 交差検証分割[]
(既定値) | cvpartition
分割オブジェクト交差検証分割。'CVPartition'
と cvpartition
により作成された cvpartition
分割オブジェクトで構成されるコンマ区切りのペアとして指定します。分割オブジェクトは交差検証のタイプおよび学習と検証セットのインデックス付けを指定します。
交差検証済みモデルを作成するために使用できるオプションは、'
CVPartition
'
、'
Holdout
'
、'
KFold
'
のいずれかのみです。
'Holdout'
— ホールドアウト検証の対象データの比率ホールドアウト検証に使用されるデータの比率。'Holdout'
と、(0,1) の範囲内のスカラー値から成るコンマ区切りのペアとして指定します。'Holdout',
を指定すると、次が実行されます。 p
% のデータを検証データとして無作為に予約し、残りのデータを使用してモデルを学習させるp
*100
コンパクトな学習済みモデルを交差検証済みモデルの Trained
プロパティに格納する。
交差検証済みモデルを作成するために使用できるオプションは、'
CVPartition
'
、'
Holdout
'
、'
KFold
'
のいずれかのみです。
例: 'Holdout',0.1
データ型: double
| single
'KFold'
— 分割の数10
(既定値) | 1 より大きい正の整数値交差検証分類器で使用する分割の数。'KFold'
と 1 より大きい正の整数値から構成されるコンマ区切りのペアとして指定します。たとえば 'KFold',k
を指定すると、次が実行されます。
データを無作為に k 個のセットに分割する
各セットについて、そのセットを検定データとして予約し、他の k – 1 個のセットを使用してモデルに学習をさせる
k
個のコンパクトな学習済みモデルを、交差検証済みモデルの Trained
プロパティに含まれている k
行 1 列の cell ベクトルのセルに格納する。
交差検証済みモデルを作成するために使用できるオプションは、'
CVPartition
'
、'
Holdout
'
、'
KFold
'
のいずれかのみです。
例: 'KFold',8
データ型: single
| double
'BatchLimit'
— バッチの最大回数バッチを処理する最大回数。'BatchLimit'
と正の整数から構成されるコンマ区切りのペアとして指定します。BatchLimit
回のバッチが処理されると、最適化が終了します。
例: 'BatchLimit',100
データ型: single
| double
'BetaTolerance'
— 線形係数およびバイアス項の相対許容誤差1e-4
(既定値) | 非負のスカラー線形係数およびバイアス項 (切片) の相対許容誤差。'BetaTolerance'
と非負のスカラーから構成されるコンマ区切りのペアとして指定します。
であるとします。これは、最適化反復 t における係数およびバイアス項のベクトルです。 で最適化が終了します。
Solver
で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver
で指定された次のソルバーが使用されます。
例: 'BetaTolerance',1e-6
データ型: single
| double
'NumCheckConvergence'
— 次回の収束チェックの前にバッチを処理する回数次回の収束チェックの前にバッチを処理する回数。'NumCheckConvergence'
と正の整数から構成されるコンマ区切りのペアとして指定します。
バッチのサイズの指定について、BatchSize
を参照してください。
既定の設定では、データセット全体が通されるたびに約 10 回収束がチェックされます。
例: 'NumCheckConvergence',100
データ型: single
| double
'PassLimit'
— 最大通過回数1
(既定値) | 正の整数データを通す最大回数。'PassLimit'
と正の整数から構成されるコンマ区切りのペアとして指定します。
データが完全に 1 回通されると、すべての観測値が fitclinear
で処理されます。
データが通される回数が PassLimit
になると、fitclinear
は最適化を終了します。
'
BatchLimit
'
と 'PassLimit'
を指定した場合、処理する観測値の数が最も少なくなる引数が fitclinear
により選択されます。
例: 'PassLimit',5
データ型: single
| double
'ValidationData'
— 最適化の収束を検出するための検証データ最適化の収束を検出するための検証データ。'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
で指定された次のソルバーが使用されます。
既定の設定では、検証データの損失を監視することによる収束の検出は行われません。
'BetaTolerance'
— 線形係数およびバイアス項の相対許容誤差1e-4
(既定値) | 非負のスカラー線形係数およびバイアス項 (切片) の相対許容誤差。'BetaTolerance'
と非負のスカラーから構成されるコンマ区切りのペアとして指定します。
であるとします。これは、最適化反復 t における係数およびバイアス項のベクトルです。 で最適化が終了します。
DeltaGradientTolerance
も指定した場合、いずれかの終了条件が満たされると最適化が終了します。
Solver
で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver
で指定された次のソルバーが使用されます。
例: 'BetaTolerance',1e-6
データ型: single
| double
'DeltaGradientTolerance'
— 勾配差分の許容誤差1
(既定値) | 非負のスカラー上位および下位プールのカルーシュ・キューン・タッカー (KKT) 相補性条件違反値の間における勾配差分の許容誤差。'DeltaGradientTolerance'
と非負のスカラーから構成されるコンマ区切りのペアとして指定します。
KKT 違反値の大きさが DeltaGradientTolerance
より小さい場合、最適化が終了します。
Solver
で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver
で指定された次のソルバーが使用されます。
例: 'DeltaGapTolerance',1e-2
データ型: double
| single
'NumCheckConvergence'
— 次回の収束チェックの前に処理するデータセット全体が通される回数5
(既定値) | 正の整数次回の収束チェックの前に処理するデータセット全体が通される回数。'NumCheckConvergence'
と正の整数から構成されるコンマ区切りのペアとして指定します。
例: 'NumCheckConvergence',100
データ型: single
| double
'PassLimit'
— 最大通過回数10
(既定値) | 正の整数データを通す最大回数。'PassLimit'
と正の整数から構成されるコンマ区切りのペアとして指定します。
データが完全に 1 回通されると、すべての観測値が処理されます。
データが通される回数が PassLimit
になると、最適化が終了します。
例: 'PassLimit',5
データ型: single
| double
'ValidationData'
— 最適化の収束を検出するための検証データ最適化の収束を検出するための検証データ。'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
で指定された次のソルバーが使用されます。
既定の設定では、検証データの損失を監視することによる収束の検出は行われません。
'BetaTolerance'
— 線形係数およびバイアス項の相対許容誤差1e-4
(既定値) | 非負のスカラー線形係数およびバイアス項 (切片) の相対許容誤差。'BetaTolerance'
と非負のスカラーから構成されるコンマ区切りのペアとして指定します。
であるとします。これは、最適化反復 t における係数およびバイアス項のベクトルです。 で最適化が終了します。
GradientTolerance
も指定した場合、いずれかの終了条件が満たされると最適化が終了します。
Solver
で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver
で指定された次のソルバーが使用されます。
例: 'BetaTolerance',1e-6
データ型: single
| double
'GradientTolerance'
— 勾配の絶対許容誤差1e-6
(既定値) | 非負のスカラー勾配の絶対許容誤差。'GradientTolerance'
と非負のスカラーから構成されるコンマ区切りのペアとして指定します。
最適化反復 t における係数およびバイアス項に関する目的関数の勾配ベクトルを とします。 で最適化が終了します。
BetaTolerance
も指定した場合、いずれかの終了条件が満たされると最適化が終了します。
指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver
で指定された次のソルバーが使用されます。
例: 'GradientTolerance',1e-5
データ型: single
| double
'HessianHistorySize'
— ヘッセ近似の履歴バッファーのサイズ15
(既定値) | 正の整数ヘッセ近似の履歴バッファーのサイズ。'HessianHistorySize'
と正の整数から構成されるコンマ区切りのペアとして指定します。各反復において、最新の HessianHistorySize
回の反復の統計量を使用してヘッシアンが構成されます。
SpaRSA の場合、'HessianHistorySize'
はサポートされません。
例: 'HessianHistorySize',10
データ型: single
| double
'IterationLimit'
— 最適化反復の最大回数1000
(既定値) | 正の整数最適化反復の最大回数。'IterationLimit'
と正の整数から構成されるコンマ区切りのペアとして指定します。IterationLimit
は、Solver
の値が 'bfgs'
、'lbfgs'
または 'sparsa'
である場合に適用されます。
例: 'IterationLimit',500
データ型: single
| double
'ValidationData'
— 最適化の収束を検出するための検証データ最適化の収束を検出するための検証データ。'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'
| 'all'
| 使用可能パラメーター名の string 配列または cell 配列 | optimizableVariable
オブジェクトのベクトル最適化するパラメーター。'OptimizeHyperparameters'
と次のいずれかから構成されるコンマ区切りのペアとして指定します。
'none'
— 最適化を行いません。
'auto'
— {'Lambda','Learner'}
を使用します。
'all'
— すべての使用可能パラメーターを最適化します。
使用可能パラメーター名の string 配列または cell 配列。
optimizableVariable
オブジェクトのベクトル。通常は hyperparameters
の出力です。
最適化では、パラメーターを変化させることにより、fitclinear
の交差検証損失 (誤差) を最小化しようとします。(各種の状況における) 交差検証損失の詳細については、分類損失を参照してください。交差検証のタイプおよびその他の最適化の側面を制御するには、名前と値のペア HyperparameterOptimizationOptions
を使用します。
メモ
'OptimizeHyperparameters'
の値は、他の名前と値のペアの引数を使用して設定した値より優先されます。たとえば、'OptimizeHyperparameters'
を 'auto'
に設定すると、'auto'
の値が適用されます。
fitclinear
では、以下のパラメーターを使用できます。
Lambda
— fitclinear
は、既定では範囲 [1e-5/NumObservations,1e5/NumObservations]
の対数スケールで、正の値を探索します。
Learner
— fitclinear
は、'svm'
と 'logistic'
で探索します。
Regularization
— fitclinear
は、'ridge'
と 'lasso'
で探索します。
既定以外のパラメーターを設定するには、既定以外の値が含まれている optimizableVariable
オブジェクトのベクトルを渡します。たとえば、以下のようにします。
load fisheriris params = hyperparameters('fitclinear',meas,species); params(1).Range = [1e-4,1e6];
OptimizeHyperparameters
の値として params
を渡します。
既定では、コマンド ラインに反復表示が表示され、最適化のハイパーパラメーターの個数に従ってプロットが表示されます。最適化とプロットにおける目的関数は、回帰の場合は log(1 + cross-validation loss)、分類の場合は誤分類率です。反復表示を制御するには、名前と値のペアの引数 'HyperparameterOptimizationOptions'
の Verbose
フィールドを設定します。プロットを制御するには、名前と値のペアの引数 'HyperparameterOptimizationOptions'
の ShowPlots
フィールドを設定します。
たとえば、線形分類器の最適化を参照してください。
例: 'OptimizeHyperparameters','auto'
'HyperparameterOptimizationOptions'
— 最適化のオプション最適化のオプション。'HyperparameterOptimizationOptions'
と構造体から構成されるコンマ区切りのペアとして指定します。この引数を指定すると、名前と値のペアの引数 OptimizeHyperparameters
の効果が変化します。この構造体のフィールドは、すべてオプションです。
フィールド名 | 値 | 既定の設定 |
---|---|---|
Optimizer |
| 'bayesopt' |
AcquisitionFunctionName |
オブジェクト関数のランタイムによって最適化が異なるので、名前に | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | 目的関数評価の最大数。 | 'bayesopt' または 'randomsearch' の場合は 30 、'gridsearch' の場合はグリッド全体 |
MaxTime | 制限時間。正の実数を指定します。制限時間の単位は、 | Inf |
NumGridDivisions | 'gridsearch' における各次元の値の個数。値は、各次元の値の個数を表す正の整数のベクトル、またはすべての次元に適用されるスカラーが可能です。カテゴリカル変数の場合、このフィールドは無視されます。 | 10 |
ShowPlots | プロットを表示するかどうかを示す論理値。true の場合、最良の目的関数の値が反復回数に対してプロットされます。1 つまたは 2 つの最適化パラメーターがあり、Optimizer が 'bayesopt' である場合、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
— 学習済みの線形分類モデルClassificationLinear
モデル オブジェクト | ClassificationPartitionedLinear
交差検証済みモデル オブジェクト学習済みの線形分類モデル。ClassificationLinear
モデル オブジェクトまたは ClassificationPartitionedLinear
交差検証済みモデル オブジェクトとして返されます。
名前と値のペアの引数 KFold
、Holdout
、CrossVal
、CVPartition
のいずれかを設定した場合、Mdl
は ClassificationPartitionedLinear
交差検証済みモデル オブジェクトになります。それ以外の場合、Mdl
は ClassificationLinear
モデル オブジェクトになります。
Mdl
のプロパティを参照するには、ドット表記を使用します。たとえば、推定された係数のベクトルまたは行列を表示するには、コマンド ウィンドウに Mdl.Beta
と入力します。
メモ
他の分類モデルとは異なり、また、メモリ消費を節約するため、学習データや学習過程の詳細 (収束履歴など) は ClassificationLinear
および ClassificationPartitionedLinear
モデル オブジェクトに格納されません。
FitInfo
— 最適化の詳細最適化の詳細。構造体配列として返されます。
各フィールドには、最終的な値または名前と値のペアの引数の指定が格納されます。たとえば、Objective
は最適化が終了したときの目的関数の値です。多次元フィールドの行は Lambda
の値に、列は Solver
の値に対応します。
次の表で、主なフィールドを説明します。
フィールド | 説明 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TerminationStatus |
| ||||||||||||||
FitTime | 秒単位の経過実時間 | ||||||||||||||
History | 各反復における最適化情報の構造体配列。
|
フィールドにアクセスするには、ドット表記を使用します。たとえば、各反復における目的関数値のベクトルにアクセスするには、FitInfo.History.Objective
と入力します。
FitInfo
を確認して、収束が満足できるものであるかどうかを評価することをお勧めします。
HyperparameterOptimizationResults
— ハイパーパラメーターの交差検証最適化BayesianOptimization
オブジェクト | ハイパーパラメーターおよび関連する値のテーブルハイパーパラメーターの交差検証最適化。ハイパーパラメーターおよび関連する値が含まれている table または BayesianOptimization
オブジェクトとして返されます。'OptimizeHyperparameters'
の値が 'none'
ではない場合、出力は空以外です。出力値は、名前と値のペアの引数 'HyperparameterOptimizationOptions'
の Optimizer
フィールドの値に依存します。
Optimizer フィールドの値 | HyperparameterOptimizationResults の値 |
---|---|
'bayesopt' (既定の設定) | BayesianOptimization クラスのオブジェクト |
'gridsearch' または 'randomsearch' | 使用したハイパーパラメーター、観測された目的関数の値 (交差検証損失)、および最低 (最良) から最高 (最悪) までの観測値の順位が格納されているテーブル |
"ウォーム スタート" は、収束時間を短縮するために最適化ルーチンに与えられるベータ係数およびバイアス項の初期推定値です。
高次元の線形分類および回帰モデルでは比較的高速に目的関数を最小化できますが、精度が犠牲になり、予測子変数が数値のみに制限され、モデルがパラメーターに関して線形でなければなりません。予測子データセットが低~中次元の場合、または種類の異なる変数が混在している場合、適切な分類または回帰近似関数を使用する必要があります。次の表は、どの近似関数が低次元データセットに適しているかを判断するために役立ちます。
近似させるモデル | 関数 | 主なアルゴリズムの違い |
---|---|---|
SVM |
| |
線形回帰 |
| |
ロジスティック回帰 |
|
観測値が列に対応するように予測子行列を配置して 'ObservationsIn','columns'
を指定することをお勧めします。このようにすると、最適化実行時間が大幅に短縮される可能性があります。
予測子データが高次元で Regularization
値が 'ridge'
のときに最適化の精度を向上させるには、Solver
に次のいずれかのオプションを設定します。
'sgd'
'asgd'
'dual'
(Learner
が 'svm'
の場合)
{'sgd','lbfgs'}
{'asgd','lbfgs'}
{'dual','lbfgs'}
(Learner
が 'svm'
の場合)
他のオプションでは、最適化の精度が低下する可能性があります。
予測子データが中~低次元で Regularization
値が 'ridge'
のときに最適化の精度を向上させるには、Solver
を 'bfgs'
に設定します。
Regularization
が 'lasso'
の場合、Solver
に次のいずれかのオプションを設定します。
'sgd'
'asgd'
'sparsa'
{'sgd','sparsa'}
{'asgd','sparsa'}
SGD と ASGD のいずれかを選択する場合、以下を考慮します。
SGD は反復あたりの時間が短くなりますが、収束するまでに必要な反復回数が多くなります。
ASGD は収束するまでに必要な反復回数が少なくなりますが、反復あたりの時間が長くなります。
予測子データに含まれている観測値の数が少なく、予測子変数の数が多い場合、次のようにします。
'PostFitBias',true
を指定します。
ソルバーが SGD または ASGD の場合、PassLimit
を 1 より大きい正の整数 (5 や 10 など) に設定します。このように設定すると、多くの場合に精度が向上します。
ソルバーが SGD または ASGD の場合、BatchSize
は収束速度に影響を与えます。
BatchSize
が小さすぎる場合、fitclinear
が最小値を計算するための反復回数は多くなりますが、反復ごとの勾配の計算時間は短くなります。
BatchSize
が大きすぎる場合、fitclinear
が最小値を計算するための反復回数は少なくなりますが、反復ごとの勾配の計算時間は長くなります。
学習率 (LearnRate
を参照) が大きいと、最小値への収束が高速になりますが、発散 (最小値の限度を超える状態) の可能性があります。学習率が小さいと最小値への収束が保証されますが、終了までに時間がかかる可能性があります。
LASSO ペナルティを使用する場合は、さまざまな値の TruncationPeriod
を試してください。たとえば、TruncationPeriod
を 1
、10
に設定してから 100
に設定します。
効率のため、fitclinear
は予測子データを標準化しません。X
を標準化するには、次のように入力します。
X = bsxfun(@rdivide,bsxfun(@minus,X,mean(X,2)),std(X,0,2));
このコードでは、予測子が行、観測値が列に対応するように X
が配置されている必要があります。また、メモリを節約するため、このコードは元の予測子データを標準化されたデータに置き換えます。
モデルに学習をさせた後で、新しいデータについてラベルを予測する C/C++ コードを生成できます。C/C++ コードの生成には MATLAB Coder™ が必要です。詳細については、コード生成の紹介を参照してください。
ValidationData
を指定した場合、目的関数の最適化時に以下が行われます。
fitclinear
は、現在のモデルを使用して ValidationData
の検定損失を定期的に推定し、最小の推定値を追跡します。
fitclinear
は、検定損失を推定するときに、推定値を最小の推定値と比較します。
以後の検定損失の推定値が最小推定値の 5 倍より大きくなった場合、fitclinear
は最適化を終了します。
ValidationData
を指定して交差検証ルーチン (CrossVal
、CVPartition
、Holdout
または KFold
) を実装した場合、次のようになります。
fitclinear
は、学習データの分割を使用してモデルに学習をさせます。目的関数の最適化時に、fitclinear
は最適化を終了させるための他の可能な方法として ValidationData
を使用します (詳細については、前の項目を参照)。
終了条件が満たされると、fitclinear
は最適化された線形係数および切片に基づいて学習済みのモデルを構築します。
k 分割交差検証を実装した場合、fitclinear
が網羅していない学習セット分割があると、fitclinear
はステップ 2 に戻り、次の学習セット分割を使用して学習を行います。
それ以外の場合、fitclinear
は学習を終了させ、交差検証済みのモデルを返します。
交差検証済みモデルの品質を判断できます。以下に例を示します。
ステップ 1 のホールドアウトまたは分割外データを使用して検定損失を決定するには、交差検証済みのモデルを kfoldLoss
に渡します。
ステップ 1 のホールドアウトまたは分割外データで観測値を予測するには、交差検証済みのモデルを kfoldPredict
に渡します。
[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.
使用上の注意事項および制限事項:
fitclinear
は tall table
データをサポートしていません。
一部の名前と値のペアの引数は、インメモリの関数 fitclinear
と既定値が異なります。サポートされる名前と値のペアの引数および違いは次のとおりです。
'ObservationsIn'
— 'rows'
のみをサポートします。
'Lambda'
— 'auto'
(既定値) またはスカラーを指定できます。
'Learner'
'Regularization'
— 'ridge'
のみをサポートします。
'Solver'
— 'lbfgs'
のみをサポートします。
'FitBias'
— true
のみをサポートします。
'Verbose'
— 既定値は 1
です。
'Beta'
'Bias'
'ClassNames'
'Cost'
'Prior'
'Weights'
— 値は tall 配列でなければなりません。
'HessianHistorySize'
'BetaTolerance'
— 既定値は 1e–3
に緩和されます。
'GradientTolerance'
— 既定値は 1e–3
に緩和されます。
'IterationLimit'
— 既定値は 20
に緩和されます。
'OptimizeHyperparameters'
— 'Regularization'
パラメーターの値は 'ridge'
でなければなりません。
'HyperparameterOptimizationOptions'
— 交差検証として、tall 最適化では 'Holdout'
検証のみがサポートされます。たとえば、fitclinear(X,Y,'OptimizeHyperparameters','auto','HyperparameterOptimizationOptions',struct('Holdout',0.2))
を指定できます。
tall 配列の場合、fitclinear
は各反復で損失と勾配の計算を tall 配列のさまざまな部分に分散させることにより LBFGS を実装します。他のソルバーでは tall 配列を使用できません。
Beta
と Bias
の初期値が与えられなかった場合、fitclinear
はデータの一部に対して局所的にモデルをあてはめ、平均化で係数を結合することにより、パラメーターの初期推定値を改善します。
詳細は、tall 配列を参照してください。
ハイパーパラメーターの最適化を並列実行するため、この関数を呼び出すときに名前と値のペアの引数 'HyperparameterOptimizationOptions', struct('UseParallel',true)
を指定します。
並列的なハイパーパラメーターの最適化の詳細については、並列ベイズ最適化を参照してください。
並列計算の全般的な情報については、自動並列サポートを使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
ClassificationLinear
| ClassificationPartitionedLinear
| fitcecoc
| fitckernel
| fitcsvm
| fitglm
| fitrlinear
| kfoldLoss
| kfoldPredict
| lassoglm
| predict
| templateLinear
| testcholdout
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
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: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.