fitcdiscr
判別分析分類器の当てはめ
構文
説明
は、table Mdl = fitcdiscr(Tbl,ResponseVarName)Tbl に含まれている入力変数 (予測子、特徴量または属性とも呼ばれます) と ResponseVarName に含まれている出力 (応答またはラベル) に基づいて当てはめた判別分析モデルを返します。
は、前の構文のいずれかを使用し、1 つ以上の名前と値の引数で指定された追加オプションを使用して分類器を当てはめます。たとえば、モデルの交差検証損失を最小化するようにハイパーパラメーターを最適化したり、誤分類コスト、各クラスの事前確率、観測値の重みを指定できます。Mdl = fitcdiscr(___,Name=Value)
[ は、名前と値の引数 Mdl,AggregateOptimizationResults] = fitcdiscr(___)OptimizeHyperparameters と HyperparameterOptimizationOptions が指定されている場合に、ハイパーパラメーターの最適化の結果が格納された AggregateOptimizationResults も返します。HyperparameterOptimizationOptions の ConstraintType オプションと ConstraintBounds オプションも指定する必要があります。この構文を使用すると、交差検証損失ではなくコンパクトなモデル サイズに基づいて最適化したり、オプションは同じでも制約範囲は異なる複数の一連の最適化問題を実行したりできます。
メモ
入力変数が tall 配列の場合のサポートされている構文のリストについては、tall 配列を参照してください。
例
フィッシャーのアヤメのデータ セットを読み込みます。
load fisheririsデータ セット全体を使用して、判別分析モデルに学習をさせます。
Mdl = fitcdiscr(meas,species)
Mdl =
ClassificationDiscriminant
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: {'setosa' 'versicolor' 'virginica'}
ScoreTransform: 'none'
NumObservations: 150
DiscrimType: 'linear'
Mu: [3×4 double]
Coeffs: [3×3 struct]
Properties, Methods
Mdl は ClassificationDiscriminant モデルです。プロパティにアクセスするには、ドット表記を使用します。たとえば、各予測子のグループ平均を表示します。
Mdl.Mu
ans = 3×4
5.0060 3.4280 1.4620 0.2460
5.9360 2.7700 4.2600 1.3260
6.5880 2.9740 5.5520 2.0260
新しい観測値のラベルを予測するには、Mdl と予測子データを predict に渡します。
この例では、fitcdiscr を使用して自動的にハイパーパラメーターを最適化する方法を示します。この例では、フィッシャーのアヤメのデータを使用します。
データを読み込みます。
load fisheriris自動的なハイパーパラメーター最適化を使用して、5 分割交差検証損失を最小化するハイパーパラメーターを求めます。
再現性を得るために、乱数シードを設定し、'expected-improvement-plus' の獲得関数を使用します。
rng(1) Mdl = fitcdiscr(meas,species,'OptimizeHyperparameters','auto',... 'HyperparameterOptimizationOptions',... struct('AcquisitionFunctionName','expected-improvement-plus'))
|=====================================================================================================|
| Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | Delta | Gamma |
| | result | | runtime | (observed) | (estim.) | | |
|=====================================================================================================|
| 1 | Best | 0.66667 | 0.46105 | 0.66667 | 0.66667 | 13.261 | 0.25218 |
| 2 | Best | 0.02 | 0.21257 | 0.02 | 0.064227 | 2.7404e-05 | 0.073264 |
| 3 | Accept | 0.04 | 0.14377 | 0.02 | 0.020084 | 3.2455e-06 | 0.46974 |
| 4 | Accept | 0.66667 | 0.069856 | 0.02 | 0.020118 | 14.879 | 0.98622 |
| 5 | Accept | 0.046667 | 0.073962 | 0.02 | 0.019907 | 0.00031449 | 0.97362 |
| 6 | Accept | 0.04 | 0.044825 | 0.02 | 0.028438 | 4.5092e-05 | 0.43616 |
| 7 | Accept | 0.046667 | 0.092683 | 0.02 | 0.031424 | 2.0973e-05 | 0.9942 |
| 8 | Accept | 0.02 | 0.063527 | 0.02 | 0.022424 | 1.0554e-06 | 0.0024286 |
| 9 | Accept | 0.02 | 0.041456 | 0.02 | 0.021105 | 1.1232e-06 | 0.00014039 |
| 10 | Accept | 0.02 | 0.057914 | 0.02 | 0.020948 | 0.00011837 | 0.0032994 |
| 11 | Accept | 0.02 | 0.058217 | 0.02 | 0.020172 | 1.0292e-06 | 0.027725 |
| 12 | Accept | 0.02 | 0.041674 | 0.02 | 0.020105 | 9.7792e-05 | 0.0022817 |
| 13 | Accept | 0.02 | 0.038937 | 0.02 | 0.020038 | 0.00036014 | 0.0015136 |
| 14 | Accept | 0.02 | 0.042295 | 0.02 | 0.019597 | 0.00021059 | 0.0044789 |
| 15 | Accept | 0.02 | 0.0524 | 0.02 | 0.019461 | 1.1911e-05 | 0.0010135 |
| 16 | Accept | 0.02 | 0.070734 | 0.02 | 0.01993 | 0.0017896 | 0.00071115 |
| 17 | Accept | 0.02 | 0.10436 | 0.02 | 0.019551 | 0.00073745 | 0.0066899 |
| 18 | Accept | 0.02 | 0.069354 | 0.02 | 0.019776 | 0.00079304 | 0.00011509 |
| 19 | Accept | 0.02 | 0.058545 | 0.02 | 0.019678 | 0.007292 | 0.0007911 |
| 20 | Accept | 0.046667 | 0.073117 | 0.02 | 0.019785 | 0.0074408 | 0.99945 |
|=====================================================================================================|
| Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | Delta | Gamma |
| | result | | runtime | (observed) | (estim.) | | |
|=====================================================================================================|
| 21 | Accept | 0.02 | 0.044721 | 0.02 | 0.019043 | 0.0036004 | 0.0024547 |
| 22 | Accept | 0.02 | 0.076834 | 0.02 | 0.019755 | 2.5238e-05 | 0.0015542 |
| 23 | Accept | 0.02 | 0.051838 | 0.02 | 0.0191 | 1.5478e-05 | 0.0026899 |
| 24 | Accept | 0.02 | 0.051115 | 0.02 | 0.019081 | 0.0040557 | 0.00046815 |
| 25 | Accept | 0.02 | 0.043246 | 0.02 | 0.019333 | 2.959e-05 | 0.0011358 |
| 26 | Accept | 0.02 | 0.056265 | 0.02 | 0.019369 | 2.3111e-06 | 0.0029205 |
| 27 | Accept | 0.02 | 0.066812 | 0.02 | 0.019455 | 3.8898e-05 | 0.0011665 |
| 28 | Accept | 0.02 | 0.035096 | 0.02 | 0.019449 | 0.0035925 | 0.0020278 |
| 29 | Accept | 0.66667 | 0.048139 | 0.02 | 0.019479 | 998.93 | 0.064276 |
| 30 | Accept | 0.02 | 0.075214 | 0.02 | 0.01947 | 8.1557e-06 | 0.0008004 |
__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 21.5343 seconds
Total objective function evaluation time: 2.4205
Best observed feasible point:
Delta Gamma
__________ ________
2.7404e-05 0.073264
Observed objective function value = 0.02
Estimated objective function value = 0.022693
Function evaluation time = 0.21257
Best estimated feasible point (according to models):
Delta Gamma
__________ _________
2.5238e-05 0.0015542
Estimated objective function value = 0.01947
Estimated function evaluation time = 0.055284


