判別分析分類器の近似
は、テーブル Mdl
= fitcdiscr(Tbl
,ResponseVarName
)Tbl
に含まれている入力変数 (予測子、特徴量または属性とも呼ばれます) と ResponseVarName
に含まれている出力 (応答またはラベル) に基づいてあてはめた判別分析モデルを返します。
は、前の構文のいずれかを使用し、1 つ以上の名前と値のペアの引数で指定されたオプションを追加して、分類器をあてはめます。たとえば、モデルの交差検証損失を最小化するようにハイパーパラメーターを最適化したり、誤分類コスト、各クラスの事前確率、観測値の重みを指定できます。Mdl
= fitcdiscr(___,Name,Value
)
フィッシャーのアヤメのデータセットを読み込みます。
load fisheriris
データセット全体を使用して、判別分析モデルに学習をさせます。
Mdl = fitcdiscr(meas,species)
Mdl = ClassificationDiscriminant ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 DiscrimType: 'linear' Mu: [3x4 double] Coeffs: [3x3 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.71954 | 0.66667 | 0.66667 | 13.261 | 0.25218 |
| 2 | Best | 0.02 | 0.55636 | 0.02 | 0.064227 | 2.7404e-05 | 0.073264 |
| 3 | Accept | 0.04 | 0.2501 | 0.02 | 0.020084 | 3.2455e-06 | 0.46974 |
| 4 | Accept | 0.66667 | 0.31496 | 0.02 | 0.020118 | 14.879 | 0.98622 |
| 5 | Accept | 0.046667 | 0.50363 | 0.02 | 0.019907 | 0.00031449 | 0.97362 |
| 6 | Accept | 0.04 | 0.2805 | 0.02 | 0.028438 | 4.5092e-05 | 0.43616 |
| 7 | Accept | 0.046667 | 0.53017 | 0.02 | 0.031424 | 2.0973e-05 | 0.9942 |
| 8 | Accept | 0.02 | 0.20999 | 0.02 | 0.022424 | 1.0554e-06 | 0.0024286 |
| 9 | Accept | 0.02 | 0.15776 | 0.02 | 0.021105 | 1.1232e-06 | 0.00014039 |
| 10 | Accept | 0.02 | 0.19888 | 0.02 | 0.020948 | 0.00011837 | 0.0032994 |
| 11 | Accept | 0.02 | 0.19964 | 0.02 | 0.020172 | 1.0292e-06 | 0.027725 |
| 12 | Accept | 0.02 | 0.32422 | 0.02 | 0.020105 | 9.7792e-05 | 0.0022817 |
| 13 | Accept | 0.02 | 0.20816 | 0.02 | 0.020038 | 0.00036014 | 0.0015136 |
| 14 | Accept | 0.02 | 0.26471 | 0.02 | 0.019597 | 0.00021059 | 0.0044789 |
| 15 | Accept | 0.02 | 0.17022 | 0.02 | 0.019461 | 1.1911e-05 | 0.0010135 |
| 16 | Accept | 0.02 | 0.19049 | 0.02 | 0.01993 | 0.0017896 | 0.00071115 |
| 17 | Accept | 0.02 | 0.30156 | 0.02 | 0.019551 | 0.00073745 | 0.0066899 |
| 18 | Accept | 0.02 | 0.15629 | 0.02 | 0.019776 | 0.00079304 | 0.00011509 |
| 19 | Accept | 0.02 | 0.19123 | 0.02 | 0.019678 | 0.007292 | 0.0007911 |
| 20 | Accept | 0.046667 | 0.2012 | 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.16608 | 0.02 | 0.019043 | 0.0036004 | 0.0024547 |
| 22 | Accept | 0.02 | 0.2527 | 0.02 | 0.019755 | 2.5238e-05 | 0.0015542 |
| 23 | Accept | 0.02 | 0.19486 | 0.02 | 0.0191 | 1.5478e-05 | 0.0026899 |
| 24 | Accept | 0.02 | 0.2453 | 0.02 | 0.019081 | 0.0040557 | 0.00046815 |
| 25 | Accept | 0.02 | 0.14985 | 0.02 | 0.019333 | 2.959e-05 | 0.0011358 |
| 26 | Accept | 0.02 | 0.15691 | 0.02 | 0.019369 | 2.3111e-06 | 0.0029205 |
| 27 | Accept | 0.02 | 0.18592 | 0.02 | 0.019455 | 3.8898e-05 | 0.0011665 |
| 28 | Accept | 0.02 | 0.148 | 0.02 | 0.019449 | 0.0035925 | 0.0020278 |
| 29 | Accept | 0.66667 | 0.4077 | 0.02 | 0.019479 | 998.93 | 0.064276 |
| 30 | Accept | 0.02 | 0.23273 | 0.02 | 0.01947 | 8.1557e-06 | 0.0008004 |
__________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 88.8181 seconds Total objective function evaluation time: 8.0697 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.55636 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.19351
Mdl = ClassificationDiscriminant ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 HyperparameterOptimizationResults: [1x1 BayesianOptimization] DiscrimType: 'linear' Mu: [3x4 double] Coeffs: [3x3 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 'local' profile ... Connected to the parallel pool (number of workers: 6). 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 labels
Y = M×1 tall logical array 1 0 1 1 0 1 0 0 : :
予測子データの tall 配列を作成します。
X = tt{:,1:end-1} % Predictor data
X = 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'
を使用して、自動的にハイパーパラメーターを最適化します。ホールドアウト交差検証損失が最小になる最適な 'DiscrimType'
の値を求めます ('auto'
を指定すると '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 'local': - Pass 1 of 2: Completed in 5.7 sec - Pass 2 of 2: Completed in 4.3 sec Evaluation completed in 16 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 2.5 sec Evaluation completed in 2.8 sec |======================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | DiscrimType | | | result | | runtime | (observed) | (estim.) | | |======================================================================================| | 1 | Best | 0.11354 | 25.315 | 0.11354 | 0.11354 | quadratic |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 1.5 sec Evaluation completed in 2.7 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 1.4 sec Evaluation completed in 1.6 sec | 2 | Accept | 0.11354 | 7.9367 | 0.11354 | 0.11354 | pseudoQuadra |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.87 sec Evaluation completed in 2 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.78 sec Evaluation completed in 0.91 sec | 3 | Accept | 0.12869 | 6.5057 | 0.11354 | 0.11859 | pseudoLinear |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.9 sec Evaluation completed in 1.7 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 1.3 sec Evaluation completed in 1.4 sec | 4 | Accept | 0.12745 | 6.4167 | 0.11354 | 0.1208 | diagLinear |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.85 sec Evaluation completed in 1.7 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.8 sec Evaluation completed in 0.93 sec | 5 | Accept | 0.12869 | 6.1236 | 0.11354 | 0.12238 | linear |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.85 sec Evaluation completed in 1.5 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.75 sec Evaluation completed in 0.9 sec | 6 | Best | 0.11301 | 5.4147 | 0.11301 | 0.12082 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.82 sec Evaluation completed in 1.5 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.77 sec Evaluation completed in 0.89 sec | 7 | Accept | 0.11301 | 5.297 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.84 sec Evaluation completed in 1.5 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.8 sec Evaluation completed in 0.93 sec | 8 | Accept | 0.11301 | 5.6152 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 1.3 sec Evaluation completed in 2.1 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.75 sec Evaluation completed in 0.88 sec | 9 | Accept | 0.11301 | 5.9147 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.88 sec Evaluation completed in 1.6 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 1.3 sec Evaluation completed in 1.4 sec | 10 | Accept | 0.11301 | 6.0504 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.82 sec Evaluation completed in 1.5 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 1.3 sec Evaluation completed in 1.4 sec | 11 | Accept | 0.11301 | 5.9595 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.86 sec Evaluation completed in 1.6 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.76 sec Evaluation completed in 0.91 sec | 12 | Accept | 0.11301 | 5.4266 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.88 sec Evaluation completed in 1.6 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.75 sec Evaluation completed in 0.87 sec | 13 | Accept | 0.11301 | 5.3869 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.83 sec Evaluation completed in 1.5 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.8 sec Evaluation completed in 0.97 sec | 14 | Accept | 0.11301 | 5.4876 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.85 sec Evaluation completed in 1.5 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.73 sec Evaluation completed in 0.85 sec | 15 | Accept | 0.11301 | 5.4052 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.87 sec Evaluation completed in 1.5 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.78 sec Evaluation completed in 0.9 sec | 16 | Accept | 0.11301 | 5.4434 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.89 sec Evaluation completed in 1.6 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.8 sec Evaluation completed in 0.93 sec | 17 | Accept | 0.11301 | 5.5804 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.94 sec Evaluation completed in 1.6 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.79 sec Evaluation completed in 0.92 sec | 18 | Accept | 0.11354 | 5.616 | 0.11301 | 0.11301 | pseudoQuadra |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.85 sec Evaluation completed in 1.5 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.76 sec Evaluation completed in 0.88 sec | 19 | Accept | 0.11301 | 5.4031 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.76 sec Evaluation completed in 1.4 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.75 sec Evaluation completed in 0.88 sec | 20 | Accept | 0.11301 | 5.1974 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.77 sec Evaluation completed in 1.4 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.75 sec Evaluation completed in 0.87 sec |======================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | DiscrimType | | | result | | runtime | (observed) | (estim.) | | |======================================================================================| | 21 | Accept | 0.11301 | 5.1418 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 1.3 sec Evaluation completed in 2 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.73 sec Evaluation completed in 0.86 sec | 22 | Accept | 0.11301 | 5.9864 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.88 sec Evaluation completed in 1.6 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.78 sec Evaluation completed in 0.91 sec | 23 | Accept | 0.11354 | 5.5656 | 0.11301 | 0.11301 | quadratic |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.82 sec Evaluation completed in 1.5 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.77 sec Evaluation completed in 0.9 sec | 24 | Accept | 0.11354 | 5.3012 | 0.11301 | 0.11301 | pseudoQuadra |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 1.4 sec Evaluation completed in 2.1 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.77 sec Evaluation completed in 0.9 sec | 25 | Accept | 0.11301 | 6.2276 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.86 sec Evaluation completed in 1.6 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.77 sec Evaluation completed in 0.89 sec | 26 | Accept | 0.11301 | 5.5308 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.92 sec Evaluation completed in 1.6 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.88 sec Evaluation completed in 1 sec | 27 | Accept | 0.11301 | 5.7396 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.83 sec Evaluation completed in 1.5 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.78 sec Evaluation completed in 0.9 sec | 28 | Accept | 0.11354 | 5.4403 | 0.11301 | 0.11301 | quadratic |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.86 sec Evaluation completed in 1.5 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.81 sec Evaluation completed in 0.93 sec | 29 | Accept | 0.11301 | 5.3572 | 0.11301 | 0.11301 | diagQuadrati |
Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.89 sec Evaluation completed in 1.6 sec Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.74 sec Evaluation completed in 0.85 sec | 30 | Accept | 0.11354 | 5.2718 | 0.11301 | 0.11301 | quadratic |
__________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 229.5689 seconds. Total objective function evaluation time: 191.058 Best observed feasible point: DiscrimType _____________ diagQuadratic Observed objective function value = 0.11301 Estimated objective function value = 0.11301 Function evaluation time = 5.4147 Best estimated feasible point (according to models): DiscrimType _____________ diagQuadratic Estimated objective function value = 0.11301 Estimated function evaluation time = 5.784 Evaluating tall expression using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.76 sec Evaluation completed in 1.4 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: 229.5689 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]
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
Y
— クラス ラベルクラス ラベル。categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。Y
の各行は、X
の対応する行の分類を表します。
Y
内の NaN
、''
(空の文字ベクトル)、""
(空の string)、<missing>
、および <undefined>
値は欠損値と見なされます。このため、欠損応答がある観測値は学習に使用されません。
データ型: categorical
| char
| string
| logical
| single
| double
| cell
X
— 予測子データ予測子の値。数値行列として指定します。X
の各列が 1 つの変数を表し、各行が 1 つの観測値を表します。
fitcdiscr
は X
の NaN
値を欠損値として認識します。fitcdiscr
は、X
の近似において、欠損値のある観測値を使用しません。
データ型: single
| double
オプションの Name,Value
引数のコンマ区切りペアを指定します。Name
は引数名で、Value
は対応する値です。Name
は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN
のように、複数の名前と値のペアの引数を、任意の順番で指定できます。
'DiscrimType','quadratic','SaveMemory','on'
は 2 次判別分類器を指定しますが、共分散行列は出力オブジェクトに格納されません。メモ
交差検証の名前と値のペアの引数を名前と値のペアの引数 'OptimizeHyperparameters'
と同時に使用することはできません。'OptimizeHyperparameters'
の場合の交差検証は、名前と値のペアの引数 'HyperparameterOptimizationOptions'
を使用することのみによって変更できます。
'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(i,j)
は真のクラスが i
である場合に 1 つの点をクラス 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'
— 線形係数のしきい値0
(既定値) | 非負のスカラー値線形係数のしきい値。'Delta'
と非負のスカラー値で構成されるコンマ区切りのペアとして指定します。Mdl
の係数の大きさが Delta
よりも小さい場合、Mdl
はこの係数を 0
に設定します。また、対応する予測子をモデルから削除できます。Delta
を高い値に設定すると、削除できる予測子が多くなります。
2 次判別モデルでは Delta
は 0
でなければなりません。
データ型: single
| double
'DiscrimType'
— 判別タイプ'linear'
(既定値) | 'quadratic'
| 'diaglinear'
| 'diagquadratic'
| 'pseudolinear'
| 'pseudoquadratic'
判別タイプ。'DiscrimType'
と次の表の文字ベクトルまたは string スカラーから構成されるコンマ区切りのペアとして指定します。
値 | 説明 | 予測子の共分散の処理 |
---|---|---|
'linear' | 正則化された線形判別分析 (LDA) |
|
'diaglinear' | LDA | すべてのクラスで同じ対角共分散行列になります。 |
'pseudolinear' | LDA | すべてのクラスで同じ共分散行列になります。共分散行列の逆行列には疑似逆行列が使用されます。 |
'quadratic' | 2 次判別分析 (QDA) | 共分散行列はクラスによって異なる可能性があります。 |
'diagquadratic' | QDA | 共分散行列は対角行列になり、クラスによって異なる可能性があります。 |
'pseudoquadratic' | QDA | 共分散行列はクラスによって異なる可能性があります。共分散行列の逆行列には疑似逆行列が使用されます。 |
メモ
正則化を使用するには、'linear'
を指定しなければなりません。正則化の量を指定するには、名前と値のペアの引数 Gamma
を使用します。
例: 'DiscrimType','quadratic'
'FillCoeffs'
— Coeffs
プロパティ フラグ'on'
| 'off'
Coeffs
プロパティ フラグ。'FillCoeffs'
と 'on'
または 'off'
で構成されるコンマ区切りのペアとして指定します。このフラグを 'on'
に設定すると Coeffs
プロパティが分類器オブジェクトに埋め込まれます。これにより計算量が増加する可能性があります (特に交差検証時)。既定値は 'on'
です。ただし、交差検証の名前と値のペアを指定した場合は、このフラグの既定値は 'off'
になります。
例: 'FillCoeffs','off'
'Gamma'
— 正則化の量予測子の共分散行列を推定するときに適用する正則化の量。'Gamma'
と区間 [0,1] にあるスカラー値から構成されるコンマ区切りのペアとして指定します。Gamma
を使用すると、共分散行列の構造を DiscrimType
より細かく調節できます。
0
を指定した場合、正則化を使用する共分散行列の調整は行われません。つまり、制限がない経験的な共分散行列が推定および使用されます。
線形判別分析では、経験的な共分散行列が特異である場合、共分散行列の逆行列を計算するために必要な最小の正則化が自動的に適用されます。選択された正則化の量は、コマンド ラインで Mdl.Gamma
と入力することにより表示できます。
2 次判別分析では、特異である経験的共分散行列が少なくとも 1 つのクラスにある場合、エラーがスローされます。
区間 (0,1) にある値を指定した場合、線形判別分析を実装しなければなりません。そうしないとエラーがスローされます。この結果、DiscrimType
が 'linear'
に設定されます。
1
を指定した場合、最大の正則化が共分散行列の推定に使用されます。つまり、共分散行列は対角行列に制限されます。または、対角共分散行列にするため、DiscrimType
を 'diagLinear'
または 'diagQuadratic'
に設定できます。
例: 'Gamma',1
データ型: single
| double
'PredictorNames'
— 予測子変数名予測子変数名。'PredictorNames'
と一意な名前の 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
'Prior'
— 事前確率'empirical'
(既定値) | 'uniform'
| スカラー値のベクトル | 構造体各クラスの事前確率。'Prior'
と次の表の値から構成されるコンマ区切りのペアとして指定します。
値 | 説明 |
---|---|
'empirical' | クラスの事前確率は、Y のクラスの相対的頻度です。 |
'uniform' | クラスの事前確率はいずれも 1/K (K はクラス数) となります。 |
数値ベクトル | 各要素はクラスの事前確率です。Mdl .ClassNames に従って要素を並べ替えるか、ClassNames 名前と値のペアの引数を使用して順序を指定します。要素は合計が 1 になるように正規化されます。 |
構造体 | 構造体
|
Weights
と Prior
の両方に値を設定した場合は、重みは合計が対応するクラスの事前確率の値になるように再正規化されます。
例: 'Prior','uniform'
データ型: char
| string
| single
| double
| struct
'ResponseName'
— 応答変数名'Y'
(既定値) | 文字ベクトル | string スカラー応答変数名。'ResponseName'
と文字ベクトルまたは string スカラーから構成されるコンマ区切りのペアとして指定します。
Y
を指定した場合、'ResponseName'
を使用して応答変数の名前を指定できます。
ResponseVarName
または formula
を指定した場合、'ResponseName'
を使用することはできません。
例: 'ResponseName','response'
データ型: char
| string
'SaveMemory'
— 共分散行列を保存するためのフラグ'off'
(既定値) | 'on'
共分散行列を保存するためのフラグ。'SaveMemory'
と 'on'
または 'off'
のいずれかで構成されるコンマ区切りのペアとして指定します。'on'
を指定した場合、fitcdiscr
にはフルの共分散行列ではなく、行列を計算するために十分な情報が格納されます。predict
メソッドは予測のためにフルの共分散行列を計算し、行列は格納しません。'off'
を指定すると、fitcdiscr
はフルの共分散行列を計算し、Mdl
に格納します。
入力行列に数千個もの予測子がある場合は、SaveMemory
を 'on'
に設定します。
例: 'SaveMemory','on'
'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
が正規化されます。
既定の設定では、Weights
は ones(
です。n
,1)n
は X
または Tbl
の観測値数です。
データ型: double
| single
| char
| string
'CrossVal'
— 交差検証フラグ'off'
(既定値) | 'on'
'CVPartition'
— 交差検証分割[]
(既定値) | cvpartition
分割オブジェクト交差検証分割。'CVPartition'
と、cvpartition
で作成した cvpartition
分割オブジェクトから構成されるコンマ区切りのペアとして指定します。分割オブジェクトは、交差検証のタイプと、学習セットおよび検証セットのインデックス付けを指定します。
交差検証済みモデルの作成に使用できる名前と値のペアの引数は、CVPartition
、Holdout
、KFold
、Leaveout
の 4 つのうちのいずれかのみです。
例: cvp = cvpartition(500,'KFold',5)
を使用して、500 個の観測値に対する 5 分割交差検証について無作為な分割を作成するとします。この場合、'CVPartition',cvp
を使用して交差検証済みモデルを指定できます。
'Holdout'
— ホールドアウト検証の対象データの比率ホールドアウト検証に使用されるデータの比率。'Holdout'
と範囲 (0,1) のスカラー値から構成されるコンマ区切りのペアとして指定します。'Holdout',p
を指定した場合、以下の手順が実行されます。
p*100
% のデータを無作為に選択して検証データとして確保し、残りのデータを使用してモデルに学習をさせる。
コンパクトな学習済みモデルを交差検証済みモデルの Trained
プロパティに格納する。
交差検証済みモデルの作成に使用できる名前と値のペアの引数は、CVPartition
、Holdout
、KFold
、Leaveout
の 4 つのうちのいずれかのみです。
例: 'Holdout',0.1
データ型: double
| single
'KFold'
— 分割の数10
(既定値) | 1 より大きい正の整数値交差検証済みモデルで使用する分割数。'KFold'
と 1 より大きい正の整数値から構成されるコンマ区切りのペアとして指定します。'KFold',k
を指定した場合、以下の手順が実行されます。
データを無作為に k
個のセットに分割する。
各セットについて、そのセットを検定データとして確保し、他の k
– 1 個のセットを使用してモデルに学習をさせる。
k
個のコンパクトな学習済みモデルを、交差検証済みモデルの Trained
プロパティに含まれている k
行 1 列の cell ベクトルのセルに格納する。
交差検証済みモデルの作成に使用できる名前と値のペアの引数は、CVPartition
、Holdout
、KFold
、Leaveout
の 4 つのうちのいずれかのみです。
例: 'KFold',5
データ型: single
| double
'Leaveout'
— Leave-one-out 法の交差検証のフラグ'off'
(既定値) | 'on'
Leave-one-out 法の交差検証のフラグ。'Leaveout'
と 'on'
または 'off'
で構成されるコンマ区切りのペアとして指定します。'Leaveout','on'
を指定した場合、n 個の観測値 (n は、モデルの NumObservations
プロパティで指定される、欠損観測値を除外した観測値の個数) のそれぞれについて以下の手順が実行されます。
その観測値を検証データとして確保し、他の n - 1 個の観測値を使用してモデルに学習をさせる。
n 個のコンパクトな学習済みモデルを、交差検証済みモデルの Trained
プロパティに含まれている n 行 1 列の cell ベクトルのセルに格納する。
交差検証済みモデルの作成に使用できる名前と値のペアの引数は、CVPartition
、Holdout
、KFold
、Leaveout
の 4 つのうちのいずれかのみです。
例: 'Leaveout','on'
'OptimizeHyperparameters'
— 最適化するパラメーター'none'
(既定値) | 'auto'
| 'all'
| 使用可能パラメーター名の string 配列または cell 配列 | optimizableVariable
オブジェクトのベクトル最適化するパラメーター。'OptimizeHyperparameters'
と次のいずれかから構成されるコンマ区切りのペアとして指定します。
'none'
— 最適化を行いません。
'auto'
— {'Delta','Gamma'}
を使用します。
'all'
— すべての使用可能パラメーターを最適化します。
使用可能パラメーター名の string 配列または cell 配列。
optimizableVariable
オブジェクトのベクトル。通常は hyperparameters
の出力です。
最適化では、パラメーターを変化させることにより、fitcdiscr
の交差検証損失 (誤差) を最小化しようとします。(各種の状況における) 交差検証損失の詳細については、分類損失を参照してください。交差検証のタイプおよびその他の最適化の側面を制御するには、名前と値のペア HyperparameterOptimizationOptions
を使用します。
メモ
'OptimizeHyperparameters'
の値は、他の名前と値のペアの引数を使用して設定した値より優先されます。たとえば、'OptimizeHyperparameters'
を 'auto'
に設定すると、'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
を渡します。
既定では、コマンド ラインに反復表示が表示され、最適化のハイパーパラメーターの個数に従ってプロットが表示されます。最適化とプロットにおける目的関数は、回帰の場合は log(1 + cross-validation loss)、分類の場合は誤分類率です。反復表示を制御するには、名前と値のペアの引数 'HyperparameterOptimizationOptions'
の Verbose
フィールドを設定します。プロットを制御するには、名前と値のペアの引数 'HyperparameterOptimizationOptions'
の ShowPlots
フィールドを設定します。
たとえば、判別分析モデルの最適化を参照してください。
例: '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
— 学習済みの判別分析分類モデルClassificationDiscriminant
モデル オブジェクト | ClassificationPartitionedModel
交差検証済みモデル オブジェクト学習済みの判別分析分類モデル。ClassificationDiscriminant
モデル オブジェクトまたは ClassificationPartitionedModel
交差検証済みモデル オブジェクトとして返されます。
名前と値のペアの引数 KFold
、Holdout
、CrossVal
、CVPartition
のいずれかを設定した場合、Mdl
は ClassificationPartitionedModel
交差検証済みモデル オブジェクトになります。それ以外の場合、Mdl
は ClassificationDiscriminant
モデル オブジェクトになります。
Mdl
のプロパティを参照するには、ドット表記を使用します。たとえば、コマンド ウィンドウで推定成分平均を表示するには、Mdl.Mu
を入力します。
判別分析のモデルは次のとおりです。
各クラス (Y
) では、多変量正規分布を使用してデータ (X
) を生成します。つまり、このモデルは X
に混合ガウス分布 (gmdistribution
) があることを前提としています。
線形判別分析の場合、モデルでは各クラスの共分散は同じで、平均のみ変わります。
2 次判別分析の場合、各クラスの平均と共分散の両方が異なります。
predict
は、予測される分類コストが最小になるように分類します。
ここで
詳細については、判別分析モデルの使用による予測を参照してください。
モデルに学習をさせた後で、新しいデータについてラベルを予測する C/C++ コードを生成できます。C/C++ コードの生成には MATLAB Coder™ が必要です。詳細については、コード生成の紹介を参照してください。
関数 classify
も判別分析を実行します。通常、classify
のほうが、以下の点で使い方が複雑な関数です。
classify
では、新しい予測を実行するたびに、分類器を近似しなくてはなりません。
classify
は、交差検証もハイパーパラメーターの最適化も実行しません。
classify
では、事前確率を変更するときに、分類器を近似しなくてはなりません。
使用上の注意事項および制限事項:
以下の構文がサポートされます。
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
オブジェクトです。
モデルの作成時に名前と値のペアの引数 'OptimizeHyperparameters'
が空以外であった場合、'HyperparameterOptimizationResults'
は空以外になります。'HyperparameterOptimizationResults'
の値は、モデルの作成時に名前と値のペアの引数 'HyperparameterOptimizationOptions'
について指定した値に依存します。
'bayesopt'
(既定) を指定した場合、HyperparameterOptimizationResults
は BayesianOptimization
クラスのオブジェクトになります。
'gridsearch'
または 'randomsearch'
を指定した場合、HyperparameterOptimizationResults
は table になり、使用したハイパーパラメーター、観測された目的関数の値(交差検証損失)、および最低 (最良) から最高 (最悪) までの観測値の順位が格納されます。
サポートされる名前と値のペアの引数および違いは次のとおりです。
'ClassNames'
'Cost'
'DiscrimType'
'HyperparameterOptimizationOptions'
— 交差検証として、tall 最適化では 'Holdout'
検証のみがサポートされます。たとえば、fitcdiscr(X,Y,'OptimizeHyperparameters','auto','HyperparameterOptimizationOptions',struct('Holdout',0.2))
を指定できます。
'OptimizeHyperparameters'
— 最適化で認められるパラメーターは 'DiscrimType'
のみです。'auto'
を指定すると 'DiscrimType'
が使用されます。
'PredictorNames'
'Prior'
'ResponseName'
'ScoreTransform'
'Weights'
tall 配列および tall table の場合、fitcdiscr
は ClassificationDiscriminant
オブジェクトと同じプロパティのほとんどが含まれている CompactClassificationDiscriminant
オブジェクトを返します。主な違いは、コンパクトなオブジェクトがメモリ要件の影響を受けやすいということです。コンパクトなオブジェクトは、データ、またはデータと同じサイズの配列を含むプロパティを含みません。コンパクトなオブジェクトには、以下の ClassificationDiscriminant
のプロパティは格納されません。
ModelParameters
NumObservations
HyperparameterOptimizationResults
RowsUsed
XCentered
W
X
Y
さらに、コンパクトなオブジェクトは以下の ClassificationDiscriminant
のメソッドをサポートしません。
compact
crossval
cvshrink
resubEdge
resubLoss
resubMargin
resubPredict
詳細は、tall 配列を参照してください。
ハイパーパラメーターの最適化を並列実行するため、この関数を呼び出すときに名前と値のペアの引数 'HyperparameterOptimizationOptions', struct('UseParallel',true)
を指定します。
並列的なハイパーパラメーターの最適化の詳細については、並列ベイズ最適化を参照してください。
並列計算の全般的な情報については、自動並列サポートを使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
次の 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.