fitclinear
高次元データに対するバイナリ線形分類器の当てはめ
構文
説明
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 が指定されている場合に、ハイパーパラメーターの最適化の結果も返します。
[ は、名前と値の引数 Mdl,FitInfo,AggregateOptimizationResults] = fitclinear(___)OptimizeHyperparameters と HyperparameterOptimizationOptions が指定されている場合に、ハイパーパラメーターの最適化の結果が格納された AggregateOptimizationResults も返します。HyperparameterOptimizationOptions の ConstraintType オプションと ConstraintBounds オプションも指定する必要があります。この構文を使用すると、交差検証損失ではなくコンパクトなモデル サイズに基づいて最適化したり、オプションは同じでも制約範囲は異なる複数の一連の最適化問題を実行したりできます。
例
サポート ベクター マシン、双対 SGD およびリッジ正則化を使用して、バイナリ線形分類モデルに学習をさせます。
NLP のデータ セットを読み込みます。
load nlpdataX は予測子データのスパース行列、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: [34023×1 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: [31572×1 double]
History: []
FitTime: 0.0877
Solver: {'dual'}
Mdl は ClassificationLinear モデルです。Mdl と学習データまたは新しいデータを loss に渡して、標本内分類誤差を調べることができます。または、Mdl と新しい予測子データを predict に渡して、新しい観測値のクラス ラベルを予測することができます。
FitInfo は、重要な情報として終了ステータス (TerminationStatus) とソルバーによるモデルのデータへの当てはめにかかった時間 (FitTime) が含まれている構造体配列です。FitInfo を使用して、最適化終了時の結果が満足できるものであるかどうかを判断することをお勧めします。モデルの再学習を試すこともできますが、学習時間は短いので、データを通す回数を増やしてください。このようにすると、DeltaGradient などの尺度が向上します。
ロジスティック回帰学習器を使用する線形分類モデルに適した LASSO ペナルティの強度を決定するため、5 分割の交差検証を実装します。
NLP のデータ セットを読み込みます。
load nlpdataX は予測子データのスパース行列、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.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'
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 nlpdataX は予測子データのスパース行列、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 | 5.5813 | 0.041619 | 0.041619 | 0.077903 | logistic |
| 2 | Best | 0.00079184 | 5.6185 | 0.00079184 | 0.0029367 | 2.1405e-09 | logistic |
| 3 | Accept | 0.049221 | 6.6894 | 0.00079184 | 0.00082068 | 0.72101 | svm |
| 4 | Accept | 0.00079184 | 6.5299 | 0.00079184 | 0.000815 | 3.4734e-07 | svm |
| 5 | Accept | 0.00079184 | 7.2077 | 0.00079184 | 0.00079162 | 6.3377e-08 | svm |
| 6 | Best | 0.00072849 | 5.3238 | 0.00072849 | 0.00072833 | 3.1802e-10 | logistic |
| 7 | Accept | 0.00088686 | 5.9669 | 0.00072849 | 0.00072669 | 3.1843e-10 | svm |
| 8 | Accept | 0.00085519 | 6.9815 | 0.00072849 | 0.00072431 | 2.6328e-09 | svm |
| 9 | Accept | 0.00072849 | 10.403 | 0.00072849 | 0.00074105 | 1.3065e-07 | logistic |
| 10 | Accept | 0.00072849 | 6.4172 | 0.00072849 | 0.00068654 | 2.6295e-08 | logistic |
| 11 | Accept | 0.00072849 | 6.1636 | 0.00072849 | 0.00068787 | 4.8181e-08 | logistic |
| 12 | Accept | 0.00079184 | 8.2445 | 0.00072849 | 0.00068864 | 1.3131e-07 | svm |
| 13 | Accept | 0.00072849 | 6.3106 | 0.00072849 | 0.00068953 | 3.1674e-10 | logistic |
| 14 | Accept | 0.00072849 | 6.749 | 0.00072849 | 0.00070079 | 5.4713e-08 | logistic |
| 15 | Accept | 0.00076017 | 6.3726 | 0.00072849 | 0.00070104 | 7.6671e-10 | logistic |
| 16 | Accept | 0.00072849 | 6.1264 | 0.00072849 | 0.00070772 | 5.5999e-08 | logistic |
| 17 | Accept | 0.00076017 | 5.7337 | 0.00072849 | 0.0007071 | 1.1954e-08 | logistic |
| 18 | Accept | 0.00079184 | 6.3633 | 0.00072849 | 0.00070761 | 3.1913e-10 | logistic |
| 19 | Accept | 0.0012353 | 7.1391 | 0.00072849 | 0.00071418 | 0.00091822 | svm |
| 20 | Accept | 0.00082351 | 11.093 | 0.00072849 | 0.00071623 | 5.4565e-05 | svm |
|=====================================================================================================|
| Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | Lambda | Learner |
| | result | | runtime | (observed) | (estim.) | | |
|=====================================================================================================|
| 21 | Accept | 0.00085519 | 8.6396 | 0.00072849 | 0.00071705 | 0.00024701 | svm |
| 22 | Accept | 0.00082351 | 10.68 | 0.00072849 | 0.0007168 | 4.3706e-06 | svm |
| 23 | Accept | 0.0010452 | 28.257 | 0.00072849 | 0.00073211 | 3.4061e-06 | logistic |
| 24 | Accept | 0.00095021 | 25.53 | 0.00072849 | 0.00072271 | 7.8673e-07 | logistic |
| 25 | Accept | 0.00076017 | 4.9052 | 0.00072849 | 0.00072279 | 1.3767e-08 | svm |
| 26 | Accept | 0.00085519 | 5.7558 | 0.00072849 | 0.00072283 | 1.1571e-06 | svm |
| 27 | Accept | 0.00085519 | 7.0692 | 0.00072849 | 0.00072288 | 1.4404e-05 | svm |
| 28 | Accept | 0.00076017 | 4.9898 | 0.00072849 | 0.00072288 | 2.4358e-08 | svm |
| 29 | Best | 0.00066515 | 4.8097 | 0.00066515 | 0.00071263 | 3.0423e-08 | logistic |
| 30 | Accept | 0.00072849 | 4.9449 | 0.00066515 | 0.00071418 | 2.7905e-08 | logistic |
__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 258.5678 seconds
Total objective function evaluation time: 242.5965
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 = 4.8097
Best estimated feasible point (according to models):
Lambda Learner
__________ ________
4.8181e-08 logistic
Estimated objective function value = 0.00071418
Estimated function evaluation time = 6.1107


Mdl =
ClassificationLinear
ResponseName: 'Y'
ClassNames: [0 1]
ScoreTransform: 'logit'
Beta: [34023×1 double]
Bias: -9.8962
Lambda: 4.8181e-08
Learner: 'logistic'
Properties, Methods
入力引数
予測子データ。n 行 p 列の完全な行列またはスパース行列を指定します。
Y の長さと X の観測値数は同じでなければなりません。
メモ
観測値が列に対応するように予測子行列を配置して 'ObservationsIn','columns' を指定すると、最適化実行時間が大幅に短縮される可能性があります。
データ型: single | double
分類モデルが学習するクラス ラベル。categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。
fitclinearはバイナリ分類のみをサポートします。Yに正確に 2 つの異なるクラスを含めるか、名前と値のペアの引数'ClassNames'を使用して学習用の 2 つのクラスを指定しなければなりません。マルチクラス学習については、fitcecocを参照してください。Yが文字配列の場合、各ラベルは配列の 1 つの行に対応しなければなりません。名前と値のペアの引数
ClassNamesを使用してクラスの順序を指定することをお勧めします。
データ型: char | string | cell | categorical | logical | single | double
モデルを学習させるために使用する標本データ。table として指定します。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 スカラーを指定しなければなりません。たとえば、応答変数 Y が Tbl.Y として格納されている場合、"Y" として指定します。それ以外の場合、モデルを学習させるときに、Tbl の列は Y を含めてすべて予測子として扱われます。
応答変数は、categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列でなければなりません。Y が文字配列である場合、応答変数の各要素は配列の 1 つの行に対応しなければなりません。
名前と値の引数 ClassNames を使用してクラスの順序を指定することをお勧めします。
データ型: char | string
応答変数および予測子変数サブセットの説明モデル。"Y~x1+x2+x3" という形式の文字ベクトルまたは string スカラーを指定します。この形式では、Y は応答変数を、x1、x2 および x3 は予測子変数を表します。
モデルに学習をさせるための予測子として Tbl 内の変数のサブセットを指定するには、式を使用します。式を指定した場合、formula に現れない Tbl 内の変数は使用されません。
式の変数名は Tbl の変数名 (Tbl.Properties.VariableNames) であり、有効な MATLAB® 識別子でなければなりません。関数 isvarname を使用して Tbl の変数名を検証できます。変数名が有効でない場合、関数 matlab.lang.makeValidName を使用してそれらを変換できます。
データ型: char | string
メモ:
ソフトウェアは、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'の場合、fitclinearがLambdaの以後の値を使用して最適化を行うときに、係数の推定値 0 は値が保持されます。fitclinearは、指定された正則化強度ごとに係数の推定値を返します。
例: 'Lambda',10.^(-(10:-2:2))
データ型: char | string | double | single
線形分類モデルのタイプ。'Learner' と 'svm' または 'logistic' から構成されるコンマ区切りのペアとして指定します。
次の表では、 です。
β は p 個の係数のベクトルです。
x は p 個の予測子変数による観測値です。
b はスカラー バイアスです。
| 値 | アルゴリズム | 応答の範囲 | 損失関数 |
|---|---|---|---|
'svm' | サポート ベクター マシン | y ∊ {–1,1}。陽性クラスの場合は 1、それ以外の場合は –1 | ヒンジ: |
'logistic' | ロジスティック回帰 | 'svm' と同じ | 逸脱度 (ロジスティック): |
例: 'Learner','logistic'
予測子データにおける観測値の次元。"rows" または "columns" として指定します。
メモ
観測値が列に対応するように予測子行列を配置して ObservationsIn="columns" を指定すると、計算時間が大幅に短縮される可能性があります。table の予測子データに対して ObservationsIn="columns" を指定することはできません。
例: ObservationsIn="columns"
データ型: char | string
複雑度ペナルティのタイプ。'Regularization' と 'lasso' または 'ridge' から構成されるコンマ区切りのペアとして指定します。
最小化のための目的関数は、平均損失関数 (Learner を参照) と次の表の正則化項を加算することにより作成されます。
| 値 | 説明 |
|---|---|
'lasso' | LASSO (L1) ペナルティ: |
'ridge' | リッジ (L2) ペナルティ: |
正則化項の強度 (式の λ) を指定するには、Lambda を使用します。
バイアス項 (β0) は正則化ペナルティから除外されます。
Solver が 'sparsa' の場合、Regularization の既定値は '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 回最適化されます。
初期値として
Beta、正則化強度としてLambdaの最小値を使用して最適化を行う。前回の最適化で生成された推定値をウォーム スタートとして使用し、
Lambda内の次に小さい値を正則化強度として使用して、再度最適化を行う。Lambdaの値をすべて使用するまでステップ 2 を繰り返す。
p 行 L 列の行列を指定した場合、目的関数が L 回最適化されます。反復
jでは、初期値としてBeta(:,が使用され、j)Lambdaを昇順で並べ替えた後で正則化強度としてLambda(が使用されます。j)
'Solver','dual' を設定した場合、Beta は無視されます。
データ型: single | double
切片の初期推定値 (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 から構成されるコンマ区切りのペアとして指定します。
| 値 | 説明 |
|---|---|
true | 線形モデルにバイアス項 b が追加され、推定されます。 |
false | 推定時に b = 0 に設定されます。 |
例: 'FitBias',false
データ型: logical
最適化後に線形モデルの切片を当てはめるフラグ。'PostFitBias' と true または false から構成されるコンマ区切りのペアとして指定します。
| 値 | 説明 |
|---|---|
false | 最適化時にバイアス項 b と係数 β が推定されます。 |
true | b を推定するため、以下が行われます。
|
true を指定する場合、FitBias は true でなければなりません。
例: 'PostFitBias',true
データ型: logical
詳細レベル。'Verbose' と非負の整数から構成されるコンマ区切りのペアとして指定します。Verbose は、fitclinear がコマンド ラインに表示する診断情報の量を制御します。
| 値 | 説明 |
|---|---|
0 | fitclinear は診断情報を表示しません。 |
1 | fitclinear は、目的関数の値や勾配の大きさなどの診断情報を定期的に表示および格納します。診断情報は 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 についての学習率を決定します。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' の場合、次のようになります。
数回の最適化反復について、
LearnRateを学習率として使用して最適化が開始される。目的関数の値が増加した場合、現在の学習率の半分の値を使用して再開される。
目的関数が減少するまで、ステップ 2 が繰り返される。
例: 'OptimizeLearnRate',true
データ型: logical
LASSO 切り捨て実行間のミニバッチの回数。'TruncationPeriod' と正の整数から構成されるコンマ区切りのペアとして指定します。
切り捨て実行の後で、ソフトしきい値が線形係数に適用されます。つまり、k = TruncationPeriod 回のミニバッチが処理された後で、次を使用して係数推定 j が切り捨てられます。
SGD の場合、 はミニバッチを次を満たす k の回数処理した後の係数 j の推定値です。γt は反復 t における学習率です。λ は
Lambdaの値です。ASGD の場合、 はミニバッチを次を満たす k の回数処理した後の係数 j の平均推定値です。
Regularization が 'ridge' の場合、TruncationPeriod は無視されます。
例: 'TruncationPeriod',100
データ型: single | double
その他の分類オプション
カテゴリカル予測子のリスト。次の表のいずれかの値として指定します。説明は、予測子データの行に観測値、列に予測子があると仮定しています。
| 値 | 説明 |
|---|---|
| 正の整数のベクトル | ベクトルの各エントリは、対応する予測子がカテゴリカルであることを示すインデックス値です。インデックス値の範囲は 1 ~
|
| logical ベクトル |
|
| 文字行列 | 行列の各行は予測子変数の名前です。名前は PredictorNames のエントリに一致しなくてはなりません。文字行列の各行が同じ長さになるように、名前を余分な空白で埋めてください。 |
| 文字ベクトルの cell 配列または string 配列 | 配列の各要素は予測子変数の名前です。名前は PredictorNames のエントリに一致しなくてはなりません。 |
"all" | すべての予測子がカテゴリカルです。 |
既定では、予測子データが table (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 は異なるクラスの個数です。
fitclinear は Cost を使用して、Prior で指定されたクラスの事前確率を調整します。その後、fitclinear は調整した事前確率を学習に使用します。
例: 'Cost',[0 2; 1 0]
データ型: single | double | struct
予測子変数名。一意な名前の 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'、数値ベクトルまたは構造体配列から構成されるコンマ区切りのペアとして指定します。
次の表は、事前確率の設定に使用できるオプションの一覧です。
| 値 | 説明 |
|---|---|
'empirical' | クラスの事前確率は、Y のクラスの相対的頻度です。 |
'uniform' | クラスの事前確率はいずれも 1/K (K はクラス数) となります。 |
| 数値ベクトル | 各要素はクラスの事前確率です。Y 内の順序に従って要素の順序を指定します。名前と値のペアの引数 'ClassNames' を使用して順序を指定した場合は、それに従って要素の順序が設定されます。 |
| 構造体配列 | 構造体
|
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 の観測値の数と等しくなければなりません。
入力データを table Tbl として指定した場合、Weights は数値ベクトルが含まれている Tbl 内の変数の名前にすることができます。この場合、Weights には文字ベクトルまたは string スカラーを指定しなければなりません。たとえば、重みベクトル W が Tbl.W として格納されている場合、'W' として指定します。それ以外の場合、モデルに学習をさせるときに、Tbl の列は W を含めてすべて予測子または応答変数として扱われます。
既定の設定では、Weights は ones(n,1) です。n は X または Tbl の観測値数です。
合計が各クラスの事前確率の値と等しくなるように Weights が正規化されます。Inf の重みはサポートされません。
データ型: single | double | char | string
交差検証オプション
交差検証フラグ。'Crossval' と 'on' または 'off' から構成されるコンマ区切りのペアとして指定します。
'on' を指定した場合、10 分割の交差検証が実施されます。
この交差検証の設定をオーバーライドするには、名前と値のペアの引数 CVPartition、Holdout、KFold、Leaveout のいずれかを使用します。交差検証済みモデルを作成するために使用できる交差検証の名前と値のペアの引数は、一度に 1 つだけです。
例: 'Crossval','on'
交差検証分割。'CVPartition' と cvpartition により作成された cvpartition 分割オブジェクトで構成されるコンマ区切りのペアとして指定します。分割オブジェクトは交差検証のタイプおよび学習と検証セットのインデックス付けを指定します。
交差検証済みモデルを作成するために使用できるオプションは、CVPartition、Holdout、KFold、Leaveout のいずれかのみです。
ホールドアウト検証に使用されるデータの比率。'Holdout' と、(0,1) の範囲内のスカラー値から成るコンマ区切りのペアとして指定します。'Holdout', を指定すると、次が実行されます。 p
% のデータを検証データとして無作為に予約し、残りのデータを使用してモデルを学習させるp*100コンパクトな学習済みモデルを交差検証済みモデルの
Trainedプロパティに格納する。
交差検証済みモデルを作成するために使用できるオプションは、CVPartition、Holdout、KFold、Leaveout のいずれかのみです。
例: 'Holdout',0.1
データ型: double | single
交差検証分類器で使用する分割の数。'KFold' と 1 より大きい正の整数値から構成されるコンマ区切りのペアとして指定します。たとえば 'KFold',k を指定すると、次が実行されます。
データを無作為に k 個のセットに分割する
各セットについて、そのセットを検証データとして予約し、他の k – 1 個のセットを使用してモデルに学習をさせる
k個のコンパクトな学習済みモデルを、交差検証済みモデルのTrainedプロパティに含まれているk行 1 列の cell ベクトルのセルに格納する。
交差検証済みモデルを作成するために使用できるオプションは、CVPartition、Holdout、KFold、Leaveout のいずれかのみです。
例: 'KFold',8
データ型: single | double
leave-one-out 交差検証。"off" または "on" として指定します。
Leaveout を "on" として指定すると、各観測値について、fitclinear はその観測値をテスト データとして確保し、それ以外の観測値を使用してモデルに学習させます。
名前と値の引数 CVPartition、Holdout、KFold、Leaveout については、これらのうちのいずれか 1 つのみを使用できます。
例: Leaveout="on"
データ型: single | double
SGD と ASGD の収束制御
バッチを処理する最大回数。'BatchLimit' と正の整数から構成されるコンマ区切りのペアとして指定します。BatchLimit 回のバッチが処理されると、最適化が終了します。
例: 'BatchLimit',100
データ型: single | double
線形係数およびバイアス項 (切片) の相対許容誤差。'BetaTolerance' と非負のスカラーから構成されるコンマ区切りのペアとして指定します。
であるとします。これは、最適化反復 t における係数およびバイアス項のベクトルです。 で最適化が終了します。
Solver で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。
例: 'BetaTolerance',1e-6
データ型: single | double
次回の収束チェックの前にバッチを処理する回数。'NumCheckConvergence' と正の整数から構成されるコンマ区切りのペアとして指定します。
バッチのサイズの指定について、BatchSize を参照してください。
既定の設定では、データ セット全体が通されるたびに約 10 回収束がチェックされます。
例: 'NumCheckConvergence',100
データ型: single | double
データを通す最大回数。'PassLimit' と正の整数から構成されるコンマ区切りのペアとして指定します。
データが完全に 1 回通されると、すべての観測値が fitclinear で処理されます。
データが通される回数が PassLimit になると、fitclinear は最適化を終了します。
BatchLimit を指定した場合、fitclinear では、BatchLimit と PassLimit の引数のうち、処理する観測値の数が少なくなる方が使用されます。
例: 'PassLimit',5
データ型: single | double
最適化の収束を検出するための検証データ。'ValidationData' と cell 配列または table で構成されるコンマ区切りのペアとして指定します。
最適化時に、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}の予測子変数は対応していなければなりません。同様に、予測子データの予測子 tableTblを使用する場合、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 次元の数値ベクトル、または観測値の重みを含む tableValidationData{1}内の変数名として指定できます。検証データに関する重みは、合計が 1 になるように正規化されます。
ValidationData を指定し、コマンド ラインで検証損失を表示するには、0 より大きい値を Verbose に指定します。
Solver で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。
既定の設定では、検証データの損失を監視することによる収束の検出は行われません。
双対 SGD の収束制御
線形係数およびバイアス項 (切片) の相対許容誤差。'BetaTolerance' と非負のスカラーから構成されるコンマ区切りのペアとして指定します。
であるとします。これは、最適化反復 t における係数およびバイアス項のベクトルです。 で最適化が終了します。
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 配列または table で構成されるコンマ区切りのペアとして指定します。
最適化時に、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}の予測子変数は対応していなければなりません。同様に、予測子データの予測子 tableTblを使用する場合、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 次元の数値ベクトル、または観測値の重みを含む tableValidationData{1}内の変数名として指定できます。検証データに関する重みは、合計が 1 になるように正規化されます。
ValidationData を指定し、コマンド ラインで検証損失を表示するには、0 より大きい値を Verbose に指定します。
Solver で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。
既定の設定では、検証データの損失を監視することによる収束の検出は行われません。
BFGS、LBFGS および SpaRSA の収束制御
線形係数およびバイアス項 (切片) の相対許容誤差。非負のスカラーとして指定します。
であるとします。これは、最適化反復 t における係数およびバイアス項のベクトルです。 で最適化が終了します。
GradientTolerance も指定した場合、いずれかの終了条件が満たされると最適化が終了します。
Solver で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。
例: 'BetaTolerance',1e-6
データ型: single | double
勾配の絶対許容誤差。非負のスカラーとして指定します。
最適化反復 t における係数およびバイアス項に関する目的関数の勾配ベクトルを とします。 で最適化が終了します。
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 配列または table で構成されるコンマ区切りのペアとして指定します。
最適化時に、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}の予測子変数は対応していなければなりません。同様に、予測子データの予測子 tableTblを使用する場合、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 次元の数値ベクトル、または観測値の重みを含む tableValidationData{1}内の変数名として指定できます。検証データに関する重みは、合計が 1 になるように正規化されます。
ValidationData を指定し、コマンド ラインで検証損失を表示するには、0 より大きい値を Verbose に指定します。
Solver で指定された最後のソルバーで収束する場合、最適化が終了します。それ以外の場合、Solver で指定された次のソルバーが使用されます。
既定の設定では、検証データの損失を監視することによる収束の検出は行われません。
ハイパーパラメーターの最適化
最適化するパラメーター。'OptimizeHyperparameters' と次のいずれかから構成されるコンマ区切りのペアとして指定します。
'none'— 最適化を行いません。'auto'—{'Lambda','Learner'}を使用します。'all'— すべての使用可能パラメーターを最適化します。使用可能パラメーター名の string 配列または cell 配列。
optimizableVariableオブジェクトのベクトル。通常はhyperparametersの出力です。
最適化では、パラメーターを変化させることにより、fitclinear の交差検証損失 (誤差) を最小化しようとします。交差検証のタイプおよびその他の最適化の側面を制御するには、名前と値の引数 HyperparameterOptimizationOptions を使用します。HyperparameterOptimizationOptions を使用すると、ConstraintType オプションと ConstraintBounds オプションを設定することにより、交差検証損失の代わりに (コンパクトな) モデル サイズを最適化の目的として使用できます。
メモ
OptimizeHyperparameters の値は、他の名前と値の引数を使用して指定した値より優先されます。たとえば、OptimizeHyperparameters を "auto" に設定すると、fitclinear は "auto" オプションに対応するハイパーパラメーターを最適化して、ハイパーパラメーターに指定された値を無視します。
fitclinear では、以下のパラメーターを使用できます。
Lambda—fitclinearは、既定では範囲[1e-5/NumObservations,1e5/NumObservations]の対数スケールで、正の値を探索します。Learner—fitclinearは、'svm'と'logistic'で探索します。Regularization—fitclinearは、'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'
最適化のオプション。HyperparameterOptimizationOptions オブジェクトまたは構造体として指定します。この引数を指定すると、名前と値の引数 OptimizeHyperparameters の効果が変化します。HyperparameterOptimizationOptions を指定する場合、OptimizeHyperparameters も指定しなければなりません。オプションはいずれも任意です。ただし、AggregateOptimizationResults を返すには ConstraintBounds と ConstraintType を設定しなければなりません。構造体で設定できるオプションは HyperparameterOptimizationOptions オブジェクトと同じです。
| オプション | 値 | 既定の設定 |
|---|---|---|
Optimizer |
| "bayesopt" |
ConstraintBounds | N 個の最適化問題の制約範囲。N 行 2 列の数値行列または | [] |
ConstraintTarget | 最適化問題の制約ターゲット。 | ConstraintBounds と ConstraintType を指定する場合の既定値は "matlab" です。そうでない場合、既定値は [] となります。 |
ConstraintType | 最適化問題の制約タイプ。 | [] |
AcquisitionFunctionName | 獲得関数のタイプ:
目的関数の実行時に最適化が決まるので、名前に | "expected-improvement-per-second-plus" |
MaxObjectiveEvaluations | 目的関数評価の最大数。ConstraintBounds を使用して最適化問題を複数指定する場合、MaxObjectiveEvaluations の値は各最適化問題に個別に適用されます。 | "bayesopt" および "randomsearch" の場合は 30、"gridsearch" の場合はグリッド全体 |
MaxTime | 最適化の制限時間。非負の実数スカラーとして指定します。制限時間の単位は、 | Inf |
NumGridDivisions | Optimizer="gridsearch" における各次元の値の個数。値は、各次元の値の個数を表す正の整数のベクトル、またはすべての次元に適用されるスカラーが可能です。カテゴリカル変数の場合、このオプションは無視されます。 | 10 |
ShowPlots | 最適化の進行状況のプロットを表示するかどうかを示す logical 値。このオプションが true の場合、最適な観測された目的関数値が反復回数に対してプロットされます。ベイズ最適化を使用する場合 (Optimizer="bayesopt")、最適な推定された目的関数値もプロットされます。最適な観測された目的関数値および最適な推定された目的関数値は、反復表示の BestSoFar (observed) 列および BestSoFar (estim.) 列の値にそれぞれ対応しています。これらの値は、Mdl.HyperparameterOptimizationResults のプロパティ ObjectiveMinimumTrace および EstimatedObjectiveMinimumTrace で確認できます。問題にベイズ最適化の最適化パラメーターが 1 つまたは 2 つある場合、ShowPlots はパラメーターに対する目的関数のモデルもプロットします。 | true |
SaveIntermediateResults | 最適化の結果を保存するかどうかを示す logical 値。このオプションが true の場合、"BayesoptResults" という名前のワークスペース変数が反復ごとに上書きされます。この変数は BayesianOptimization オブジェクトです。ConstraintBounds を使用して最適化問題を複数指定する場合、ワークスペース変数は "AggregateBayesoptResults" という名前の AggregateBayesianOptimization オブジェクトになります。 | false |
Verbose | コマンド ラインにおける表示レベル:
詳細については、 | 1 |
UseParallel | ベイズ最適化を並列実行するかどうかを示す logical 値。並列実行には Parallel Computing Toolbox™ が必要です。並列でのタイミングに再現性がないため、並列ベイズ最適化で再現性のある結果が生成されるとは限りません。詳細については、並列ベイズ最適化を参照してください。 | false |
Repartition | 反復ごとに交差検証を再分割するかどうかを示す論理値。このオプションが 分割ノイズが考慮されるので、通常は値を | false |
| 次の 3 つのオプションのいずれか 1 つのみを指定してください。 | ||
CVPartition | cvpartition によって作成された cvpartition オブジェクト | 交差検証オプションが指定されていない場合は KFold=5 |
Holdout | ホールドアウトの比率を表す範囲 (0,1) のスカラー | |
KFold | 1 より大きい整数 | |
例: HyperparameterOptimizationOptions=struct(UseParallel=true)
出力引数
学習済みの線形分類モデル。ClassificationLinear モデル オブジェクトまたは ClassificationPartitionedLinear 交差検証済みモデル オブジェクトとして返されます。
名前と値のペアの引数 KFold、Holdout、CrossVal、CVPartition のいずれかを設定した場合、Mdl は ClassificationPartitionedLinear 交差検証済みモデル オブジェクトになります。それ以外の場合、Mdl は ClassificationLinear モデル オブジェクトになります。
Mdl のプロパティを参照するには、ドット表記を使用します。たとえば、推定された係数のベクトルまたは行列を表示するには、コマンド ウィンドウに Mdl.Beta と入力します。
OptimizeHyperparameters を指定して HyperparameterOptimizationOptions の ConstraintType オプションと ConstraintBounds オプションを設定している場合、Mdl はモデル オブジェクトの N 行 1 列の cell 配列になります。ここで、N は ConstraintBounds の行数と等しくなります。いずれの最適化問題からも実行可能なモデルが得られない場合、cell 配列の各値が [] になります。
メモ
他の分類モデルとは異なり、また、メモリ消費を節約するため、学習データや学習過程の詳細 (収束履歴など) は ClassificationLinear および ClassificationPartitionedLinear モデル オブジェクトに格納されません。
複数の最適化問題についての最適化の結果の集計。AggregateBayesianOptimization オブジェクトとして返されます。AggregateOptimizationResults を返すには、OptimizeHyperparameters と HyperparameterOptimizationOptions を指定しなければなりません。HyperparameterOptimizationOptions の ConstraintType オプションと ConstraintBounds オプションも指定する必要があります。この出力の生成方法を示す例については、Hyperparameter Optimization with Multiple Constraint Boundsを参照してください。
最適化の詳細。構造体配列として返されます。
各フィールドには、最終的な値または名前と値のペアの引数の指定が格納されます。たとえば、Objective は最適化が終了したときの目的関数の値です。多次元フィールドの行は Lambda の値に、列は Solver の値に対応します。
次の表で、主なフィールドを説明します。
| フィールド | 説明 | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
TerminationStatus |
| ||||||||||||||
FitTime | 秒単位の経過実時間 | ||||||||||||||
History | 各反復における最適化情報の構造体配列。
|
フィールドにアクセスするには、ドット表記を使用します。たとえば、各反復における目的関数値のベクトルにアクセスするには、FitInfo.History.Objective と入力します。
OptimizeHyperparameters を指定して HyperparameterOptimizationOptions の ConstraintType オプションと ConstraintBounds オプションを設定している場合、Fitinfo は構造体配列の N 行 1 列の cell 配列になります。ここで、N は ConstraintBounds の行数と等しくなります。
FitInfo を確認して、収束が満足できるものであるかどうかを評価することをお勧めします。
ハイパーパラメーターの交差検証最適化。BayesianOptimization オブジェクト、AggregateBayesianOptimization オブジェクト、またはハイパーパラメーターと関連する値の table として返されます。OptimizeHyperparameters の値が "none" 以外であれば、出力は空以外になります。
HyperparameterOptimizationOptions で ConstraintType オプションと ConstraintBounds オプションを設定した場合、HyperparameterOptimizationResults は AggregateBayesianOptimization オブジェクトになります。それ以外の場合、HyperparameterOptimizationResults の値は HyperparameterOptimizationOptions の Optimizer オプションの値によって異なります。
Optimizer オプションの値 | HyperparameterOptimizationResults の値 |
|---|---|
"bayesopt" (既定の設定) | BayesianOptimization クラスのオブジェクト |
"gridsearch" または "randomsearch" | 使用したハイパーパラメーター、観測された目的関数の値 (交差検証損失)、および最低 (最良) から最高 (最悪) までの観測値の順位が格納されている table |
詳細
"ウォーム スタート" は、収束時間を短縮するために最適化ルーチンに与えられるベータ係数およびバイアス項の初期推定値です。
fitclinear および fitrlinear は、高次元の線形モデルについては比較的高速に目的関数を最小化しますが、精度が犠牲になり、モデルがパラメーターに関して線形でなければならないという制限があります。予測子データ セットが低~中次元の場合は、別の分類または回帰近似関数を使用できます。次の表は、どの近似関数がデータ セットに適しているかを判断するために役立ちます。
| 当てはめるモデル | 関数 | 主なアルゴリズムの違い |
|---|---|---|
| SVM |
| |
| 線形回帰 |
| |
| ロジスティック回帰 |
|
ヒント
観測値が列に対応するように予測子行列を配置して
'ObservationsIn','columns'を指定することをお勧めします。このようにすると、最適化実行時間が大幅に短縮される可能性があります。予測子データに含まれている観測値の数が少なく、予測子変数の数が多い場合、次のようにします。
'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 = normalize(X,2);
観測値が行に対応するように配置する場合は、次のように入力します。
X = normalize(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に渡します。
名前と値の引数
Cost、Prior、およびWeightsを指定すると、出力モデル オブジェクトにCost、Prior、および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.
拡張機能
fitclinear 関数は、tall 配列を次の使用上の注意事項および制限事項付きでサポートします。
fitclinearは talltableデータをサポートしていません。一部の名前と値のペアの引数は、インメモリの関数
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'検証のみがサポートされます。既定では、データの 20% がホールドアウト検証データとして選択されて確保され、残りのデータがモデルの学習に使用されます。この引数を使用してホールドアウトの比率に別の値を指定できます。たとえば、データの 30% を検証データとして確保するには'HyperparameterOptimizationOptions',struct('Holdout',0.3)と指定します。
tall 配列の場合、
fitclinearは各反復で損失と勾配の計算を tall 配列のさまざまな部分に分散させることにより LBFGS を実装します。他のソルバーでは tall 配列を使用できません。BetaとBiasの初期値が与えられなかった場合、fitclinearはデータの一部に対してローカルにモデルを当てはめ、平均化で係数を結合することにより、パラメーターの初期推定値を改善します。
詳細は、tall 配列を参照してください。
ハイパーパラメーターの最適化を並列実行するには、fitclinear 関数を呼び出すときに名前と値の引数 HyperparameterOptimizationOptions で UseParallel=true オプションを使用します。
並列的なハイパーパラメーターの最適化の詳細については、並列ベイズ最適化を参照してください。
並列計算の全般的な情報については、自動並列サポートを使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
fitclinear 関数は GPU 配列入力をサポートしますが、次の使用上の注意および制限があります。
Xをスパースにすることはできません。名前と値の引数
Solverを"sgd"、"asgd"、または"dual"として指定することはできません。gpuArray入力の場合、既定のソルバーは次のようになります。リッジ ペナルティを指定する場合で予測子変数が
101個より少なければ"bfgs"リッジ ペナルティを指定する場合で予測子変数が
100個より多ければ"lbfgs"LASSO ペナルティを指定する場合は
"sparsa"
fitclinearは、次のいずれかに該当する場合に GPU でモデルを当てはめます。入力引数
XがgpuArrayオブジェクトである。入力引数
TblにgpuArray予測子変数が含まれている。
バージョン履歴
R2016a で導入HyperparameterOptimizationOptions に UseParallel=true が含まれている場合にソフトウェアで並列プールを開けないと、fitclinear は既定で逐次計算を実行します。
以前のリリースでは、このような状況でソフトウェアからエラーが発行されます。
fitclinear で、いくつか制限はありますが GPU 配列がサポートされるようになりました。
R2022a 以降では、ハイパーパラメーターを最適化するように指定した場合に、Solver の値を指定しないと、最適化プロセスの各反復で選択された正則化タイプに応じて、メモリ制限 BFGS (LBFGS) ソルバーまたは可分近似によるスパース再構成 (SpaRSA) ソルバーのいずれかが fitclinear で使用されます。
Regularizationが'ridge'の場合、Solverの値は既定では'lbfgs'に設定されます。Regularizationが'lasso'の場合、Solverの値は既定では'sparsa'に設定されます。
以前のリリースでは、ハイパーパラメーターの最適化での既定のソルバーの選択には、正則化タイプ、学習器タイプ、予測子の数など、さまざまな要因が関係していました。詳細については、Solver を参照してください。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)