Mdl =
ClassificationDiscriminant
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: {'setosa' 'versicolor' 'virginica'}
ScoreTransform: 'none'
NumObservations: 150
HyperparameterOptimizationResults: [1×1 BayesianOptimization]
DiscrimType: 'linear'
Mu: [3×4 double]
Coeffs: [3×3 struct]
Properties, Methods
この当てはめでは、既定の 5 分割交差検証について損失が約 2% になりました。
この例では、tall 配列を使用する判別分析モデルのハイパーパラメーターを自動的に最適化する方法を示します。標本データ セット airlinesmall.csv は、飛行機のフライト データについての表形式ファイルが含まれている大規模なデータ セットです。この例では、データが含まれている tall table を作成して、最適化手順を実行するために使用します。
tall 配列に対する計算を実行する場合、MATLAB® は並列プール (Parallel Computing Toolbox™ がある場合は既定) またはローカルの MATLAB セッションを使用します。Parallel Computing Toolbox がある場合でもローカルの MATLAB セッションを使用して例を実行するには、関数mapreducerを使用してグローバルな実行環境を変更できます。
データがあるフォルダーの場所を参照するデータストアを作成します。処理する変数のサブセットを選択します。datastore で NaN 値に置き換えるため、NA 値を欠損データとして扱います。データストア内のデータを含む tall table を作成します。
ds = datastore("airlinesmall.csv"); ds.SelectedVariableNames = ["Month","DayofMonth","DayOfWeek", ... "DepTime","ArrDelay","Distance","DepDelay"]; ds.TreatAsMissing = "NA"; tt = tall(ds) % Tall table
Starting parallel pool (parpool) using the 'Processes' profile ...
07-Dec-2023 09:05:49: Job Queued. Waiting for parallel pool job with ID 1 to start ...
07-Dec-2023 09:06:50: Job Queued. Waiting for parallel pool job with ID 1 to start ...
Connected to parallel pool with 6 workers.
tt =
M×7 tall table
Month DayofMonth DayOfWeek DepTime ArrDelay Distance DepDelay
_____ __________ _________ _______ ________ ________ ________
10 21 3 642 8 308 12
10 26 1 1021 8 296 1
10 23 5 2055 21 480 20
10 23 5 1332 13 296 12
10 22 4 629 4 373 -1
10 28 3 1446 59 308 63
10 8 4 928 3 447 -2
10 10 6 859 11 954 -1
: : : : : : :
: : : : : : :
フライトが遅れた場合に真になる論理変数を定義することにより、10 分以上遅れたフライトを判別します。この変数にクラス ラベルを含めます。この変数のプレビューには、はじめの数行が含まれています。
Y = tt.DepDelay > 10 % Class labelsY = M×1 tall logical array 1 0 1 1 0 1 0 0 : :
予測子データの tall 配列を作成します。
X = tt{:,1:end-1} % Predictor dataX =
M×6 tall double matrix
10 21 3 642 8 308
10 26 1 1021 8 296
10 23 5 2055 21 480
10 23 5 1332 13 296
10 22 4 629 4 373
10 28 3 1446 59 308
10 8 4 928 3 447
10 10 6 859 11 954
: : : : : :
: : : : : :
欠損データが含まれている X および Y の行を削除します。
R = rmmissing([X Y]); % Data with missing entries removed
X = R(:,1:end-1);
Y = R(:,end); 予測子変数を標準化します。
Z = zscore(X);
名前と値の引数 OptimizeHyperparameters を使用して、自動的にハイパーパラメーターを最適化します。tall 配列を使用するときは、"auto" または "all" を指定しても、最適化できるハイパーパラメーターは DiscrimType のみになることに注意してください。ホールドアウト交差検証損失が最小になる最適な DiscrimType の値を求めます。再現性を得るため、"expected-improvement-plus" の獲得関数を使用し、rng と tallrng により乱数発生器のシードを設定します。tall 配列の場合、ワーカーの個数と実行環境によって結果が異なる可能性があります。詳細については、コードの実行場所の制御を参照してください。
rng("default") tallrng("default") [Mdl,FitInfo,HyperparameterOptimizationResults] = fitcdiscr(Z,Y, ... "OptimizeHyperparameters","auto", ... "HyperparameterOptimizationOptions",struct("Holdout",0.3, ... "AcquisitionFunctionName","expected-improvement-plus"))
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 2: Completed in 7.3 sec
- Pass 2 of 2: Completed in 3.8 sec
Evaluation completed in 19 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 4 sec
Evaluation completed in 4.3 sec
|======================================================================================|
| Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | DiscrimType |
| | result | | runtime | (observed) | (estim.) | |
|======================================================================================|
| 1 | Best | 0.11354 | 27.449 | 0.11354 | 0.11354 | quadratic |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 1.3 sec
Evaluation completed in 2.5 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 1 sec
Evaluation completed in 1.2 sec
| 2 | Accept | 0.11354 | 5.4566 | 0.11354 | 0.11354 | pseudoQuadra |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.96 sec
Evaluation completed in 2.2 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.89 sec
Evaluation completed in 1.1 sec
| 3 | Accept | 0.12869 | 4.8549 | 0.11354 | 0.11859 | pseudoLinear |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.99 sec
Evaluation completed in 1.9 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.89 sec
Evaluation completed in 1.1 sec
| 4 | Accept | 0.12745 | 4.2867 | 0.11354 | 0.1208 | diagLinear |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.98 sec
Evaluation completed in 2 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.84 sec
Evaluation completed in 1 sec
| 5 | Accept | 0.12869 | 4.6497 | 0.11354 | 0.12238 | linear |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 1 sec
Evaluation completed in 1.7 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.89 sec
Evaluation completed in 1.1 sec
| 6 | Best | 0.11301 | 4.0594 | 0.11301 | 0.12082 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.96 sec
Evaluation completed in 1.8 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.82 sec
Evaluation completed in 1 sec
| 7 | Accept | 0.11301 | 4.0419 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 1 sec
Evaluation completed in 1.8 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.85 sec
Evaluation completed in 1 sec
| 8 | Accept | 0.11301 | 4.0382 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.97 sec
Evaluation completed in 1.8 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.81 sec
Evaluation completed in 1 sec
| 9 | Accept | 0.11301 | 3.9186 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 1 sec
Evaluation completed in 1.9 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.84 sec
Evaluation completed in 1 sec
| 10 | Accept | 0.11301 | 4.0947 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 1 sec
Evaluation completed in 1.9 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.88 sec
Evaluation completed in 1.1 sec
| 11 | Accept | 0.11301 | 4.3088 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.94 sec
Evaluation completed in 1.8 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.8 sec
Evaluation completed in 1 sec
| 12 | Accept | 0.11301 | 3.9644 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 1 sec
Evaluation completed in 1.8 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.86 sec
Evaluation completed in 1.1 sec
| 13 | Accept | 0.11301 | 4.0673 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.93 sec
Evaluation completed in 1.8 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.94 sec
Evaluation completed in 1.2 sec
| 14 | Accept | 0.11301 | 4.1285 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 1.2 sec
Evaluation completed in 2 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.93 sec
Evaluation completed in 1.1 sec
| 15 | Accept | 0.11301 | 4.4217 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.98 sec
Evaluation completed in 1.8 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.89 sec
Evaluation completed in 1.1 sec
| 16 | Accept | 0.11301 | 4.0631 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.99 sec
Evaluation completed in 1.7 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.86 sec
Evaluation completed in 1.1 sec
| 17 | Accept | 0.11301 | 4.0227 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 1 sec
Evaluation completed in 1.9 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.88 sec
Evaluation completed in 1.1 sec
| 18 | Accept | 0.11354 | 4.3391 | 0.11301 | 0.11301 | pseudoQuadra |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.98 sec
Evaluation completed in 1.8 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.85 sec
Evaluation completed in 1 sec
| 19 | Accept | 0.11301 | 4.139 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.97 sec
Evaluation completed in 1.9 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.91 sec
Evaluation completed in 1.1 sec
| 20 | Accept | 0.11301 | 4.2078 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 1 sec
Evaluation completed in 1.9 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.86 sec
Evaluation completed in 1.1 sec
|======================================================================================|
| Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | DiscrimType |
| | result | | runtime | (observed) | (estim.) | |
|======================================================================================|
| 21 | Accept | 0.11301 | 4.1129 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.9 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.86 sec
Evaluation completed in 1.1 sec
| 22 | Accept | 0.11354 | 4.2473 | 0.11301 | 0.11301 | quadratic |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.98 sec
Evaluation completed in 1.8 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.87 sec
Evaluation completed in 1.1 sec
| 23 | Accept | 0.11301 | 4.0342 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.9 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.88 sec
Evaluation completed in 1.1 sec
| 24 | Accept | 0.11354 | 4.173 | 0.11301 | 0.11301 | pseudoQuadra |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.99 sec
Evaluation completed in 1.8 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.82 sec
Evaluation completed in 1.1 sec
| 25 | Accept | 0.11301 | 3.9707 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 1 sec
Evaluation completed in 1.7 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.98 sec
Evaluation completed in 1.2 sec
| 26 | Accept | 0.11354 | 4.1135 | 0.11301 | 0.11301 | quadratic |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 2 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.92 sec
Evaluation completed in 1.1 sec
| 27 | Accept | 0.11301 | 4.2567 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.94 sec
Evaluation completed in 1.5 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.88 sec
Evaluation completed in 1.1 sec
| 28 | Accept | 0.11301 | 3.7988 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.97 sec
Evaluation completed in 1.8 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.88 sec
Evaluation completed in 1.1 sec
| 29 | Accept | 0.11301 | 3.9926 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.95 sec
Evaluation completed in 1.8 sec
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.85 sec
Evaluation completed in 1 sec
| 30 | Accept | 0.11301 | 3.9793 | 0.11301 | 0.11301 | diagQuadrati |
__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 180.1662 seconds
Total objective function evaluation time: 149.1907
Best observed feasible point:
DiscrimType
_____________
diagQuadratic
Observed objective function value = 0.11301
Estimated objective function value = 0.11301
Function evaluation time = 4.0594
Best estimated feasible point (according to models):
DiscrimType
_____________
diagQuadratic
Estimated objective function value = 0.11301
Estimated function evaluation time = 4.1702
Evaluating tall expression using the Parallel Pool 'Processes':
- Pass 1 of 1: Completed in 0.8 sec
Evaluation completed in 1.6 sec


Mdl =
CompactClassificationDiscriminant
PredictorNames: {'x1' 'x2' 'x3' 'x4' 'x5' 'x6'}
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: [0 1]
ScoreTransform: 'none'
DiscrimType: 'diagQuadratic'
Mu: [2×6 double]
Coeffs: [2×2 struct]
Properties, Methods
FitInfo = struct with no fields.
HyperparameterOptimizationResults =
BayesianOptimization with properties:
ObjectiveFcn: @createObjFcn/tallObjFcn
VariableDescriptions: [1×1 optimizableVariable]
Options: [1×1 struct]
MinObjective: 0.1130
XAtMinObjective: [1×1 table]
MinEstimatedObjective: 0.1130
XAtMinEstimatedObjective: [1×1 table]
NumObjectiveEvaluations: 30
TotalElapsedTime: 180.1662
NextPoint: [1×1 table]
XTrace: [30×1 table]
ObjectiveTrace: [30×1 double]
ConstraintsTrace: []
UserDataTrace: {30×1 cell}
ObjectiveEvaluationTimeTrace: [30×1 double]
IterationTimeTrace: [30×1 double]
ErrorTrace: [30×1 double]
FeasibilityTrace: [30×1 logical]
FeasibilityProbabilityTrace: [30×1 double]
IndexOfMinimumTrace: [30×1 double]
ObjectiveMinimumTrace: [30×1 double]
EstimatedObjectiveMinimumTrace: [30×1 double]
入力引数
モデルを学習させるために使用する標本データ。table として指定します。Tbl の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。カテゴリカル予測子変数はサポートされていません。オプションとして、Tbl に応答変数用の列を 1 つ追加し、それをカテゴリカルにすることができます。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。
Tblに応答変数が含まれている場合にTbl内の他の変数をすべて予測子として使用するには、ResponseVarNameを使用して応答変数を指定します。Tblに応答変数が含まれている場合にTbl内の他の変数の一部のみを予測子として使用するには、formulaを使用して式を指定します。Tblに応答変数が含まれていない場合は、Yを使用して応答変数を指定します。応答変数の長さとTblの行数は等しくなければなりません。
応答変数の名前。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
クラス ラベル。categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。Y の各行は、X の対応する行の分類を表します。
Y 内の NaN、'' (空の文字ベクトル)、"" (空の string)、<missing>、および <undefined> 値は欠損値と見なされます。このため、欠損応答がある観測値は学習に使用されません。
データ型: categorical | char | string | logical | single | double | cell
予測子の値。数値行列として指定します。X の各列が 1 つの変数を表し、各行が 1 つの観測値を表します。カテゴリカル予測子変数はサポートされていません。
fitcdiscr は X の NaN 値を欠損値として認識します。fitcdiscr は、X の近似において、欠損値のある観測値を使用しません。
データ型: single | double
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。
例: 'DiscrimType','quadratic','SaveMemory','on' は 2 次判別分類器を指定しますが、共分散行列は出力オブジェクトに格納されません。
メモ
交差検証の名前と値の引数は、名前と値の引数 OptimizeHyperparameters と一緒には使用できません。OptimizeHyperparameters の場合の交差検証は、名前と値の引数 HyperparameterOptimizationOptions を使用することのみによって変更できます。
モデル パラメーター
学習に使用するクラスの名前。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(i,j)は真のクラスがiである場合に点をクラスjに分類するコストです (行は真のクラス、列は予測したクラスに対応します)。Costの対応する行および列についてクラスの順序を指定するには、名前と値のペアの引数ClassNamesをさらに指定します。2 つのフィールドをもつ
Sを構成します。2 つのフィールドは、Yと同じ型のグループ名を表す変数が格納されているS.ClassNamesと、コスト行列が格納されているS.ClassificationCostsです。
既定値は、i~=j の場合は Cost(i,j)=1、i=j の場合は Cost(i,j)=0 です。
データ型: single | double | struct
線形係数のしきい値。'Delta' と非負のスカラー値で構成されるコンマ区切りのペアとして指定します。Mdl の係数の大きさが Delta よりも小さい場合、Mdl はこの係数を 0 に設定します。また、対応する予測子をモデルから削除できます。Delta を高い値に設定すると、削除できる予測子が多くなります。
2 次判別モデルでは Delta は 0 でなければなりません。
データ型: single | double
判別タイプ。'DiscrimType' と次の表の文字ベクトルまたは string スカラーから構成されるコンマ区切りのペアとして指定します。
| 値 | 説明 | 予測子の共分散の処理 |
|---|---|---|
'linear' | 正則化された線形判別分析 (LDA) |
|
'diaglinear' | LDA | すべてのクラスで同じ対角共分散行列になります。 |
'pseudolinear' | LDA | すべてのクラスで同じ共分散行列になります。共分散行列の逆行列には疑似逆行列が使用されます。 |
'quadratic' | 2 次判別分析 (QDA) | 共分散行列はクラスによって異なる可能性があります。 |
'diagquadratic' | QDA | 共分散行列は対角行列になり、クラスによって異なる可能性があります。 |
'pseudoquadratic' | QDA | 共分散行列はクラスによって異なる可能性があります。共分散行列の逆行列には疑似逆行列が使用されます。 |
メモ
正則化を使用するには、'linear' を指定しなければなりません。正則化の量を指定するには、名前と値のペアの引数 Gamma を使用します。
例: 'DiscrimType','quadratic'
Coeffs プロパティ フラグ。'FillCoeffs' と 'on' または 'off' で構成されるコンマ区切りのペアとして指定します。このフラグを 'on' に設定すると Coeffs プロパティが分類器オブジェクトに埋め込まれます。これにより計算量が増加する可能性があります (特に交差検証時)。既定値は 'on' です。ただし、交差検証の名前と値のペアを指定した場合は、このフラグの既定値は 'off' になります。
例: 'FillCoeffs','off'
予測子の共分散行列を推定するときに適用する正則化の量。'Gamma' と区間 [0,1] にあるスカラー値から構成されるコンマ区切りのペアとして指定します。Gamma を使用すると、共分散行列の構造を DiscrimType より細かく調節できます。
0を指定した場合、正則化を使用する共分散行列の調整は行われません。つまり、制限がない経験的な共分散行列が推定および使用されます。線形判別分析では、経験的な共分散行列が特異である場合、共分散行列の逆行列を計算するために必要な最小の正則化が自動的に適用されます。選択された正則化の量は、コマンド ラインで
Mdl.Gammaと入力することにより表示できます。2 次判別分析では、特異である経験的共分散行列が少なくとも 1 つのクラスにある場合、エラーがスローされます。
区間 (0,1) にある値を指定した場合、線形判別分析を実装しなければなりません。そうしないとエラーがスローされます。この結果、
DiscrimTypeが'linear'に設定されます。1を指定した場合、最大の正則化が共分散行列の推定に使用されます。つまり、共分散行列は対角行列に制限されます。または、対角共分散行列にするため、DiscrimTypeを'diagLinear'または'diagQuadratic'に設定できます。
例: 'Gamma',1
データ型: single | double
予測子変数名。一意な名前の string 配列または一意な文字ベクトルの cell 配列として指定します。PredictorNames の機能は、学習データの提供方法によって決まります。
XとYを指定した場合、PredictorNamesを使用してX内の予測子変数に名前を割り当てることができます。PredictorNames内の名前の順序は、Xの列の順序に一致しなければなりません。つまり、PredictorNames{1}はX(:,1)の名前、PredictorNames{2}はX(:,2)の名前であり、他も同様です。また、size(X,2)とnumel(PredictorNames)は等しくなければなりません。既定では
PredictorNamesは{'x1','x2',...}です。
Tblを指定する場合、PredictorNamesを使用して学習に使用する予測子変数を選択できます。つまり、fitcdiscrは、学習中にPredictorNamesの予測子変数と応答変数のみを使用します。PredictorNamesはTbl.Properties.VariableNamesのサブセットでなければならず、応答変数の名前を含めることはできません。既定では、すべての予測子変数の名前が
PredictorNamesに格納されます。PredictorNamesとformulaの両方ではなく、いずれか一方を使用して学習用の予測子を指定することをお勧めします。
例: "PredictorNames",["SepalLength","SepalWidth","PetalLength","PetalWidth"]
データ型: string | cell
各クラスの事前確率。次の表の値として指定します。
| 値 | 説明 |
|---|---|
"empirical" | クラスの事前確率は、Y のクラスの相対的頻度です。 |
"uniform" | クラスの事前確率はいずれも 1/K (K はクラス数) となります。 |
| 数値ベクトル | 各要素はクラスの事前確率です。Mdl.ClassNames に従って要素を並べ替えるか、ClassNames 名前と値のペアの引数を使用して順序を指定します。要素は合計が 1 になるように正規化されます。 |
| 構造体 | 構造体
|
Weights と Prior の両方に値を設定した場合は、重みは合計が対応するクラスの事前確率の値になるように再正規化されます。
例: Prior="uniform"
データ型: char | string | single | double | struct
応答変数名。文字ベクトルまたは string スカラーとして指定します。
Yを指定した場合、ResponseNameを使用して応答変数の名前を指定できます。ResponseVarNameまたはformulaを指定した場合、ResponseNameを使用できません。
例: ResponseName="response"
データ型: char | string
共分散行列を保存するためのフラグ。'SaveMemory' と 'on' または 'off' のいずれかで構成されるコンマ区切りのペアとして指定します。'on' を指定した場合、fitcdiscr にはフルの共分散行列ではなく、行列を計算するために十分な情報が格納されます。predict メソッドは予測のためにフルの共分散行列を計算し、行列は格納しません。'off' を指定すると、fitcdiscr はフルの共分散行列を計算し、Mdl に格納します。
入力行列に数千個もの予測子がある場合は、SaveMemory を 'on' に設定します。
例: 'SaveMemory','on'
スコア変換。文字ベクトル、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 の重みはサポートされません。
データ型: double | single | char | string
交差検証オプション
交差検証分割。交差検証のタイプと学習セットおよび検証セットのインデックス付けを指定する cvpartition オブジェクトとして指定します。
交差検証済みモデルの作成で指定できる名前と値の引数は、CVPartition、Holdout、KFold、Leaveout の 4 つのうちのいずれかのみです。
例: cvp = cvpartition(500,KFold=5) を使用して、500 個の観測値に対する 5 分割交差検証について無作為な分割を作成するとします。この場合、CVPartition=cvp を設定して交差検証分割を指定できます。
ホールドアウト検証に使用するデータの比率。範囲 (0,1) のスカラー値として指定します。Holdout=p を指定した場合、以下の手順が実行されます。
p*100% のデータを無作為に選択して検証データとして確保し、残りのデータを使用してモデルに学習をさせる。コンパクトな学習済みモデルを交差検証済みモデルの
Trainedプロパティに格納する。
交差検証済みモデルの作成で指定できる名前と値の引数は、CVPartition、Holdout、KFold、Leaveout の 4 つのうちのいずれかのみです。
例: Holdout=0.1
データ型: double | single
交差検証済みモデルで使用する分割の数。1 より大きい正の整数値として指定します。KFold=k を指定した場合、以下の手順が実行されます。
データを無作為に
k個のセットに分割する。各セットについて、そのセットを検証データとして確保し、他の
k– 1 個のセットを使用してモデルに学習をさせる。k個のコンパクトな学習済みモデルを、交差検証済みモデルのTrainedプロパティに含まれているk行 1 列の cell ベクトルに格納する。
交差検証済みモデルの作成で指定できる名前と値の引数は、CVPartition、Holdout、KFold、Leaveout の 4 つのうちのいずれかのみです。
例: KFold=5
データ型: single | double
Leave-one-out 法の交差検証のフラグ。"on" または "off" として指定します。Leaveout="on" を指定した場合、n 個の観測値 (n は、モデルの NumObservations プロパティで指定される、欠損観測値を除外した観測値の個数) のそれぞれについて以下の手順が実行されます。
いずれかの観測値を検証データとして確保し、他の n - 1 個の観測値を使用してモデルに学習をさせる。
n 個のコンパクトな学習済みモデルを、交差検証済みモデルの
Trainedプロパティに含まれている n 行 1 列の cell ベクトルに格納する。
交差検証済みモデルの作成で指定できる名前と値の引数は、CVPartition、Holdout、KFold、Leaveout の 4 つのうちのいずれかのみです。
例: Leaveout="on"
データ型: char | string
ハイパーパラメーター最適化オプション
最適化するパラメーター。'OptimizeHyperparameters' と次のいずれかから構成されるコンマ区切りのペアとして指定します。
'none'— 最適化を行いません。'auto'—{'Delta','Gamma'}を使用します。'all'— すべての使用可能パラメーターを最適化します。使用可能パラメーター名の string 配列または cell 配列。
optimizableVariableオブジェクトのベクトル。通常はhyperparametersの出力です。
最適化では、パラメーターを変化させることにより、fitcdiscr の交差検証損失 (誤差) を最小化しようとします。交差検証のタイプおよびその他の最適化の側面を制御するには、名前と値の引数 HyperparameterOptimizationOptions を使用します。HyperparameterOptimizationOptions を使用すると、ConstraintType オプションと ConstraintBounds オプションを設定することにより、交差検証損失の代わりに (コンパクトな) モデル サイズを最適化の目的として使用できます。
メモ
OptimizeHyperparameters の値は、他の名前と値の引数を使用して指定した値より優先されます。たとえば、OptimizeHyperparameters を "auto" に設定すると、fitcdiscr は "auto" オプションに対応するハイパーパラメーターを最適化して、ハイパーパラメーターに指定された値を無視します。
fitcdiscr では、以下のパラメーターを使用できます。
Delta—fitcdiscrは、既定では範囲[1e-6,1e3]の対数スケールで、正の値を探索します。DiscrimType—fitcdiscrは、'linear'、'quadratic'、'diagLinear'、'diagQuadratic'、'pseudoLinear'および'pseudoQuadratic'で探索します。Gamma—fitcdiscrは範囲[0,1]の実数値を探索します。
既定以外のパラメーターを設定するには、既定以外の値が含まれている optimizableVariable オブジェクトのベクトルを渡します。以下に例を示します。
load fisheriris params = hyperparameters('fitcdiscr',meas,species); params(1).Range = [1e-4,1e6];
OptimizeHyperparameters の値として params を渡します。
既定では、コマンド ラインに反復表示が表示され、最適化のハイパーパラメーターの個数に従ってプロットが表示されます。最適化とプロットにおける目的関数は誤分類率です。反復表示を制御するには、名前と値の引数 HyperparameterOptimizationOptions の Verbose オプションを設定します。プロットを制御するには、名前と値の引数 HyperparameterOptimizationOptions の ShowPlots フィールドを設定します。
たとえば、判別分析モデルの最適化を参照してください。
例: '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)
出力引数
学習済みの判別分析分類モデル。ClassificationDiscriminant モデル オブジェクトまたは ClassificationPartitionedModel 交差検証済みモデル オブジェクトとして返されます。
名前と値のペアの引数 KFold、Holdout、CrossVal、CVPartition のいずれかを設定した場合、Mdl は ClassificationPartitionedModel 交差検証済みモデル オブジェクトになります。それ以外の場合、Mdl は ClassificationDiscriminant モデル オブジェクトになります。
Mdl のプロパティを参照するには、ドット表記を使用します。たとえば、コマンド ウィンドウで推定成分平均を表示するには、Mdl.Mu を入力します。
OptimizeHyperparameters を指定して HyperparameterOptimizationOptions の ConstraintType オプションと ConstraintBounds オプションを設定している場合、Mdl はモデル オブジェクトの N 行 1 列の cell 配列になります。ここで、N は ConstraintBounds の行数と等しくなります。いずれの最適化問題からも実行可能なモデルが得られない場合、cell 配列の各値が [] になります。
複数の最適化問題についての最適化の結果の集計。AggregateBayesianOptimization オブジェクトとして返されます。AggregateOptimizationResults を返すには、OptimizeHyperparameters と HyperparameterOptimizationOptions を指定しなければなりません。HyperparameterOptimizationOptions の ConstraintType オプションと ConstraintBounds オプションも指定する必要があります。この出力の生成方法を示す例については、Hyperparameter Optimization with Multiple Constraint Boundsを参照してください。
詳細
判別分析のモデルは次のとおりです。
各クラス (
Y) では、多変量正規分布を使用してデータ (X) を生成します。つまり、このモデルはXに混合ガウス分布 (gmdistribution) があることを前提としています。線形判別分析の場合、モデルでは各クラスの共分散は同じで、平均のみ変わります。
2 次判別分析の場合、各クラスの平均と共分散の両方が異なります。
predict は、予測される分類コストが最小になるように分類します。
ここで
詳細については、判別分析モデルの使用による予測を参照してください。
ヒント
モデルに学習をさせた後で、新しいデータについてラベルを予測する C/C++ コードを生成できます。C/C++ コードの生成には MATLAB Coder™ が必要です。詳細については、コード生成の紹介を参照してください。
アルゴリズム
名前と値の引数
Cost、Prior、およびWeightsを指定すると、出力モデル オブジェクトにCost、Prior、およびWの各プロパティの指定値がそれぞれ格納されます。Costプロパティには、ユーザー指定のコスト行列がそのまま格納されます。PriorプロパティとWプロパティには、正規化後の事前確率と観測値の重みがそれぞれ格納されます。詳細については、誤分類コスト行列、事前確率、および観測値の重みを参照してください。Costプロパティは予測に使用されますが、学習には使用されません。したがって、Costは読み取り専用ではなく、学習済みモデルの作成後にドット表記を使用してプロパティの値を変更できます。
代替機能
関数
関数 classify も判別分析を実行します。通常、classify のほうが、以下の点で使い方が複雑な関数です。
classifyでは、新しい予測を実行するたびに、分類器を当てはめる必要があります。classifyは、交差検証もハイパーパラメーターの最適化も実行しません。classifyでは、事前確率を変更するときに、分類器を当てはめる必要があります。
拡張機能
fitcdiscr 関数は、tall 配列を次の使用上の注意および制限付きでサポートします。
以下の構文がサポートされます。
Mdl = fitcdiscr(Tbl,Y)Mdl = fitcdiscr(X,Y)Mdl = fitcdiscr(___,Name=Value)[Mdl,FitInfo,HyperparameterOptimizationResults] = fitcdiscr(___,Name=Value)— 名前と値の引数OptimizeHyperparametersを指定している場合に、fitcdiscrから追加の出力引数FitInfoおよびHyperparameterOptimizationResultsが返されます。
出力引数
FitInfoは、現在は将来の使用のために予約されている空の構造体配列です。通常、出力引数
HyperparameterOptimizationResultsは、ハイパーパラメーターの交差検証最適化を記述する値が関連付けられているハイパーパラメーターの table またはBayesianOptimizationオブジェクトです。ただし、HyperparameterOptimizationOptionsを指定してConstraintTypeとConstraintBoundsを設定している場合、HyperparameterOptimizationResultsはAggregateBayesianOptimizationオブジェクトになります。HyperparameterOptimizationOptionsを指定してConstraintType、ConstraintBounds、またはOptimizer="bayesopt"を設定していない場合、HyperparameterOptimizationResultsは table になり、使用したハイパーパラメーター、観測された目的関数の値、および最低 (最良) から最高 (最悪) までの観測値の順位が格納されます。モデルの作成時に名前と値の引数
OptimizeHyperparametersが空以外であれば、HyperparameterOptimizationResultsは空以外になります。HyperparameterOptimizationResultsの値は、モデルの作成時に名前と値の引数HyperparameterOptimizationOptionsに指定する値に依存します。サポートされる名前と値のペアの引数および違いは次のとおりです。
'ClassNames''Cost''DiscrimType''HyperparameterOptimizationOptions'— 交差検証として、tall 最適化では'Holdout'検証のみがサポートされます。既定では、データの 20% がホールドアウト検証データとして選択されて確保され、残りのデータがモデルの学習に使用されます。この引数を使用してホールドアウトの比率に別の値を指定できます。たとえば、データの 30% を検証データとして確保するには'HyperparameterOptimizationOptions',struct('Holdout',0.3)と指定します。'OptimizeHyperparameters'— 最適化で認められるパラメーターは'DiscrimType'のみです。'auto'を指定すると'DiscrimType'が使用されます。'PredictorNames''Prior''ResponseName''ScoreTransform''Weights'
tall 配列および tall table の場合、
fitcdiscrはClassificationDiscriminantオブジェクトと同じプロパティのほとんどが含まれているCompactClassificationDiscriminantオブジェクトを返します。主な違いは、コンパクトなオブジェクトがメモリ要件の影響を受けやすいということです。コンパクトなオブジェクトは、データ、またはデータと同じサイズの配列を含むプロパティを含みません。コンパクトなオブジェクトには、以下のClassificationDiscriminantのプロパティは格納されません。ModelParametersNumObservationsHyperparameterOptimizationResultsRowsUsedXCenteredWXY
さらに、コンパクトなオブジェクトは以下の
ClassificationDiscriminantのメソッドをサポートしません。compactcrossvalcvshrinkresubEdgeresubLossresubMarginresubPredict
詳細は、tall 配列を参照してください。
ハイパーパラメーターの最適化を並列実行するには、fitcdiscr 関数を呼び出すときに名前と値の引数 HyperparameterOptimizationOptions で UseParallel=true オプションを使用します。
並列的なハイパーパラメーターの最適化の詳細については、並列ベイズ最適化を参照してください。
並列計算の全般的な情報については、自動並列サポートを使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2014a で導入HyperparameterOptimizationOptions に UseParallel=true が含まれている場合にソフトウェアで並列プールを開けないと、fitcdiscr は既定で逐次計算を実行します。
以前のリリースでは、このような状況でソフトウェアからエラーが発行されます。
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)