このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
fitrauto
構文
説明
fitrauto
は、指定した予測子と応答データに基づいて、さまざまなハイパーパラメーターの値をもつ回帰モデルのタイプの選択を自動的に試します。既定では、この関数は、ベイズ最適化を使用してモデルとそのハイパーパラメーターの値を選択し、各モデルについて log(1 + valLoss) を計算します。ここで、valLoss は交差検証の平均二乗誤差 (MSE) です。最適化が完了すると、fitrauto
は、データ セット全体で学習済みの、新しいデータについての応答が最も優れているとされるモデルを返します。返されたモデルのオブジェクト関数 predict
と loss
を使用して、新しいデータの予測、および検定セット MSE の計算をそれぞれ行うことができます。
データに最適なモデルのタイプがわからない場合は、fitrauto
を使用します。回帰モデルのハイパーパラメーターを調整するための代替方法については、代替機能を参照してください。
データに含まれる観測値が 10,000 を超える場合は、fitrauto
を実行するとき、ベイズ最適化の代わりに非同期連続半減アルゴリズム (ASHA) の使用を検討してください。データ セットの観測値が多いと、多くの場合、ベイズ最適化よりも ASHA 最適化の方が優れた解を速く見つけます。
は、調整されたハイパーパラメーターをもつ回帰モデル Mdl
= fitrauto(Tbl
,ResponseVarName
)Mdl
を返します。テーブル Tbl
には予測子変数と応答変数を格納します。ResponseVarName
は応答変数の名前です。
では、前の構文におけるいずれかの入力引数の組み合わせに加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、名前と値の引数 Mdl
= fitrauto(___,Name,Value
)HyperparameterOptimizationOptions
を使用して、ベイズ最適化 (既定) または非同期連続半減アルゴリズム (ASHA) を使用するかどうかを指定します。ASHA 最適化を使用するには、"HyperparameterOptimizationOptions",struct("Optimizer","asha")
を指定します。この構造体に追加フィールドを含めて、その他の最適化の側面を制御できます。
[
は、Mdl
,OptimizationResults
] = fitrauto(___)OptimizationResults
も返します。これには、モデル選択とハイパーパラメーター調整のプロセスの結果が含まれます。この出力は、ベイズ最適化を使用している場合は BayesianOptimization
オブジェクトで、ASHA 最適化を使用している場合は table です。
例
table データを使用した回帰モデルの自動選択
fitrauto
を使用し、table に保存されている予測子データと応答データに基づいて、最適化されたハイパーパラメーターをもつ回帰モデルを自動的に選択します。
データの読み込み
carbig
データセットを読み込みます。このデータセットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。
load carbig
Acceleration
、Displacement
などの予測子変数と応答変数 MPG
が格納された table を作成します。
cars = table(Acceleration,Displacement,Horsepower, ...
Model_Year,Origin,Weight,MPG);
cars
から table に欠損値がある行を削除します。
cars = rmmissing(cars);
米国製かどうかに基づいて、自動車を分類します。
cars.Origin = categorical(cellstr(cars.Origin)); cars.Origin = mergecats(cars.Origin,["France","Japan",... "Germany","Sweden","Italy","England"],"NotUSA");
データの分割
データを学習セットと検定セットに分割します。モデル選択とハイパーパラメーター調整のプロセスに観測値の約 80% を使用し、fitrauto
によって返された最終モデルのパフォーマンスのテストに観測値の 20% を使用します。cvpartition
を使用してデータを分割します。
rng("default") % For reproducibility of the data partition c = cvpartition(height(cars),"Holdout",0.2); trainingIdx = training(c); % Training set indices carsTrain = cars(trainingIdx,:); testIdx = test(c); % Test set indices carsTest = cars(testIdx,:);
fitrauto
の実行
学習データを fitrauto
に渡します。既定では、fitrauto
は、試行する適切なモデルのタイプを決定し、ベイズ最適化を使用して適切なハイパーパラメーター値を求め、パフォーマンスが最大となることが期待される学習済みモデル Mdl
を返します。さらに、fitrauto
は、最適化のプロット、および最適化の結果の反復表示を提供します。これらの結果を解釈する方法の詳細については、Verbose の表示を参照してください。
このプロセスにいくらか時間がかかることを見込んでください。Parallel Computing Toolbox™ のライセンスがある場合、最適化を並列で実行し、最適化プロセスを高速化することを検討してください。これを行うには、名前と値の引数 "HyperparameterOptimizationOptions",struct("UseParallel",true)
を fitrauto
に渡します。
Mdl = fitrauto(carsTrain,"MPG");
Learner types to explore: ensemble, svm, tree Total iterations (MaxObjectiveEvaluations): 90 Total time (MaxTime): Inf |================================================================================================================================================| | Iter | Eval | log(1+valLoss)| Time for training | Observed min | Estimated min | Learner | Hyperparameter: Value | | | result | | & validation (sec)| validation loss | validation loss | | | |================================================================================================================================================| | 1 | Best | 3.3416 | 1.2897 | 3.3416 | 3.3416 | tree | MinLeafSize: 118 | | 2 | Accept | 4.1303 | 0.62208 | 3.3416 | 3.3416 | svm | BoxConstraint: 16.579 | | | | | | | | | KernelScale: 0.0045538 | | | | | | | | | Epsilon: 657.79 | | 3 | Best | 2.5197 | 0.18007 | 2.5197 | 2.6121 | tree | MinLeafSize: 2 | | 4 | Best | 2.3335 | 5.719 | 2.3335 | 2.3335 | ensemble | Method: Bag | | | | | | | | | NumLearningCycles: 291 | | | | | | | | | MinLeafSize: 9 | | 5 | Accept | 2.3398 | 3.7552 | 2.3335 | 2.3366 | ensemble | Method: Bag | | | | | | | | | NumLearningCycles: 206 | | | | | | | | | MinLeafSize: 13 | | 6 | Best | 2.204 | 5.1042 | 2.204 | 2.2049 | ensemble | Method: LSBoost | | | | | | | | | NumLearningCycles: 256 | | | | | | | | | MinLeafSize: 12 | | 7 | Accept | 4.1303 | 0.098853 | 2.204 | 2.2049 | svm | BoxConstraint: 0.0048178 | | | | | | | | | KernelScale: 0.011576 | | | | | | | | | Epsilon: 441.39 | | 8 | Accept | 2.4787 | 0.074041 | 2.204 | 2.2049 | tree | MinLeafSize: 9 | | 9 | Accept | 4.1303 | 0.070297 | 2.204 | 2.2049 | svm | BoxConstraint: 8.581 | | | | | | | | | KernelScale: 61.095 | | | | | | | | | Epsilon: 296.69 | | 10 | Accept | 4.1303 | 0.053978 | 2.204 | 2.2049 | svm | BoxConstraint: 140.96 | | | | | | | | | KernelScale: 0.012197 | | | | | | | | | Epsilon: 69.002 | | 11 | Accept | 2.9157 | 0.045178 | 2.204 | 2.2049 | tree | MinLeafSize: 32 | | 12 | Accept | 3.2199 | 0.050483 | 2.204 | 2.2049 | tree | MinLeafSize: 64 | | 13 | Accept | 2.4157 | 0.048328 | 2.204 | 2.2049 | tree | MinLeafSize: 4 | | 14 | Accept | 4.1303 | 0.076781 | 2.204 | 2.2049 | svm | BoxConstraint: 1.3859 | | | | | | | | | KernelScale: 71.061 | | | | | | | | | Epsilon: 181.44 | | 15 | Accept | 3.4156 | 0.037288 | 2.204 | 2.2049 | tree | MinLeafSize: 102 | | 16 | Accept | 2.5197 | 0.054567 | 2.204 | 2.2049 | tree | MinLeafSize: 2 | | 17 | Accept | 5.4306 | 31.526 | 2.204 | 2.2049 | svm | BoxConstraint: 0.0018102 | | | | | | | | | KernelScale: 0.016815 | | | | | | | | | Epsilon: 8.1687 | | 18 | Accept | 3.1121 | 4.403 | 2.204 | 2.2042 | ensemble | Method: Bag | | | | | | | | | NumLearningCycles: 288 | | | | | | | | | MinLeafSize: 106 | | 19 | Best | 2.1971 | 4.0613 | 2.1971 | 2.1972 | ensemble | Method: LSBoost | | | | | | | | | NumLearningCycles: 227 | | | | | | | | | MinLeafSize: 2 | | 20 | Best | 2.1971 | 3.985 | 2.1971 | 2.1972 | ensemble | Method: LSBoost | | | | | | | | | NumLearningCycles: 223 | | | | | | | | | MinLeafSize: 2 | |================================================================================================================================================| | Iter | Eval | log(1+valLoss)| Time for training | Observed min | Estimated min | Learner | Hyperparameter: Value | | | result | | & validation (sec)| validation loss | validation loss | | | |================================================================================================================================================| | 21 | Accept | 2.2314 | 4.723 | 2.1971 | 2.1972 | ensemble | Method: LSBoost | | | | | | | | | NumLearningCycles: 262 | | | | | | | | | MinLeafSize: 5 | | 22 | Accept | 2.5925 | 4.6352 | 2.1971 | 2.1972 | ensemble | Method: Bag | | | | | | | | | NumLearningCycles: 283 | | | | | | | | | MinLeafSize: 39 | | 23 | Accept | 2.1971 | 5.0225 | 2.1971 | 2.1972 | ensemble | Method: LSBoost | | | | | | | | | NumLearningCycles: 285 | | | | | | | | | MinLeafSize: 2 | | 24 | Accept | 2.3345 | 2.9953 | 2.1971 | 2.1972 | svm | BoxConstraint: 2.2648 | | | | | | | | | KernelScale: 0.92531 | | | | | | | | | Epsilon: 0.51865 | | 25 | Accept | 2.9882 | 3.887 | 2.1971 | 2.1971 | ensemble | Method: Bag | | | | | | | | | NumLearningCycles: 247 | | | | | | | | | MinLeafSize: 73 | | 26 | Accept | 2.3583 | 4.2468 | 2.1971 | 2.1971 | ensemble | Method: Bag | | | | | | | | | NumLearningCycles: 255 | | | | | | | | | MinLeafSize: 12 | | 27 | Accept | 2.6476 | 0.042392 | 2.1971 | 2.1971 | tree | MinLeafSize: 28 | | 28 | Accept | 2.4016 | 0.044492 | 2.1971 | 2.1971 | tree | MinLeafSize: 6 | | 29 | Accept | 3.7573 | 0.065073 | 2.1971 | 2.1971 | svm | BoxConstraint: 9.4057 | | | | | | | | | KernelScale: 100.66 | | | | | | | | | Epsilon: 0.24447 | | 30 | Accept | 2.6046 | 0.039155 | 2.1971 | 2.1971 | tree | MinLeafSize: 24 | | 31 | Accept | 2.4157 | 0.045287 | 2.1971 | 2.1971 | tree | MinLeafSize: 4 | | 32 | Accept | 4.1303 | 0.050301 | 2.1971 | 2.1971 | svm | BoxConstraint: 303.85 | | | | | | | | | KernelScale: 0.0083624 | | | | | | | | | Epsilon: 39.54 | | 33 | Accept | 4.146 | 0.056571 | 2.1971 | 2.1971 | svm | BoxConstraint: 0.16546 | | | | | | | | | KernelScale: 248.79 | | | | | | | | | Epsilon: 1.1182 | | 34 | Accept | 3.0466 | 0.038386 | 2.1971 | 2.1971 | tree | MinLeafSize: 46 | | 35 | Accept | 2.3417 | 4.1224 | 2.1971 | 2.1971 | ensemble | Method: Bag | | | | | | | | | NumLearningCycles: 246 | | | | | | | | | MinLeafSize: 12 | | 36 | Accept | 2.7264 | 4.748 | 2.1971 | 2.1972 | ensemble | Method: LSBoost | | | | | | | | | NumLearningCycles: 274 | | | | | | | | | MinLeafSize: 105 | | 37 | Accept | 2.5457 | 4.1701 | 2.1971 | 2.1972 | ensemble | Method: Bag | | | | | | | | | NumLearningCycles: 257 | | | | | | | | | MinLeafSize: 33 | | 38 | Accept | 2.6603 | 0.055123 | 2.1971 | 2.1972 | tree | MinLeafSize: 1 | | 39 | Accept | 2.36 | 5.3754 | 2.1971 | 2.1972 | svm | BoxConstraint: 56.509 | | | | | | | | | KernelScale: 1.509 | | | | | | | | | Epsilon: 0.5604 | | 40 | Accept | 4.1303 | 0.048283 | 2.1971 | 2.1972 | svm | BoxConstraint: 0.001484 | | | | | | | | | KernelScale: 0.0032176 | | | | | | | | | Epsilon: 22.445 | |================================================================================================================================================| | Iter | Eval | log(1+valLoss)| Time for training | Observed min | Estimated min | Learner | Hyperparameter: Value | | | result | | & validation (sec)| validation loss | validation loss | | | |================================================================================================================================================| | 41 | Accept | 2.5507 | 0.040831 | 2.1971 | 2.1972 | tree | MinLeafSize: 15 | | 42 | Best | 2.1945 | 5.1078 | 2.1945 | 2.1966 | ensemble | Method: LSBoost | | | | | | | | | NumLearningCycles: 289 | | | | | | | | | MinLeafSize: 6 | | 43 | Accept | 3.9873 | 0.056392 | 2.1945 | 2.1966 | svm | BoxConstraint: 31.423 | | | | | | | | | KernelScale: 0.16609 | | | | | | | | | Epsilon: 14.619 | | 44 | Accept | 4.0639 | 0.058227 | 2.1945 | 2.1966 | svm | BoxConstraint: 42.958 | | | | | | | | | KernelScale: 459.03 | | | | | | | | | Epsilon: 0.98679 | | 45 | Accept | 2.5389 | 0.055917 | 2.1945 | 2.1966 | svm | BoxConstraint: 32.844 | | | | | | | | | KernelScale: 24.244 | | | | | | | | | Epsilon: 2.8938 | | 46 | Accept | 4.1222 | 0.055003 | 2.1945 | 2.1966 | svm | BoxConstraint: 0.001348 | | | | | | | | | KernelScale: 5.1158 | | | | | | | | | Epsilon: 2.4534 | | 47 | Best | 2.1533 | 0.074854 | 2.1533 | 2.1534 | svm | BoxConstraint: 161.96 | | | | | | | | | KernelScale: 7.1682 | | | | | | | | | Epsilon: 1.6972 | | 48 | Best | 2.1044 | 0.058537 | 2.1044 | 2.1045 | svm | BoxConstraint: 10.597 | | | | | | | | | KernelScale: 4.8052 | | | | | | | | | Epsilon: 0.68924 | | 49 | Accept | 2.1323 | 0.063815 | 2.1044 | 2.1045 | svm | BoxConstraint: 12.625 | | | | | | | | | KernelScale: 3.7951 | | | | | | | | | Epsilon: 1.9243 | | 50 | Accept | 2.1143 | 0.10138 | 2.1044 | 2.1042 | svm | BoxConstraint: 2.9811 | | | | | | | | | KernelScale: 2.2304 | | | | | | | | | Epsilon: 0.11742 | | 51 | Accept | 2.1121 | 0.097271 | 2.1044 | 2.1044 | svm | BoxConstraint: 4.6122 | | | | | | | | | KernelScale: 2.5002 | | | | | | | | | Epsilon: 0.24122 | | 52 | Accept | 2.3152 | 4.2279 | 2.1044 | 2.1044 | svm | BoxConstraint: 13.002 | | | | | | | | | KernelScale: 1.2194 | | | | | | | | | Epsilon: 0.0097793 | | 53 | Accept | 2.1474 | 0.11001 | 2.1044 | 2.1041 | svm | BoxConstraint: 113.51 | | | | | | | | | KernelScale: 5.567 | | | | | | | | | Epsilon: 0.052251 | | 54 | Accept | 2.1274 | 0.064355 | 2.1044 | 2.1045 | svm | BoxConstraint: 51.97 | | | | | | | | | KernelScale: 7.9449 | | | | | | | | | Epsilon: 0.31232 | | 55 | Accept | 2.1313 | 0.10387 | 2.1044 | 2.1046 | svm | BoxConstraint: 17.469 | | | | | | | | | KernelScale: 3.3438 | | | | | | | | | Epsilon: 0.050142 | | 56 | Accept | 2.2052 | 5.3754 | 2.1044 | 2.1046 | ensemble | Method: LSBoost | | | | | | | | | NumLearningCycles: 299 | | | | | | | | | MinLeafSize: 1 | | 57 | Accept | 2.1125 | 0.090322 | 2.1044 | 2.1047 | svm | BoxConstraint: 50.684 | | | | | | | | | KernelScale: 4.764 | | | | | | | | | Epsilon: 0.45053 | | 58 | Accept | 2.3465 | 3.4461 | 2.1044 | 2.1047 | ensemble | Method: Bag | | | | | | | | | NumLearningCycles: 201 | | | | | | | | | MinLeafSize: 1 | | 59 | Accept | 2.1222 | 0.11319 | 2.1044 | 2.105 | svm | BoxConstraint: 859.14 | | | | | | | | | KernelScale: 12.367 | | | | | | | | | Epsilon: 0.2022 | | 60 | Accept | 2.1461 | 0.19386 | 2.1044 | 2.105 | svm | BoxConstraint: 968.32 | | | | | | | | | KernelScale: 8.9428 | | | | | | | | | Epsilon: 0.01767 | |================================================================================================================================================| | Iter | Eval | log(1+valLoss)| Time for training | Observed min | Estimated min | Learner | Hyperparameter: Value | | | result | | & validation (sec)| validation loss | validation loss | | | |================================================================================================================================================| | 61 | Accept | 2.1407 | 0.22769 | 2.1044 | 2.1051 | svm | BoxConstraint: 971.76 | | | | | | | | | KernelScale: 8.0121 | | | | | | | | | Epsilon: 0.27594 | | 62 | Accept | 2.132 | 0.063274 | 2.1044 | 2.1051 | svm | BoxConstraint: 7.3349 | | | | | | | | | KernelScale: 4.5654 | | | | | | | | | Epsilon: 0.010146 | | 63 | Accept | 2.1457 | 0.068571 | 2.1044 | 2.1054 | svm | BoxConstraint: 182.05 | | | | | | | | | KernelScale: 13.913 | | | | | | | | | Epsilon: 0.010813 | | 64 | Accept | 2.1195 | 0.068772 | 2.1044 | 2.1069 | svm | BoxConstraint: 7.653 | | | | | | | | | KernelScale: 4.1874 | | | | | | | | | Epsilon: 0.13638 | | 65 | Accept | 2.1127 | 0.09654 | 2.1044 | 2.1075 | svm | BoxConstraint: 1.8061 | | | | | | | | | KernelScale: 2.0447 | | | | | | | | | Epsilon: 0.010408 | | 66 | Accept | 2.1374 | 0.093402 | 2.1044 | 2.1076 | svm | BoxConstraint: 984.16 | | | | | | | | | KernelScale: 17.924 | | | | | | | | | Epsilon: 0.013101 | | 67 | Accept | 2.3467 | 3.4222 | 2.1044 | 2.1076 | ensemble | Method: Bag | | | | | | | | | NumLearningCycles: 201 | | | | | | | | | MinLeafSize: 3 | | 68 | Accept | 2.1251 | 0.084559 | 2.1044 | 2.1078 | svm | BoxConstraint: 4.8829 | | | | | | | | | KernelScale: 2.7157 | | | | | | | | | Epsilon: 0.011329 | | 69 | Accept | 4.1303 | 0.048665 | 2.1044 | 2.1045 | svm | BoxConstraint: 981.43 | | | | | | | | | KernelScale: 3.7956 | | | | | | | | | Epsilon: 524.32 | | 70 | Best | 2.0946 | 0.078617 | 2.0946 | 2.0958 | svm | BoxConstraint: 9.3796 | | | | | | | | | KernelScale: 3.6153 | | | | | | | | | Epsilon: 0.64581 | | 71 | Accept | 2.1625 | 0.059021 | 2.0946 | 2.0957 | svm | BoxConstraint: 0.14003 | | | | | | | | | KernelScale: 2.3859 | | | | | | | | | Epsilon: 0.0096989 | | 72 | Accept | 2.1254 | 0.062282 | 2.0946 | 2.0957 | svm | BoxConstraint: 1.0541 | | | | | | | | | KernelScale: 2.8873 | | | | | | | | | Epsilon: 0.016892 | | 73 | Accept | 2.2047 | 0.42757 | 2.0946 | 2.0957 | svm | BoxConstraint: 0.20258 | | | | | | | | | KernelScale: 0.89876 | | | | | | | | | Epsilon: 0.0094548 | | 74 | Accept | 4.1303 | 0.056501 | 2.0946 | 2.0957 | svm | BoxConstraint: 705.97 | | | | | | | | | KernelScale: 0.0010614 | | | | | | | | | Epsilon: 0.011029 | | 75 | Accept | 2.1076 | 0.093847 | 2.0946 | 2.0956 | svm | BoxConstraint: 0.57149 | | | | | | | | | KernelScale: 1.6966 | | | | | | | | | Epsilon: 0.028341 | | 76 | Accept | 2.1051 | 0.074496 | 2.0946 | 2.0972 | svm | BoxConstraint: 17.713 | | | | | | | | | KernelScale: 4.1474 | | | | | | | | | Epsilon: 0.46742 | | 77 | Accept | 2.0999 | 0.072478 | 2.0946 | 2.0977 | svm | BoxConstraint: 16.834 | | | | | | | | | KernelScale: 4.194 | | | | | | | | | Epsilon: 0.7058 | | 78 | Accept | 2.117 | 0.073675 | 2.0946 | 2.0976 | svm | BoxConstraint: 0.80221 | | | | | | | | | KernelScale: 2.1521 | | | | | | | | | Epsilon: 0.009312 | | 79 | Accept | 2.1063 | 0.071597 | 2.0946 | 2.0998 | svm | BoxConstraint: 11.766 | | | | | | | | | KernelScale: 4.0434 | | | | | | | | | Epsilon: 0.77028 | | 80 | Accept | 2.131 | 0.11884 | 2.0946 | 2.0997 | svm | BoxConstraint: 639.99 | | | | | | | | | KernelScale: 11.976 | | | | | | | | | Epsilon: 0.045587 | |================================================================================================================================================| | Iter | Eval | log(1+valLoss)| Time for training | Observed min | Estimated min | Learner | Hyperparameter: Value | | | result | | & validation (sec)| validation loss | validation loss | | | |================================================================================================================================================| | 81 | Accept | 2.1353 | 0.12266 | 2.0946 | 2.0998 | svm | BoxConstraint: 833.03 | | | | | | | | | KernelScale: 12.286 | | | | | | | | | Epsilon: 0.009267 | | 82 | Accept | 2.1002 | 0.075115 | 2.0946 | 2.0995 | svm | BoxConstraint: 28.193 | | | | | | | | | KernelScale: 5.1564 | | | | | | | | | Epsilon: 0.54563 | | 83 | Accept | 2.1087 | 0.083842 | 2.0946 | 2.0993 | svm | BoxConstraint: 22.81 | | | | | | | | | KernelScale: 4.8839 | | | | | | | | | Epsilon: 0.81407 | | 84 | Accept | 2.1047 | 0.08404 | 2.0946 | 2.0998 | svm | BoxConstraint: 11.5 | | | | | | | | | KernelScale: 3.7878 | | | | | | | | | Epsilon: 0.38006 | | 85 | Accept | 2.0999 | 0.076743 | 2.0946 | 2.0996 | svm | BoxConstraint: 7.9463 | | | | | | | | | KernelScale: 3.3494 | | | | | | | | | Epsilon: 0.56823 | | 86 | Accept | 2.121 | 0.12711 | 2.0946 | 2.0996 | svm | BoxConstraint: 1.4247 | | | | | | | | | KernelScale: 1.7405 | | | | | | | | | Epsilon: 0.030609 | | 87 | Accept | 4.1303 | 0.056272 | 2.0946 | 2.0995 | svm | BoxConstraint: 0.0020273 | | | | | | | | | KernelScale: 0.001035 | | | | | | | | | Epsilon: 832.86 | | 88 | Accept | 2.114 | 0.070002 | 2.0946 | 2.1014 | svm | BoxConstraint: 10.323 | | | | | | | | | KernelScale: 3.9111 | | | | | | | | | Epsilon: 0.90254 | | 89 | Accept | 2.1042 | 0.073487 | 2.0946 | 2.1015 | svm | BoxConstraint: 6.5035 | | | | | | | | | KernelScale: 3.1694 | | | | | | | | | Epsilon: 0.63488 | | 90 | Accept | 2.102 | 0.072913 | 2.0946 | 2.1015 | svm | BoxConstraint: 23.367 | | | | | | | | | KernelScale: 4.8485 | | | | | | | | | Epsilon: 0.51211 |
__________________________________________________________ Optimization completed. Total iterations: 90 Total elapsed time: 172.6365 seconds Total time for training and validation: 131.3656 seconds Best observed learner is an svm model with: Learner: svm BoxConstraint: 9.3796 KernelScale: 3.6153 Epsilon: 0.64581 Observed log(1 + valLoss): 2.0946 Time for training and validation: 0.078617 seconds Best estimated learner (returned model) is an svm model with: Learner: svm BoxConstraint: 9.3796 KernelScale: 3.6153 Epsilon: 0.64581 Estimated log(1 + valLoss): 2.1015 Estimated time for training and validation: 0.076063 seconds Documentation for fitrauto display
fitrauto
によって返される最終的なモデルが、最適な推定学習器となります。モデルを返す前に、関数は学習データ全体 (carsTrain
)、リストされている Learner
(またはモデル) のタイプ、および表示されたハイパーパラメーター値を使用して、モデルの再学習を行います。
検定セットのパフォーマンスの評価
検定セットに対するモデルのパフォーマンスを評価します。testError
は、検定セットの平均二乗誤差 (MSE) に基づきます。MSE の値が小さいほど、パフォーマンスが優れていることを示します。
testMSE = loss(Mdl,carsTest,"MPG");
testError = log(1 + testMSE)
testError = 2.1805
行列データを使用した回帰モデルの自動選択
fitrauto
を使用し、個別の変数に保存されている予測子データと応答データに基づいて、最適化されたハイパーパラメーターをもつ回帰モデルを自動的に選択します。
データの読み込み
carbig
データセットを読み込みます。このデータセットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。
load carbig
予測子変数 Acceleration
、Cylinders
などが含まれている行列 X
を作成します。応答変数 MPG
を変数 Y
に保存します。
X = [Acceleration Cylinders Displacement Weight]; Y = MPG;
X
および Y
からいずれかの配列に欠損値がある行を削除します。
R = rmmissing([X Y]); X = R(:,1:end-1); Y = R(:,end);
カテゴリカルな予測子を示す変数を作成します。Cylinders
は X
内で唯一のカテゴリカル変数です。
categoricalVars = [false true false false];
データの分割
データを学習セットと検定セットに分割します。モデル選択とハイパーパラメーター調整のプロセスに観測値の約 80% を使用し、fitrauto
によって返された最終モデルのパフォーマンスのテストに観測値の 20% を使用します。cvpartition
を使用してデータを分割します。
rng("default") % For reproducibility of the partition c = cvpartition(length(Y),"Holdout",0.20); trainingIdx = training(c); % Indices for the training set XTrain = X(trainingIdx,:); YTrain = Y(trainingIdx); testIdx = test(c); % Indices for the test set XTest = X(testIdx,:); YTest = Y(testIdx);
fitrauto
の実行
学習データを fitrauto
に渡します。既定では、fitrauto
は、試行する適切なモデル (学習器) のタイプを決定し、ベイズ最適化を使用してこれらのモデルの適切なハイパーパラメーター値を求め、パフォーマンスが最大となることが期待される学習済みモデル Mdl
を返します。カテゴリカル予測子を指定し、最適化を並列実行します (Parallel Computing Toolbox™ が必要)。ベイズ最適化の詳細が格納された 2 番目の出力 OptimizationResults
を返します。
このプロセスにいくらか時間がかかることを見込んでください。既定の設定では、fitrauto
は、最適化のプロット、および最適化の結果の反復表示を提供します。これらの結果を解釈する方法の詳細については、Verbose の表示を参照してください。
options = struct("UseParallel",true); [Mdl,OptimizationResults] = fitrauto(XTrain,YTrain, ... "CategoricalPredictors",categoricalVars, ... "HyperparameterOptimizationOptions",options);
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 8). Copying objective function to workers... Done copying objective function to workers. Learner types to explore: ensemble, svm, tree Total iterations (MaxObjectiveEvaluations): 90 Total time (MaxTime): Inf |==========================================================================================================================================================| | Iter | Active | Eval | log(1+valLoss)| Time for training | Observed min | Estimated min | Learner | Hyperparameter: Value | | | workers | result | | & validation (sec)| validation loss | validation loss | | | |==========================================================================================================================================================| | 1 | 5 | Best | 3.1329 | 1.9087 | 3.1329 | 3.1399 | tree | MinLeafSize: 5 | | 2 | 5 | Accept | 3.1329 | 1.9094 | 3.1329 | 3.1399 | tree | MinLeafSize: 5 | | 3 | 5 | Accept | 4.1701 | 1.9944 | 3.1329 | 3.1399 | svm | BoxConstraint: 0.033502 | | | | | | | | | | KernelScale: 153.38 | | | | | | | | | | Epsilon: 0.095234 | | 4 | 5 | Accept | 3.1539 | 1.9051 | 3.1329 | 3.1399 | tree | MinLeafSize: 9 | | 5 | 7 | Best | 3.0917 | 0.20244 | 3.0917 | 3.0919 | tree | MinLeafSize: 14 | | 6 | 7 | Accept | 4.1645 | 0.20868 | 3.0917 | 3.0919 | tree | MinLeafSize: 158 | | 7 | 8 | Accept | 3.2871 | 0.14105 | 3.0917 | 3.0919 | tree | MinLeafSize: 2 | | 8 | 8 | Accept | 3.2871 | 0.12338 | 3.0917 | 3.0919 | tree | MinLeafSize: 2 | | 9 | 8 | Accept | 4.1645 | 1.3189 | 3.0917 | 3.0919 | svm | BoxConstraint: 0.003952 | | | | | | | | | | KernelScale: 0.0015586 | | | | | | | | | | Epsilon: 31.184 | | 10 | 8 | Accept | 3.2871 | 0.19579 | 3.0917 | 3.0919 | tree | MinLeafSize: 2 | | 11 | 8 | Accept | 4.1646 | 8.3996 | 3.0917 | 3.0919 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 257 | | | | | | | | | | MinLeafSize: 154 | | 12 | 8 | Best | 2.9469 | 8.7243 | 2.9469 | 2.968 | ensemble | Method: LSBoost | | | | | | | | | | NumLearningCycles: 287 | | | | | | | | | | MinLeafSize: 1 | | 13 | 8 | Best | 2.9388 | 9.9614 | 2.9388 | 2.942 | ensemble | Method: LSBoost | | | | | | | | | | NumLearningCycles: 288 | | | | | | | | | | MinLeafSize: 3 | | 14 | 7 | Accept | 4.1645 | 1.9698 | 2.9388 | 2.9411 | svm | BoxConstraint: 159.44 | | | | | | | | | | KernelScale: 34.732 | | | | | | | | | | Epsilon: 412.2 | | 15 | 7 | Accept | 2.9581 | 8.4974 | 2.9388 | 2.9411 | ensemble | Method: LSBoost | | | | | | | | | | NumLearningCycles: 287 | | | | | | | | | | MinLeafSize: 62 | | 16 | 7 | Accept | 3.1637 | 0.98081 | 2.9388 | 2.9411 | tree | MinLeafSize: 6 | | 17 | 7 | Accept | 3.1539 | 0.58494 | 2.9388 | 2.9411 | tree | MinLeafSize: 9 | | 18 | 5 | Accept | 2.9287 | 9.2877 | 2.9287 | 2.9411 | ensemble | Method: LSBoost | | | | | | | | | | NumLearningCycles: 283 | | | | | | | | | | MinLeafSize: 16 | | 19 | 5 | Best | 2.9287 | 8.4297 | 2.9287 | 2.9411 | ensemble | Method: LSBoost | | | | | | | | | | NumLearningCycles: 262 | | | | | | | | | | MinLeafSize: 5 | | 20 | 5 | Accept | 3.9011 | 0.19628 | 2.9287 | 2.9411 | svm | BoxConstraint: 9.4057 | | | | | | | | | | KernelScale: 100.66 | | | | | | | | | | Epsilon: 0.2386 | |==========================================================================================================================================================| | Iter | Active | Eval | log(1+valLoss)| Time for training | Observed min | Estimated min | Learner | Hyperparameter: Value | | | workers | result | | & validation (sec)| validation loss | validation loss | | | |==========================================================================================================================================================| | 21 | 8 | Accept | 4.1862 | 0.23729 | 2.9287 | 2.9411 | svm | BoxConstraint: 7.487 | | | | | | | | | | KernelScale: 81.753 | | | | | | | | | | Epsilon: 12.782 | | 22 | 5 | Accept | 3.1593 | 0.12638 | 2.9287 | 2.9411 | tree | MinLeafSize: 8 | | 23 | 5 | Accept | 3.1163 | 0.2154 | 2.9287 | 2.9411 | tree | MinLeafSize: 42 | | 24 | 5 | Accept | 4.1645 | 0.13652 | 2.9287 | 2.9411 | svm | BoxConstraint: 760.95 | | | | | | | | | | KernelScale: 1.8573 | | | | | | | | | | Epsilon: 83.037 | | 25 | 5 | Accept | 3.0374 | 0.14 | 2.9287 | 2.9411 | tree | MinLeafSize: 16 | | 26 | 8 | Accept | 3.1014 | 0.066518 | 2.9287 | 2.9411 | tree | MinLeafSize: 13 | | 27 | 7 | Accept | 2.9493 | 0.57729 | 2.9287 | 2.9411 | svm | BoxConstraint: 574.43 | | | | | | | | | | KernelScale: 7.3229 | | | | | | | | | | Epsilon: 3.991 | | 28 | 7 | Accept | 3.3681 | 0.19666 | 2.9287 | 2.9411 | tree | MinLeafSize: 69 | | 29 | 5 | Accept | 3.1815 | 7.8877 | 2.9287 | 2.9411 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 247 | | | | | | | | | | MinLeafSize: 74 | | 30 | 5 | Accept | 4.1645 | 1.2207 | 2.9287 | 2.9411 | svm | BoxConstraint: 5.2634 | | | | | | | | | | KernelScale: 0.058706 | | | | | | | | | | Epsilon: 105.48 | | 31 | 5 | Accept | 3.6021 | 0.091822 | 2.9287 | 2.9411 | tree | MinLeafSize: 1 | | 32 | 8 | Accept | 3.1539 | 0.23324 | 2.9287 | 2.9411 | tree | MinLeafSize: 9 | | 33 | 6 | Accept | 2.9351 | 12.312 | 2.9197 | 2.9198 | ensemble | Method: LSBoost | | | | | | | | | | NumLearningCycles: 282 | | | | | | | | | | MinLeafSize: 2 | | 34 | 6 | Accept | 4.2521 | 0.1172 | 2.9197 | 2.9198 | svm | BoxConstraint: 449.81 | | | | | | | | | | KernelScale: 19.912 | | | | | | | | | | Epsilon: 17.095 | | 35 | 6 | Best | 2.9197 | 0.085188 | 2.9197 | 2.9198 | svm | BoxConstraint: 1.0008 | | | | | | | | | | KernelScale: 2.1267 | | | | | | | | | | Epsilon: 0.034964 | | 36 | 7 | Accept | 4.1091 | 0.081418 | 2.9197 | 2.9411 | svm | BoxConstraint: 42.958 | | | | | | | | | | KernelScale: 459.03 | | | | | | | | | | Epsilon: 0.96311 | | 37 | 7 | Accept | 4.1091 | 0.064642 | 2.9197 | 2.9198 | svm | BoxConstraint: 42.958 | | | | | | | | | | KernelScale: 459.03 | | | | | | | | | | Epsilon: 0.96311 | | 38 | 7 | Accept | 2.9423 | 4.1841 | 2.9197 | 2.9198 | ensemble | Method: LSBoost | | | | | | | | | | NumLearningCycles: 202 | | | | | | | | | | MinLeafSize: 50 | | 39 | 7 | Accept | 3.1132 | 0.066762 | 2.9197 | 2.9198 | tree | MinLeafSize: 38 | | 40 | 7 | Accept | 9.5074 | 20.851 | 2.9197 | 2.9198 | svm | BoxConstraint: 336.91 | | | | | | | | | | KernelScale: 0.0018275 | | | | | | | | | | Epsilon: 0.10919 | |==========================================================================================================================================================| | Iter | Active | Eval | log(1+valLoss)| Time for training | Observed min | Estimated min | Learner | Hyperparameter: Value | | | workers | result | | & validation (sec)| validation loss | validation loss | | | |==========================================================================================================================================================| | 41 | 7 | Accept | 4.1645 | 0.31377 | 2.9197 | 2.9198 | svm | BoxConstraint: 582.79 | | | | | | | | | | KernelScale: 7.6869 | | | | | | | | | | Epsilon: 74.905 | | 42 | 7 | Accept | 4.1645 | 4.6708 | 2.9197 | 2.9198 | ensemble | Method: LSBoost | | | | | | | | | | NumLearningCycles: 233 | | | | | | | | | | MinLeafSize: 134 | | 43 | 7 | Accept | 2.935 | 5.2719 | 2.9197 | 2.9198 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 280 | | | | | | | | | | MinLeafSize: 45 | | 44 | 7 | Accept | 3.1177 | 0.88837 | 2.9197 | 2.9198 | svm | BoxConstraint: 127.48 | | | | | | | | | | KernelScale: 105 | | | | | | | | | | Epsilon: 0.58941 | | 45 | 8 | Accept | 3.1329 | 0.10668 | 2.9197 | 2.9198 | tree | MinLeafSize: 5 | | 46 | 8 | Best | 2.8874 | 7.2754 | 2.8874 | 2.8877 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 271 | | | | | | | | | | MinLeafSize: 1 | | 47 | 8 | Accept | 3.9204 | 0.2276 | 2.8874 | 2.8877 | svm | BoxConstraint: 0.014973 | | | | | | | | | | KernelScale: 4.398 | | | | | | | | | | Epsilon: 0.055595 | | 48 | 8 | Accept | 2.8964 | 5.3009 | 2.8874 | 2.8877 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 233 | | | | | | | | | | MinLeafSize: 20 | | 49 | 8 | Accept | 2.8941 | 10.022 | 2.8874 | 2.8908 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 300 | | | | | | | | | | MinLeafSize: 1 | | 50 | 8 | Accept | 2.9227 | 8.3714 | 2.8874 | 2.8908 | ensemble | Method: LSBoost | | | | | | | | | | NumLearningCycles: 360 | | | | | | | | | | MinLeafSize: 9 | | 51 | 8 | Accept | 3.0945 | 0.10022 | 2.8874 | 2.8908 | tree | MinLeafSize: 11 | | 52 | 8 | Accept | 2.9326 | 7.3667 | 2.8874 | 2.8908 | ensemble | Method: LSBoost | | | | | | | | | | NumLearningCycles: 316 | | | | | | | | | | MinLeafSize: 51 | | 53 | 8 | Accept | 2.9223 | 6.3741 | 2.8874 | 2.8908 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 234 | | | | | | | | | | MinLeafSize: 35 | | 54 | 6 | Best | 2.8833 | 12.385 | 2.8833 | 2.8875 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 300 | | | | | | | | | | MinLeafSize: 1 | | 55 | 6 | Accept | 4.1645 | 6.146 | 2.8833 | 2.8875 | svm | BoxConstraint: 1.246 | | | | | | | | | | KernelScale: 0.048145 | | | | | | | | | | Epsilon: 337.42 | | 56 | 6 | Accept | 3.5019 | 4.3292 | 2.8833 | 2.8875 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 219 | | | | | | | | | | MinLeafSize: 126 | | 57 | 6 | Best | 2.8758 | 4.1728 | 2.8758 | 2.8875 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 201 | | | | | | | | | | MinLeafSize: 4 | | 58 | 6 | Accept | 3.978 | 0.12062 | 2.8758 | 2.8875 | svm | BoxConstraint: 0.015506 | | | | | | | | | | KernelScale: 4.6409 | | | | | | | | | | Epsilon: 2.9763 | | 59 | 7 | Accept | 3.4183 | 0.049204 | 2.8758 | 2.8875 | tree | MinLeafSize: 93 | | 60 | 7 | Accept | 2.9269 | 4.8518 | 2.8758 | 2.8759 | ensemble | Method: LSBoost | | | | | | | | | | NumLearningCycles: 236 | | | | | | | | | | MinLeafSize: 19 | |==========================================================================================================================================================| | Iter | Active | Eval | log(1+valLoss)| Time for training | Observed min | Estimated min | Learner | Hyperparameter: Value | | | workers | result | | & validation (sec)| validation loss | validation loss | | | |==========================================================================================================================================================| | 61 | 7 | Accept | 3.0652 | 0.088667 | 2.8758 | 2.8759 | svm | BoxConstraint: 862.71 | | | | | | | | | | KernelScale: 216.51 | | | | | | | | | | Epsilon: 1.9551 | | 62 | 7 | Accept | 2.8816 | 4.0609 | 2.8758 | 2.8767 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 205 | | | | | | | | | | MinLeafSize: 4 | | 63 | 7 | Accept | 4.1645 | 0.1847 | 2.8758 | 2.8767 | svm | BoxConstraint: 654.1 | | | | | | | | | | KernelScale: 0.0009277 | | | | | | | | | | Epsilon: 0.67992 | | 64 | 8 | Accept | 4.1645 | 0.04689 | 2.8758 | 2.8767 | svm | BoxConstraint: 0.0022454 | | | | | | | | | | KernelScale: 1.2218 | | | | | | | | | | Epsilon: 1223.3 | | 65 | 8 | Accept | 2.8789 | 5.3 | 2.8758 | 2.8788 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 279 | | | | | | | | | | MinLeafSize: 4 | | 66 | 8 | Accept | 3.1637 | 0.099659 | 2.8758 | 2.8788 | tree | MinLeafSize: 6 | | 67 | 8 | Accept | 2.8772 | 5.6605 | 2.8758 | 2.8784 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 280 | | | | | | | | | | MinLeafSize: 4 | | 68 | 8 | Accept | 3.2871 | 0.074658 | 2.8758 | 2.8784 | tree | MinLeafSize: 2 | | 69 | 8 | Best | 2.8743 | 6.7691 | 2.8743 | 2.8744 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 296 | | | | | | | | | | MinLeafSize: 7 | | 70 | 8 | Accept | 4.8948 | 28.692 | 2.8743 | 2.8744 | svm | BoxConstraint: 0.093799 | | | | | | | | | | KernelScale: 0.0053728 | | | | | | | | | | Epsilon: 17.621 | | 71 | 7 | Accept | 2.8767 | 6.4563 | 2.8743 | 2.8743 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 298 | | | | | | | | | | MinLeafSize: 9 | | 72 | 7 | Accept | 2.88 | 5.7962 | 2.8743 | 2.8743 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 299 | | | | | | | | | | MinLeafSize: 9 | | 73 | 7 | Accept | 2.8843 | 4.9403 | 2.8743 | 2.8743 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 207 | | | | | | | | | | MinLeafSize: 2 | | 74 | 7 | Accept | 4.1645 | 0.087433 | 2.8743 | 2.8743 | svm | BoxConstraint: 10.694 | | | | | | | | | | KernelScale: 42.019 | | | | | | | | | | Epsilon: 58.68 | | 75 | 8 | Accept | 3.1608 | 0.045498 | 2.8743 | 2.8743 | tree | MinLeafSize: 3 | | 76 | 8 | Accept | 2.8845 | 5.7044 | 2.8743 | 2.8743 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 298 | | | | | | | | | | MinLeafSize: 2 | | 77 | 8 | Accept | 2.9155 | 5.6911 | 2.8743 | 2.8743 | ensemble | Method: LSBoost | | | | | | | | | | NumLearningCycles: 268 | | | | | | | | | | MinLeafSize: 27 | | 78 | 8 | Accept | 4.1132 | 0.10111 | 2.8743 | 2.8743 | svm | BoxConstraint: 0.0012611 | | | | | | | | | | KernelScale: 2.8609 | | | | | | | | | | Epsilon: 0.037899 | | 79 | 8 | Accept | 3.2869 | 0.080313 | 2.8743 | 2.8743 | tree | MinLeafSize: 66 | | 80 | 8 | Accept | 3.4233 | 6.4584 | 2.8743 | 2.8745 | ensemble | Method: LSBoost | | | | | | | | | | NumLearningCycles: 301 | | | | | | | | | | MinLeafSize: 119 | |==========================================================================================================================================================| | Iter | Active | Eval | log(1+valLoss)| Time for training | Observed min | Estimated min | Learner | Hyperparameter: Value | | | workers | result | | & validation (sec)| validation loss | validation loss | | | |==========================================================================================================================================================| | 81 | 6 | Accept | 3.2102 | 6.5686 | 2.8743 | 2.8744 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 360 | | | | | | | | | | MinLeafSize: 102 | | 82 | 6 | Accept | 2.8842 | 5.6027 | 2.8743 | 2.8744 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 274 | | | | | | | | | | MinLeafSize: 14 | | 83 | 6 | Accept | 2.8763 | 4.6428 | 2.8743 | 2.8744 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 205 | | | | | | | | | | MinLeafSize: 14 | | 84 | 7 | Accept | 2.8807 | 4.3081 | 2.8743 | 2.8744 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 202 | | | | | | | | | | MinLeafSize: 14 | | 85 | 8 | Accept | 3.0046 | 0.078152 | 2.8743 | 2.8744 | tree | MinLeafSize: 27 | | 86 | 8 | Accept | 3.1256 | 6.3616 | 2.8743 | 2.8744 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 314 | | | | | | | | | | MinLeafSize: 70 | | 87 | 8 | Best | 2.8718 | 5.9613 | 2.8718 | 2.8719 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 300 | | | | | | | | | | MinLeafSize: 5 | | 88 | 8 | Accept | 3.0843 | 0.048367 | 2.8718 | 2.8719 | tree | MinLeafSize: 47 | | 89 | 8 | Accept | 2.8808 | 5.6249 | 2.8718 | 2.8743 | ensemble | Method: Bag | | | | | | | | | | NumLearningCycles: 298 | | | | | | | | | | MinLeafSize: 5 | | 90 | 7 | Accept | 2.9088 | 7.3928 | 2.8718 | 2.8743 | ensemble | Method: LSBoost | | | | | | | | | | NumLearningCycles: 367 | | | | | | | | | | MinLeafSize: 7 | | 91 | 7 | Accept | 3.0105 | 0.039942 | 2.8718 | 2.8743 | tree | MinLeafSize: 26 |
__________________________________________________________ Optimization completed. Total iterations: 91 Total elapsed time: 65.6875 seconds Total time for training and validation: 337.1441 seconds Best observed learner is an ensemble model with: Learner: ensemble Method: Bag NumLearningCycles: 300 MinLeafSize: 5 Observed log(1 + valLoss): 2.8718 Time for training and validation: 5.9613 seconds Best estimated learner (returned model) is an ensemble model with: Learner: ensemble Method: Bag NumLearningCycles: 296 MinLeafSize: 7 Estimated log(1 + valLoss): 2.8743 Estimated time for training and validation: 6.2667 seconds Documentation for fitrauto display
fitrauto
によって返される最終的なモデルが、最適な推定学習器となります。モデルを返す前に、関数は学習データ全体 (XTrain
と YTrain
)、リストされている Learner
(またはモデル) のタイプ、および表示されたハイパーパラメーター値を使用して、モデルの再学習を行います。
検定セットのパフォーマンスの評価
検定セットに対するモデルのパフォーマンスを評価します。testError
は、検定セットの平均二乗誤差 (MSE) に基づきます。MSE の値が小さいほど、パフォーマンスが優れていることを示します。
testMSE = loss(Mdl,XTest,YTest); testError = log(1 + testMSE)
testError = 2.6519
最適化された回帰モデルと単純な線形回帰モデルの比較
fitrauto
を使用し、table に保存されている予測子データと応答データに基づいて、最適化されたハイパーパラメーターをもつ回帰モデルを自動的に選択します。得られた回帰モデルのパフォーマンスと、fitlm
で作成された単純な線形回帰モデルのパフォーマンスを比較します。
データの読み込みと分割
carbig
データセットを読み込みます。このデータセットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。変数 Cylinders
を categorical
変数に変換します。Acceleration
、Cylinders
、Displacement
などの予測子変数と応答変数 MPG
が格納された table を作成します。
load carbig Cylinders = categorical(Cylinders); cars = table(Acceleration,Cylinders,Displacement, ... Horsepower,Model_Year,Origin,Weight,MPG);
cars
から table に欠損値がある行を削除します。
cars = rmmissing(cars);
米国製かどうかに基づいて、自動車を分類します。
cars.Origin = categorical(cellstr(cars.Origin)); cars.Origin = mergecats(cars.Origin,["France","Japan",... "Germany","Sweden","Italy","England"],"NotUSA");
データを学習セットと検定セットに分割します。観測値の約 80% を学習に、観測値の約 20% を検定に使用します。cvpartition
を使用してデータを分割します。
rng("default") % For reproducibility of the data partition c = cvpartition(height(cars),"Holdout",0.2); trainingIdx = training(c); % Training set indices carsTrain = cars(trainingIdx,:); testIdx = test(c); % Test set indices carsTest = cars(testIdx,:);
fitrauto
の実行
学習データを fitrauto
に渡します。既定では、fitrauto
は、試行する適切なモデルのタイプを決定し、ベイズ最適化を使用して適切なハイパーパラメーター値を求め、パフォーマンスが最大となることが期待される学習済みモデル autoMdl
を返します。最適化可能なすべてのハイパーパラメーターを最適化し、最適化を並列実行するよう指定します (Parallel Computing Toolbox™ が必要)。
このプロセスにいくらか時間がかかることを見込んでください。既定の設定では、fitrauto
は、最適化のプロット、および最適化の結果の反復表示を提供します。これらの結果を解釈する方法の詳細については、Verbose の表示を参照してください。
options = struct("UseParallel",true); autoMdl = fitrauto(carsTrain,"MPG","OptimizeHyperparameters","all", ... "HyperparameterOptimizationOptions",options);
Copying objective function to workers...
Warning: Files that have already been attached are being ignored. To see which files are attached see the 'AttachedFiles' property of the parallel pool.
Done copying objective function to workers. Learner types to explore: ensemble, svm, tree Total iterations (MaxObjectiveEvaluations): 90 Total time (MaxTime): Inf |==========================================================================================================================================================| | Iter | Active | Eval | log(1+valLoss)| Time for training | Observed min | Estimated min | Learner | Hyperparameter: Value | | | workers | result | | & validation (sec)| validation loss | validation loss | | | |==========================================================================================================================================================| | 1 | 6 | Best | 3.1155 | 0.593 | 3.1155 | 3.1155 | tree | MinLeafSize: 5 | | | | | | | | | | MaxNumSplits: 2 | | | | | | | | | | NumVariablesToSample: 3 | | 2 | 6 | Accept | 4.1303 | 0.57793 | 3.1155 | 3.1155 | svm | BoxConstraint: 0.73976 | | | | | | | | | | KernelScale: 2.7037 | | | | | | | | | | Epsilon: 38.421 | | 3 | 6 | Accept | 4.1303 | 0.65317 | 3.1155 | 3.1155 | svm | BoxConstraint: 0.0010671 | | | | | | | | | | KernelScale: 19.242 | | | | | | | | | | Epsilon: 44.847 | | 4 | 6 | Accept | 4.1338 | 0.68024 | 3.1155 | 3.1155 | svm | BoxConstraint: 0.095204 | | | | | | | | | | KernelScale: 63.457 | | | | | | | | | | Epsilon: 0.055423 | | 5 | 6 | Accept | 4.1303 | 0.23392 | 3.1155 | 3.1155 | svm | BoxConstraint: 0.01028 | | | | | | | | | | KernelScale: 0.0032203 | | | | | | | | | | Epsilon: 36.299 | | 6 | 6 | Best | 2.5852 | 0.17018 | 2.5852 | 2.7155 | tree | MinLeafSize: 2 | | | | | | | | | | MaxNumSplits: 120 | | | | | | | | | | NumVariablesToSample: 7 | | 7 | 8 | Accept | 4.5891 | 4.8163 | 2.5852 | 2.7155 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.0051188 | | | | | | | | | | MinLeafSize: 83 | | | | | | | | | | NumVariablesToSample: NaN | | 8 | 8 | Accept | 4.7998 | 6.0958 | 2.5852 | 2.7155 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.0042702 | | | | | | | | | | MinLeafSize: 31 | | | | | | | | | | NumVariablesToSample: NaN | | 9 | 8 | Accept | 2.6407 | 5.1761 | 2.5852 | 2.6533 | ensemble | Method: Bag | | | | | | | | | | LearnRate: NaN | | | | | | | | | | MinLeafSize: 45 | | | | | | | | | | NumVariablesToSample: 6 | | 10 | 8 | Accept | 5.749 | 5.7541 | 2.5852 | 2.6407 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.0017397 | | | | | | | | | | MinLeafSize: 22 | | | | | | | | | | NumVariablesToSample: NaN | | 11 | 8 | Accept | 5.749 | 5.8128 | 2.5852 | 2.6408 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.0017397 | | | | | | | | | | MinLeafSize: 22 | | | | | | | | | | NumVariablesToSample: NaN | | 12 | 8 | Accept | 5.749 | 6.3666 | 2.5852 | 2.6408 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.0017397 | | | | | | | | | | MinLeafSize: 22 | | | | | | | | | | NumVariablesToSample: NaN | | 13 | 7 | Accept | 2.8653 | 3.1249 | 2.5852 | 2.6408 | tree | MinLeafSize: 5 | | | | | | | | | | MaxNumSplits: 61 | | | | | | | | | | NumVariablesToSample: 2 | | 14 | 7 | Accept | 4.1303 | 0.21536 | 2.5852 | 2.6408 | svm | BoxConstraint: 27.717 | | | | | | | | | | KernelScale: 21.172 | | | | | | | | | | Epsilon: 390.93 | | 15 | 5 | Accept | 4.6825 | 10.638 | 2.3273 | 2.6408 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.0045559 | | | | | | | | | | MinLeafSize: 1 | | | | | | | | | | NumVariablesToSample: NaN | | 16 | 5 | Best | 2.3273 | 4.6997 | 2.3273 | 2.6408 | ensemble | Method: Bag | | | | | | | | | | LearnRate: NaN | | | | | | | | | | MinLeafSize: 1 | | | | | | | | | | NumVariablesToSample: 3 | | 17 | 5 | Accept | 2.8316 | 0.35817 | 2.3273 | 2.6408 | svm | BoxConstraint: 0.038615 | | | | | | | | | | KernelScale: 0.26266 | | | | | | | | | | Epsilon: 5.8807 | | 18 | 8 | Accept | 3.1542 | 0.091401 | 2.3273 | 2.6408 | tree | MinLeafSize: 2 | | | | | | | | | | MaxNumSplits: 2 | | | | | | | | | | NumVariablesToSample: 5 | | 19 | 8 | Accept | 2.6177 | 0.097231 | 2.3273 | 2.6179 | svm | BoxConstraint: 38.6 | | | | | | | | | | KernelScale: 50.168 | | | | | | | | | | Epsilon: 2.0294 | | 20 | 7 | Accept | 4.1551 | 4.3963 | 2.3273 | 2.5864 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.014547 | | | | | | | | | | MinLeafSize: 145 | | | | | | | | | | NumVariablesToSample: NaN | |==========================================================================================================================================================| | Iter | Active | Eval | log(1+valLoss)| Time for training | Observed min | Estimated min | Learner | Hyperparameter: Value | | | workers | result | | & validation (sec)| validation loss | validation loss | | | |==========================================================================================================================================================| | 21 | 7 | Accept | 2.6846 | 0.20978 | 2.3273 | 2.5864 | tree | MinLeafSize: 1 | | | | | | | | | | MaxNumSplits: 248 | | | | | | | | | | NumVariablesToSample: 7 | | 22 | 7 | Accept | 4.1303 | 0.086412 | 2.3273 | 2.5864 | svm | BoxConstraint: 117.04 | | | | | | | | | | KernelScale: 629.41 | | | | | | | | | | Epsilon: 729.47 | | 23 | 7 | Accept | 2.8059 | 0.051613 | 2.3273 | 2.586 | tree | MinLeafSize: 2 | | | | | | | | | | MaxNumSplits: 4 | | | | | | | | | | NumVariablesToSample: 4 | | 24 | 8 | Accept | 2.496 | 4.9911 | 2.3273 | 2.3286 | ensemble | Method: Bag | | | | | | | | | | LearnRate: NaN | | | | | | | | | | MinLeafSize: 29 | | | | | | | | | | NumVariablesToSample: 3 | | 25 | 8 | Best | 2.3255 | 5.025 | 2.3255 | 2.3426 | ensemble | Method: Bag | | | | | | | | | | LearnRate: NaN | | | | | | | | | | MinLeafSize: 11 | | | | | | | | | | NumVariablesToSample: 3 | | 26 | 8 | Accept | 2.504 | 0.1041 | 2.3255 | 2.3426 | tree | MinLeafSize: 9 | | | | | | | | | | MaxNumSplits: 157 | | | | | | | | | | NumVariablesToSample: 6 | | 27 | 6 | Accept | 2.3265 | 5.0488 | 2.3255 | 2.3426 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.11482 | | | | | | | | | | MinLeafSize: 54 | | | | | | | | | | NumVariablesToSample: NaN | | 28 | 6 | Accept | 2.6931 | 0.12749 | 2.3255 | 2.3426 | svm | BoxConstraint: 8.3226 | | | | | | | | | | KernelScale: 22.717 | | | | | | | | | | Epsilon: 3.2417 | | 29 | 6 | Accept | 4.1303 | 0.05622 | 2.3255 | 2.3426 | svm | BoxConstraint: 0.0011506 | | | | | | | | | | KernelScale: 352.85 | | | | | | | | | | Epsilon: 163.49 | | 30 | 7 | Accept | 2.5184 | 5.2768 | 2.3255 | 2.3299 | ensemble | Method: Bag | | | | | | | | | | LearnRate: NaN | | | | | | | | | | MinLeafSize: 11 | | | | | | | | | | NumVariablesToSample: 1 | | 31 | 6 | Accept | 2.5058 | 5.8769 | 2.2734 | 2.2739 | ensemble | Method: Bag | | | | | | | | | | LearnRate: NaN | | | | | | | | | | MinLeafSize: 11 | | | | | | | | | | NumVariablesToSample: 1 | | 32 | 6 | Best | 2.2734 | 0.74899 | 2.2734 | 2.2739 | svm | BoxConstraint: 344.75 | | | | | | | | | | KernelScale: 3.7441 | | | | | | | | | | Epsilon: 0.20094 | | 33 | 5 | Accept | 2.2734 | 1.1325 | 2.2734 | 2.2739 | svm | BoxConstraint: 344.75 | | | | | | | | | | KernelScale: 3.7441 | | | | | | | | | | Epsilon: 0.20094 | | 34 | 5 | Accept | 2.6958 | 0.05227 | 2.2734 | 2.2739 | tree | MinLeafSize: 4 | | | | | | | | | | MaxNumSplits: 5 | | | | | | | | | | NumVariablesToSample: 6 | | 35 | 8 | Accept | 4.1448 | 0.085799 | 2.2734 | 2.2735 | svm | BoxConstraint: 1.8227 | | | | | | | | | | KernelScale: 977.3 | | | | | | | | | | Epsilon: 2.0809 | | 36 | 6 | Accept | 2.9801 | 0.064816 | 2.2734 | 2.2735 | tree | MinLeafSize: 3 | | | | | | | | | | MaxNumSplits: 72 | | | | | | | | | | NumVariablesToSample: 1 | | 37 | 6 | Accept | 2.6751 | 0.27642 | 2.2734 | 2.2735 | tree | MinLeafSize: 7 | | | | | | | | | | MaxNumSplits: 31 | | | | | | | | | | NumVariablesToSample: 3 | | 38 | 6 | Accept | 4.1303 | 0.11917 | 2.2734 | 2.2735 | svm | BoxConstraint: 0.032336 | | | | | | | | | | KernelScale: 0.34645 | | | | | | | | | | Epsilon: 382.33 | | 39 | 6 | Best | 2.1806 | 0.3992 | 2.1806 | 2.1809 | svm | BoxConstraint: 197.52 | | | | | | | | | | KernelScale: 4.7757 | | | | | | | | | | Epsilon: 0.029282 | | 40 | 7 | Accept | 2.6007 | 0.052877 | 2.1806 | 2.1809 | tree | MinLeafSize: 14 | | | | | | | | | | MaxNumSplits: 311 | | | | | | | | | | NumVariablesToSample: 4 | |==========================================================================================================================================================| | Iter | Active | Eval | log(1+valLoss)| Time for training | Observed min | Estimated min | Learner | Hyperparameter: Value | | | workers | result | | & validation (sec)| validation loss | validation loss | | | |==========================================================================================================================================================| | 41 | 8 | Accept | 2.4301 | 0.064636 | 2.1806 | 2.1809 | tree | MinLeafSize: 7 | | | | | | | | | | MaxNumSplits: 16 | | | | | | | | | | NumVariablesToSample: 7 | | 42 | 8 | Accept | 2.3683 | 4.1134 | 2.1806 | 2.1809 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.52017 | | | | | | | | | | MinLeafSize: 3 | | | | | | | | | | NumVariablesToSample: NaN | | 43 | 8 | Accept | 4.1303 | 0.077599 | 2.1806 | 2.1809 | svm | BoxConstraint: 188.58 | | | | | | | | | | KernelScale: 0.009867 | | | | | | | | | | Epsilon: 27.186 | | 44 | 8 | Accept | 2.2817 | 4.1073 | 2.1806 | 2.1809 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.39343 | | | | | | | | | | MinLeafSize: 1 | | | | | | | | | | NumVariablesToSample: NaN | | 45 | 8 | Accept | 2.2905 | 0.33312 | 2.1806 | 2.181 | svm | BoxConstraint: 3.1495 | | | | | | | | | | KernelScale: 1.5767 | | | | | | | | | | Epsilon: 0.015324 | | 46 | 8 | Accept | 2.1862 | 4.5949 | 2.1806 | 2.181 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.39847 | | | | | | | | | | MinLeafSize: 4 | | | | | | | | | | NumVariablesToSample: NaN | | 47 | 8 | Accept | 4.0238 | 0.1936 | 2.1806 | 2.181 | svm | BoxConstraint: 47.384 | | | | | | | | | | KernelScale: 407.1 | | | | | | | | | | Epsilon: 5.789 | | 48 | 8 | Accept | 2.3271 | 5.613 | 2.1806 | 2.181 | ensemble | Method: Bag | | | | | | | | | | LearnRate: NaN | | | | | | | | | | MinLeafSize: 22 | | | | | | | | | | NumVariablesToSample: 6 | | 49 | 8 | Accept | 4.1303 | 4.2256 | 2.1806 | 2.181 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.21695 | | | | | | | | | | MinLeafSize: 156 | | | | | | | | | | NumVariablesToSample: NaN | | 50 | 8 | Accept | 4.1303 | 3.9433 | 2.1806 | 2.181 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.24031 | | | | | | | | | | MinLeafSize: 156 | | | | | | | | | | NumVariablesToSample: NaN | | 51 | 8 | Accept | 5.9837 | 25.376 | 2.1806 | 2.1808 | svm | BoxConstraint: 3.3336 | | | | | | | | | | KernelScale: 0.20068 | | | | | | | | | | Epsilon: 1.2333 | | 52 | 8 | Best | 2.1775 | 4.8819 | 2.1775 | 2.1775 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.13486 | | | | | | | | | | MinLeafSize: 2 | | | | | | | | | | NumVariablesToSample: NaN | | 53 | 8 | Accept | 4.1472 | 0.098786 | 2.1775 | 2.1775 | svm | BoxConstraint: 0.024211 | | | | | | | | | | KernelScale: 234.23 | | | | | | | | | | Epsilon: 0.65694 | | 54 | 7 | Accept | 16.058 | 30.775 | 2.1775 | 2.1774 | svm | BoxConstraint: 0.87942 | | | | | | | | | | KernelScale: 0.042698 | | | | | | | | | | Epsilon: 4.1252 | | 55 | 7 | Accept | 4.1295 | 3.4872 | 2.1775 | 2.1774 | ensemble | Method: Bag | | | | | | | | | | LearnRate: NaN | | | | | | | | | | MinLeafSize: 165 | | | | | | | | | | NumVariablesToSample: 5 | | 56 | 7 | Accept | 4.1303 | 0.064431 | 2.1775 | 2.1774 | svm | BoxConstraint: 0.0077264 | | | | | | | | | | KernelScale: 11.935 | | | | | | | | | | Epsilon: 22.619 | | 57 | 6 | Accept | 5.2259 | 40.653 | 2.1775 | 2.1773 | svm | BoxConstraint: 0.95481 | | | | | | | | | | KernelScale: 0.0033698 | | | | | | | | | | Epsilon: 0.060804 | | 58 | 6 | Accept | 4.5815 | 6.4959 | 2.1775 | 2.1773 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.0048265 | | | | | | | | | | MinLeafSize: 7 | | | | | | | | | | NumVariablesToSample: NaN | | 59 | 5 | Accept | 5.8709 | 9.4038 | 2.1775 | 2.1773 | svm | BoxConstraint: 0.046968 | | | | | | | | | | KernelScale: 0.0027305 | | | | | | | | | | Epsilon: 1.2478 | | 60 | 5 | Accept | 4.1489 | 0.059253 | 2.1775 | 2.1773 | svm | BoxConstraint: 0.0029753 | | | | | | | | | | KernelScale: 357.77 | | | | | | | | | | Epsilon: 1.3007 | |==========================================================================================================================================================| | Iter | Active | Eval | log(1+valLoss)| Time for training | Observed min | Estimated min | Learner | Hyperparameter: Value | | | workers | result | | & validation (sec)| validation loss | validation loss | | | |==========================================================================================================================================================| | 61 | 8 | Accept | 2.1923 | 4.9912 | 2.1775 | 2.177 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.027552 | | | | | | | | | | MinLeafSize: 15 | | | | | | | | | | NumVariablesToSample: NaN | | 62 | 6 | Accept | 2.3235 | 0.13508 | 2.1775 | 2.177 | svm | BoxConstraint: 0.060693 | | | | | | | | | | KernelScale: 1.9336 | | | | | | | | | | Epsilon: 2.9377 | | 63 | 6 | Accept | 4.1303 | 0.10264 | 2.1775 | 2.177 | svm | BoxConstraint: 283.72 | | | | | | | | | | KernelScale: 0.66147 | | | | | | | | | | Epsilon: 800.44 | | 64 | 6 | Accept | 3.2671 | 0.056364 | 2.1775 | 2.177 | tree | MinLeafSize: 3 | | | | | | | | | | MaxNumSplits: 2 | | | | | | | | | | NumVariablesToSample: 2 | | 65 | 7 | Accept | 4.1303 | 0.072693 | 2.1775 | 2.177 | svm | BoxConstraint: 958.92 | | | | | | | | | | KernelScale: 0.70563 | | | | | | | | | | Epsilon: 537.94 | | 66 | 7 | Accept | 2.1872 | 4.1631 | 2.1775 | 2.1772 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.12361 | | | | | | | | | | MinLeafSize: 15 | | | | | | | | | | NumVariablesToSample: NaN | | 67 | 7 | Accept | 4.1303 | 0.18462 | 2.1775 | 2.1772 | tree | MinLeafSize: 140 | | | | | | | | | | MaxNumSplits: 5 | | | | | | | | | | NumVariablesToSample: 2 | | 68 | 6 | Accept | 6.622 | 24.87 | 2.1775 | 1.4529 | svm | BoxConstraint: 154.74 | | | | | | | | | | KernelScale: 0.43817 | | | | | | | | | | Epsilon: 0.069304 | | 69 | 6 | Accept | 2.2017 | 4.3959 | 2.1775 | 1.4529 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.10067 | | | | | | | | | | MinLeafSize: 13 | | | | | | | | | | NumVariablesToSample: NaN | | 70 | 5 | Accept | 2.2891 | 4.5089 | 2.1775 | 2.1774 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.024227 | | | | | | | | | | MinLeafSize: 35 | | | | | | | | | | NumVariablesToSample: NaN | | 71 | 5 | Accept | 4.1303 | 0.062327 | 2.1775 | 2.1774 | svm | BoxConstraint: 1246.2 | | | | | | | | | | KernelScale: 0.053143 | | | | | | | | | | Epsilon: 53.963 | | 72 | 8 | Accept | 2.2118 | 4.6015 | 2.1775 | 2.1774 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.11646 | | | | | | | | | | MinLeafSize: 14 | | | | | | | | | | NumVariablesToSample: NaN | | 73 | 6 | Accept | 2.1969 | 4.3467 | 2.1775 | 2.1774 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.12319 | | | | | | | | | | MinLeafSize: 14 | | | | | | | | | | NumVariablesToSample: NaN | | 74 | 6 | Accept | 4.1303 | 0.10057 | 2.1775 | 2.1774 | svm | BoxConstraint: 0.50824 | | | | | | | | | | KernelScale: 0.015015 | | | | | | | | | | Epsilon: 96.096 | | 75 | 6 | Accept | 2.932 | 0.057265 | 2.1775 | 2.1774 | tree | MinLeafSize: 7 | | | | | | | | | | MaxNumSplits: 22 | | | | | | | | | | NumVariablesToSample: 1 | | 76 | 7 | Accept | 2.7649 | 0.12548 | 2.1775 | 2.1774 | tree | MinLeafSize: 16 | | | | | | | | | | MaxNumSplits: 43 | | | | | | | | | | NumVariablesToSample: 3 | | 77 | 7 | Accept | 2.1913 | 4.8165 | 2.1775 | 2.1761 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.057539 | | | | | | | | | | MinLeafSize: 3 | | | | | | | | | | NumVariablesToSample: NaN | | 78 | 7 | Accept | 2.4788 | 4.6057 | 2.1775 | 2.1774 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.99513 | | | | | | | | | | MinLeafSize: 19 | | | | | | | | | | NumVariablesToSample: NaN | | 79 | 8 | Accept | 6.1274 | 5.0102 | 2.1775 | 2.1759 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.000767 | | | | | | | | | | MinLeafSize: 37 | | | | | | | | | | NumVariablesToSample: NaN | | 80 | 8 | Accept | 4.13 | 3.7349 | 2.1775 | 2.176 | ensemble | Method: Bag | | | | | | | | | | LearnRate: NaN | | | | | | | | | | MinLeafSize: 171 | | | | | | | | | | NumVariablesToSample: 5 | |==========================================================================================================================================================| | Iter | Active | Eval | log(1+valLoss)| Time for training | Observed min | Estimated min | Learner | Hyperparameter: Value | | | workers | result | | & validation (sec)| validation loss | validation loss | | | |==========================================================================================================================================================| | 81 | 8 | Accept | 2.2406 | 6.658 | 2.1775 | 2.176 | ensemble | Method: Bag | | | | | | | | | | LearnRate: NaN | | | | | | | | | | MinLeafSize: 3 | | | | | | | | | | NumVariablesToSample: 7 | | 82 | 8 | Accept | 2.6476 | 0.054688 | 2.1775 | 2.176 | tree | MinLeafSize: 28 | | | | | | | | | | MaxNumSplits: 129 | | | | | | | | | | NumVariablesToSample: 7 | | 83 | 8 | Accept | 2.255 | 6.6774 | 2.1775 | 2.176 | ensemble | Method: Bag | | | | | | | | | | LearnRate: NaN | | | | | | | | | | MinLeafSize: 3 | | | | | | | | | | NumVariablesToSample: 7 | | 84 | 7 | Accept | 2.6645 | 10.337 | 2.1775 | 2.176 | svm | BoxConstraint: 334.64 | | | | | | | | | | KernelScale: 2.0733 | | | | | | | | | | Epsilon: 0.039959 | | 85 | 7 | Accept | 4.1303 | 0.062936 | 2.1775 | 2.176 | svm | BoxConstraint: 88.122 | | | | | | | | | | KernelScale: 0.00080559 | | | | | | | | | | Epsilon: 80.763 | | 86 | 7 | Accept | 2.2384 | 5.8157 | 2.1775 | 2.1761 | ensemble | Method: Bag | | | | | | | | | | LearnRate: NaN | | | | | | | | | | MinLeafSize: 1 | | | | | | | | | | NumVariablesToSample: 6 | | 87 | 7 | Accept | 6.0666 | 6.0896 | 2.1775 | 2.1759 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.00091284 | | | | | | | | | | MinLeafSize: 1 | | | | | | | | | | NumVariablesToSample: NaN | | 88 | 7 | Accept | 3.2269 | 0.045413 | 2.1775 | 2.1759 | tree | MinLeafSize: 14 | | | | | | | | | | MaxNumSplits: 6 | | | | | | | | | | NumVariablesToSample: 1 | | 89 | 8 | Accept | 2.2427 | 6.3348 | 2.1775 | 2.176 | ensemble | Method: Bag | | | | | | | | | | LearnRate: NaN | | | | | | | | | | MinLeafSize: 3 | | | | | | | | | | NumVariablesToSample: 7 | | 90 | 6 | Accept | 4.5354 | 8.5876 | 2.1775 | 2.1768 | svm | BoxConstraint: 0.022073 | | | | | | | | | | KernelScale: 0.0034124 | | | | | | | | | | Epsilon: 2.9088 | | 91 | 6 | Accept | 2.2072 | 4.8166 | 2.1775 | 2.1768 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.067559 | | | | | | | | | | MinLeafSize: 1 | | | | | | | | | | NumVariablesToSample: NaN | | 92 | 6 | Accept | 3.0936 | 4.1763 | 2.1775 | 2.1768 | ensemble | Method: LSBoost | | | | | | | | | | LearnRate: 0.011017 | | | | | | | | | | MinLeafSize: 76 | | | | | | | | | | NumVariablesToSample: NaN |
__________________________________________________________ Optimization completed. Total iterations: 92 Total elapsed time: 65.349 seconds Total time for training and validation: 369.4973 seconds Best observed learner is an ensemble model with: Learner: ensemble Method: LSBoost LearnRate: 0.13486 MinLeafSize: 2 NumVariablesToSample: NaN Observed log(1 + valLoss): 2.1775 Time for training and validation: 4.8819 seconds Best estimated learner (returned model) is an ensemble model with: Learner: ensemble Method: LSBoost LearnRate: 0.13486 MinLeafSize: 2 NumVariablesToSample: NaN Estimated log(1 + valLoss): 2.1768 Estimated time for training and validation: 4.7705 seconds Documentation for fitrauto display
fitrauto
によって返される最終的なモデルが、最適な推定学習器となります。モデルを返す前に、関数は学習データ全体 (carsTrain
)、リストされている Learner
(またはモデル) のタイプ、および表示されたハイパーパラメーター値を使用して、モデルの再学習を行います。
単純なモデルの作成
関数 fitlm
を使用して、単純な線形回帰モデル linearMdl
を作成します。
linearMdl = fitlm(carsTrain);
linearMdl
オブジェクトは autoMdl
オブジェクトと厳密に同一のプロパティとメソッドをもつわけではありませんが、オブジェクト関数 predict
を使った新しいデータの応答値の予測に、両方のモデルを使用できます。
モデルの検定セットのパフォーマンスの比較
検定データ セットに対する linearMdl
モデルと autoMdl
モデルのパフォーマンスを比較します。各モデルについて、検定セットの平均二乗誤差 (MSE) を計算します。MSE の値が小さいほど、パフォーマンスが優れていることを示します。
ypred = predict(linearMdl,carsTest);
linearMSE = mean((carsTest.MPG-ypred).^2,"omitnan")
linearMSE = 10.0558
autoMSE = loss(autoMdl,carsTest,"MPG")
autoMSE = 7.2140
autoMdl
モデルは linearMdl
モデルよりも性能が高いと考えられます。
入力引数
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
を含めてすべて予測子として扱われます。
データ型: char
| string
formula
— 応答変数および予測子変数サブセットの説明モデル
文字ベクトル | 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
Y
— 応答データ
数値ベクトル
応答データ。数値ベクトルとして指定します。Y
の長さは Tbl
または X
の行数と等しくなければなりません。
応答変数名を指定するには、名前と値の引数 ResponseName
を使用します。
データ型: single
| double
X
— 予測子データ
数値行列
予測子データ。数値行列として指定します。
X
の各行は 1 つの観測値に、各列は 1 つの予測子に対応します。
Y
の長さと X
の行数は等しくなければなりません。
予測子の名前を X
に表示される順序で指定するには、名前と値の引数 PredictorNames
を使用します。
データ型: single
| double
メモ
NaN
、空の文字ベクトル (''
)、空の string (""
)、<missing>
および <undefined>
要素は欠損データとして扱われます。応答変数の欠損値に対応するデータの行は削除されます。ただし、予測子データ X
または Tbl
の欠損値の処理は、モデル (学習器) によって異なります。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: "HyperparameterOptimizationOptions",struct("MaxObjectiveEvaluations",200,"Verbose",2)
は、最適化プロセスを 200 回反復する (つまり、モデル ハイパーパラメーターの組み合わせを 200 通り試す) よう指定し、次に評価するモデル ハイパーパラメーターの組み合わせに関する情報をコマンド ウィンドウに表示します。
Learners
— 回帰モデルのタイプ
"auto"
(既定値) | "all"
| "all-linear"
| "all-nonlinear"
| 1 つ以上の学習器の名前
最適化で試行する回帰モデルのタイプ。以下の最初の表に示す値、または 2 番目の表に示す 1 つ以上の学習器の名前として指定します。複数の学習器の名前を string または cell 配列として指定します。
値 | 説明 |
---|---|
"auto" |
メモ ハイパーパラメーターの最適化で最良の結果を提供できるように、学習器の自動選択の動作は頻繁に変更される可能性があります。ソフトウェアのリリース間で学習器の選択の一貫性を高めるには、含めるモデルを明示的に指定してください。 |
"all" | fitrauto は、使用可能なすべての学習器を選択します。 |
"all-linear" | fitrauto は、線形 ("linear" ) 学習器を選択します。 |
"all-nonlinear" | fitrauto は、次のすべての非線形学習器を選択します。"ensemble" 、"gp" 、"kernel" 、"net" 、"svm" (ガウス カーネルまたは多項式カーネル)、および "tree" 。 |
メモ
効率を高めるため、以前の値のいずれかを指定した場合、fitrauto
で次のモデルの組み合わせは選択されません。
"kernel"
と"svm"
(ガウス カーネル) —fitrauto
は予測子データの観測値数が 11,000 を超える場合は 1 つ目を選択し、それ以外の場合は 2 つ目を選択します。"linear"
と"svm"
(線形カーネル) —fitrauto
は 1 つ目を選択します。
学習器名 | 説明 |
---|---|
"ensemble" | アンサンブル回帰モデル |
"gp" | ガウス過程回帰モデル |
"kernel" | カーネル回帰モデル |
"linear" | 高次元データ用の線形回帰モデル |
"net" | ニューラル ネットワーク回帰モデル |
"svm" | サポート ベクター マシン回帰モデル |
"tree" | 二分決定回帰木 |
例: "Learners","all"
例: "Learners","ensemble"
例: "Learners",["gp","svm"]
OptimizeHyperparameters
— 最適化するハイパーパラメーター
"auto"
(既定値) | "all"
最適化するハイパーパラメーター。"auto"
または "all"
として指定します。最適化可能なハイパーパラメーターは、次の表で説明されているように、モデル (学習器) によって異なります。
学習器名 | "auto" の場合のハイパーパラメーター | "all" の場合の追加ハイパーパラメーター | メモ: |
---|---|---|---|
"ensemble" | Method , NumLearningCycles , LearnRate , MinLeafSize | MaxNumSplits , NumVariablesToSample | アンサンブルの ハイパーパラメーターの検索範囲などの詳細については、 |
"gp" | Sigma | BasisFunction , KernelFunction , KernelScale (KernelParameters ), Standardize |
ハイパーパラメーターの検索範囲などの詳細については、 |
"kernel" | Epsilon , KernelScale , Lambda | Learner , NumExpansionDimensions | ハイパーパラメーターの検索範囲などの詳細については、OptimizeHyperparameters を参照してください。fitrauto を使用する場合、ハイパーパラメーターの検索範囲を変更できないことに注意してください。 |
"linear" | Lambda , Learner | Regularization | ハイパーパラメーターの検索範囲などの詳細については、OptimizeHyperparameters を参照してください。fitrauto を使用する場合、ハイパーパラメーターの検索範囲を変更できないことに注意してください。 |
"net" | Activations , Lambda , LayerSizes , Standardize | LayerBiasesInitializer , LayerWeightsInitializer | ハイパーパラメーターの検索範囲などの詳細については、OptimizeHyperparameters を参照してください。fitrauto を使用する場合、ハイパーパラメーターの検索範囲を変更できないことに注意してください。 |
"svm" | BoxConstraint , Epsilon , KernelScale | KernelFunction , PolynomialOrder , Standardize |
ハイパーパラメーターの検索範囲などの詳細については、 |
"tree" | MinLeafSize | MaxNumSplits | ハイパーパラメーターの検索範囲などの詳細については、OptimizeHyperparameters を参照してください。fitrauto を使用する場合、ハイパーパラメーターの検索範囲を変更できないことに注意してください。 |
メモ
Learners
が "auto"
以外の値に設定されている場合、最適化されないモデル ハイパーパラメーターの既定値は、表のメモで示されていない限り、既定の近似関数の値と一致します。Learners
が "auto"
に設定されている場合、最適化されたハイパーパラメーターの検索範囲と最適化されていないハイパーパラメーターの値は、学習データの特性によって異なる場合があります。詳細は、学習器の自動選択を参照してください。
例: "OptimizeHyperparameters","all"
HyperparameterOptimizationOptions
— 最適化のオプション
構造体
最適化のオプション。構造体として指定します。この構造体のフィールドは、すべてオプションです。
フィールド名 | 値 | 既定の設定 |
---|---|---|
Optimizer | "bayesopt" | |
MaxObjectiveEvaluations | 最大反復回数 (目的関数評価)。正の整数として指定されます。 |
|
MaxTime | 制限時間。正の実数として指定します。制限時間の単位は、 | Inf |
ShowPlots | 最適化の進行状況プロットを表示するかどうかを示す logical 値。true の場合、観測された最小検証損失が反復回数に対してプロットされます。ベイズ最適化を使用している場合、推定された最小検証損失もプロットに表示されます。 | true |
SaveIntermediateResults | 結果を保存するかどうかを示す logical 値。true の場合、ワークスペース変数が反復ごとに上書きされます。この変数は、ベイズ最適化を使用している場合は BayesoptResults という名前の BayesianOptimization オブジェクトで、ASHA 最適化を使用している場合は ASHAResults という名前の table です。 | false |
Verbose | コマンド ラインに次を表示します。
| 1 |
UseParallel | 最適化を並列実行するかどうかを示す logical 値。並列実行には Parallel Computing Toolbox™ が必要です。並列でのタイミングに再現性がないため、並列最適化で再現性のある結果が生成されるとは限りません。 | false |
Repartition | 反復ごとに交差検証を再分割するかどうかを示す論理値。 分割ノイズが考慮されるので、通常は | false |
MaxTrainingSetSize | ASHA 最適化に対する各学習セットでの観測値の最大数。正の整数を指定します。この値は最大の学習セット サイズと一致します。 メモ この値を指定する場合、 | 使用可能な最大学習分割サイズ
|
MinTrainingSetSize | ASHA 最適化に対する各学習セットでの観測値の最小数。正の整数を指定します。この値は最小の学習セット サイズの下限です。 メモ この値を指定する場合、 | 100 |
次の 3 つのオプションのいずれか 1 つのみを指定してください。 | ||
CVPartition | cvpartition によって作成された cvpartition オブジェクト | 交差検証フィールドが指定されていない場合 "Kfold",5 |
Holdout | ホールドアウトの比率を表す範囲 (0,1) のスカラー | |
Kfold | 1 より大きい整数 |
例: "HyperparameterOptimizationOptions",struct("UseParallel",true)
CategoricalPredictors
— カテゴリカル予測子のリスト
正の整数のベクトル | logical ベクトル | 文字行列 | string 配列 | 文字ベクトルの cell 配列 | "all"
カテゴリカル予測子のリスト。次の表のいずれかの値として指定します。
値 | 説明 |
---|---|
正の整数のベクトル | ベクトルの各エントリは、対応する予測子がカテゴリカルであることを示すインデックス値です。インデックス値の範囲は 1 ~
|
logical ベクトル |
|
文字行列 | 行列の各行は予測子変数の名前です。名前は PredictorNames のエントリに一致しなくてはなりません。文字行列の各行が同じ長さになるように、名前を余分な空白で埋めてください。 |
文字ベクトルの cell 配列または string 配列 | 配列の各要素は予測子変数の名前です。名前は PredictorNames のエントリに一致しなくてはなりません。 |
"all" | すべての予測子がカテゴリカルです。 |
既定では、予測子データがテーブル (Tbl
) 内にある場合、fitrauto
は、その変数が logical ベクトル、categorical ベクトル、文字配列、string 配列または文字ベクトルの cell 配列のいずれかである場合に、変数を categorical であると見なします。ただし、決定木を使用する学習器は、数学的に順序付けされた categorical ベクトルを連続変数と仮定します。予測子データが行列 (X
) である場合、fitrauto
はすべての予測子が連続的であると見なします。他の予測子をカテゴリカル予測子として指定するには、名前と値の引数 CategoricalPredictors
を使用してそれらを指定します。
近似関数がカテゴリカル予測子を扱う方法の詳細については、ダミー変数の自動作成を参照してください。
例: "CategoricalPredictors","all"
データ型: single
| double
| logical
| char
| string
| cell
PredictorNames
— 予測子変数名
一意な名前の string 配列 | 一意な文字ベクトルの cell 配列
予測子変数名。一意な名前の 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
を使用して学習に使用する予測子変数を選択できます。つまり、fitrauto
は、学習中にPredictorNames
の予測子変数と応答変数のみを使用します。PredictorNames
はTbl.Properties.VariableNames
のサブセットでなければならず、応答変数の名前を含めることはできません。既定では、すべての予測子変数の名前が
PredictorNames
に格納されます。PredictorNames
とformula
の両方ではなく、いずれか一方を使用して学習用の予測子を指定することをお勧めします。
例: "PredictorNames",["SepalLength","SepalWidth","PetalLength","PetalWidth"]
データ型: string
| cell
ResponseName
— 応答変数名
"Y"
(既定値) | 文字ベクトル | string スカラー
応答変数名。文字ベクトルまたは string スカラーとして指定します。
Y
を指定した場合、ResponseName
を使用して応答変数の名前を指定できます。ResponseVarName
またはformula
を指定した場合、ResponseName
を使用できません。
例: "ResponseName","response"
データ型: char
| string
Weights
— 観測値の重み
正の数値ベクトル | Tbl
内の変数の名前
観測値の重み。正の数値ベクトルまたは Tbl
内の変数の名前を指定します。ソフトウェアは、X
または Tbl
の各観測値に、Weights
の対応する値で重みを付けます。Weights
の長さは、X
または Tbl
の行数と等しくなければなりません。
入力データをテーブル Tbl
として指定した場合、Weights
は数値ベクトルが含まれている Tbl
内の変数の名前にすることができます。この場合、Weights
には文字ベクトルまたは string スカラーを指定しなければなりません。たとえば、重みベクトル W
が Tbl.W
として格納されている場合、"W"
として指定します。それ以外の場合、モデルに学習をさせるときに、Tbl
の列は W
を含めてすべて予測子または応答変数として扱われます。
fitrauto
は、ガウス過程回帰モデルの観測値の重みを無視します。つまり、Learners
に "gp"
モデルが含まれている場合、関数はそれらのモデルの名前と値の引数 Weights
を無視します。
既定の設定では、Weights
は ones(n,1)
です。n
は X
または Tbl
の観測値数です。
ソフトウェアは、合計が 1 になるように Weights
を正規化します。
データ型: single
| double
| char
| string
出力引数
Mdl
— 学習済みの回帰モデル
回帰モデル オブジェクト
学習済みの回帰モデル。次の表の回帰モデル オブジェクトのいずれかとして返されます。
学習器名 | 返されるモデル オブジェクト |
---|---|
"ensemble" | CompactRegressionEnsemble |
"gp" | CompactRegressionGP |
"kernel" | RegressionKernel |
"linear" | RegressionLinear |
"net" | CompactRegressionNeuralNetwork |
"svm" | CompactRegressionSVM |
"tree" | CompactRegressionTree |
OptimizationResults
— 最適化の結果
BayesianOptimization
オブジェクト | テーブル
最適化の結果。ベイズ最適化を使用している場合は BayesianOptimization
オブジェクトとして、ASHA 最適化を使用している場合は table として返されます。詳細については、ベイズ最適化とASHA 最適化を参照してください。
詳細
Verbose の表示
名前と値の引数 HyperparameterOptimizationOptions
の Verbose
フィールドを 1
または 2
に設定した場合、関数 fitrauto
は最適化の結果の反復表示を提供します。
次の表では、表示される列とそのエントリについて説明します。
列名 | 説明 |
---|---|
Iter | 反復回数 — 名前と値の引数 HyperparameterOptimizationOptions の MaxObjectiveEvaluations フィールドを使用することで、反復回数の制限を設定できます。 |
Active workers | アクティブな並列ワーカーの数 — この列は、名前と値の引数 HyperparameterOptimizationOptions の UseParallel フィールドを true に設定することにより、最適化を並列実行した場合にのみ表示されます。 |
Eval result | 評価結果は以下のいずれかになります。
|
log(1 + valLoss) | この反復における学習器およびハイパーパラメーターの値について計算された、対数変換された検証損失。具体的には、fitrauto は log(1 + valLoss) を計算します。ここで valLoss は、既定の設定では、交差検証平均二乗誤差 (MSE) です。名前と値の引数 'HyperparameterOptimizationOptions' の CVPartition 、Holdout 、Kfold のいずれかのフィールドを使用することにより、検証方式を変更できます。 |
Time for training & validation (sec) | この反復における学習器およびハイパーパラメーターの値を使用して、モデルの検証損失の学習と計算を行うのにかかった時間 (秒単位)。ベイズ最適化を使用している場合、この値にベイズ最適化プロセスによって維持された目的関数モデルの更新に必要な時間は含まれません。詳細は、ベイズ最適化を参照してください。 |
Observed min log(1 + valLoss) | それまでの計算により観測された最小の対数変換済み検証損失。この値は、最適化プロセスでそれまでに計算された最小の 既定の設定では、 |
Estimated min log(1 + valLoss) | 推定された最小の対数変換済み検証損失。ベイズ最適化を使用している場合、各反復において、 既定の設定では、 メモ この列は、ベイズ最適化を使用している場合、すなわち名前と値の引数 |
Training set size | この反復における各学習セットに使用される観測値の数。名前と値の引数 メモ この列は、ASHA 最適化を使用している場合、すなわち名前と値の引数 |
Learner | この反復において評価されたモデル型。名前と値の引数 Learners を使用して、最適化で使用される学習器を指定します。 |
Hyperparameter: Value | この反復におけるハイパーパラメーターの値。名前と値の引数 OptimizeHyperparameters を使用して、最適化で使用されるハイパーパラメーターを指定します。 |
次のモデルについての説明も表示されます。
Best observed learner
— 学習器タイプとハイパーパラメーターの値がリストされたこのモデルからは、観測された最終的な最小検証損失 (対数変換済み) が得られます。(詳細については、前の表のObserved min log(1 + valLoss)
の説明を参照してください。) ASHA 最適化を使用している場合、fitrauto
は、学習データ セット全体でモデルの再学習を行い、そのモデルをMdl
出力として返します。Best estimated learner
— ベイズ最適化を使用している場合、学習器タイプとハイパーパラメーターの値がリストされたこのモデルからは、推定された最終的な最小検証損失 (対数変換済み) が得られます。(詳細については、前の表のEstimated min log(1 + valLoss)
の説明を参照してください。) この場合、fitrauto
は、学習データ セット全体でモデルの再学習を行い、そのモデルをMdl
出力として返します。メモ
Best estimated learner
モデルは、ベイズ最適化を使用している場合、すなわち名前と値の引数HyperparameterOptimizationOptions
のOptimizer
フィールドが"bayesopt"
に設定されている場合のみ表示されます。
ヒント
データ セットのサイズ、指定した学習器の数、および選択した最適化手法によっては、
fitrauto
の処理に時間がかかる場合があります。Parallel Computing Toolbox のライセンスがある場合、最適化を並列実行して計算を高速化することができます。これを行うには、
"HyperparameterOptimizationOptions",struct("UseParallel",true)
を指定します。この構造体に追加フィールドを含めて、その他の最適化の側面を制御できます。HyperparameterOptimizationOptions
を参照してください。学習セットの観測値の数が原因 (たとえば 10,000 を超える場合) でベイズ最適化による
fitrauto
の実行に長い時間がかかる場合は、代わりに ASHA 最適化によるfitrauto
を使用することを検討してください。データ セットの観測値が多いと、多くの場合、ベイズ最適化よりも ASHA 最適化の方が優れた解を速く見つけます。ASHA 最適化を使用するには、"HyperparameterOptimizationOptions",struct("Optimizer","asha")
を指定します。この構造体に追加フィールドを含めて、追加の最適化の側面を制御できます。特に、時間の制約がある場合は、HyperparameterOptimizationOptions
構造体のMaxTime
フィールドを指定して、fitrauto
を実行する秒数を制限します。
アルゴリズム
学習器の自動選択
"Learners","auto"
を指定した場合、関数 fitrauto
は、予測子データと応答データを分析して適切な学習器を選択します。この関数は、データセットに以下の特性が含まれているかどうかを考慮します。
カテゴリカル予測子
データの 5% を超える欠損値
ワイド データ (予測子の数が観測値の数以上である)
高次元データ (予測子の数が 100 を超える)
大規模データ (観測値の数が 50,000 を超える)
選択される学習器は常に、Learners
の表にリストされている学習器のサブセットになります。ただし、最適化プロセスで試行された関連モデルでは、最適化されていないハイパーパラメーターの既定値や最適化されたハイパーパラメーターの検索範囲が異なる可能性があります。
ベイズ最適化
ベイズ最適化 (一般に、最適化) の目的は、目的関数を最小化する点を見つけることです。fitrauto
のコンテキストにおいて、点は学習器のタイプとその学習器の一連のハイパーパラメーター値の組み合わせであり (Learners
と OptimizeHyperparameters
を参照)、目的関数は log(1 + valLoss) です。ここで、valLoss は、既定では、交差検証の平均二乗誤差 (MSE) です。fitrauto
で実装されるベイズ最適化は、目的関数の複数の RegressionGP
モデルを内部に保持します。つまり、目的関数モデルは学習器のタイプごとに分割され、与えらえれた学習器に対して、このモデルはガウス過程回帰 (GPR) モデルになります (基となるこのモデルは、ベイズ最適化を使用する Statistics and Machine Learning Toolbox™ の他の関数で採用されている single GPR モデルとは異なります)。ベイズ最適化は、目的関数の評価を使用して基となるモデルに学習させ、獲得関数 ("expected-improvement"
) を使用して次に評価する点を決定します。詳細は、期待改善量を参照してください。この獲得関数は、モデル化された目的関数値が低い点での抽出と、まだ十分にはモデル化されていない領域の探索との間でバランスをとります。最適化の終わりに、fitrauto
は、最適化中に評価された点の中から、目的関数のモデルの値が最小となった点を選択します。詳細については、bestPoint
の名前と値の引数 "Criterion","min-visited-mean"
を参照してください。
ASHA 最適化
fitrauto
の非同期連続半減アルゴリズム (ASHA) は、さまざまなハイパーパラメーターの値 (Learners
および OptimizeHyperparameters
を参照) をもつ複数のモデルを無作為に選択し、学習データの小さいサブセットで学習させます。特定のモデルのパフォーマンスが有望な場合、そのモデルをプロモートし、より多くの学習データで学習させます。このプロセスを繰り返し、データの量を徐々に増やしながら有望なモデルに学習させます。既定では、最適化の終わりに、fitrauto
は log(1 + valLoss) の値が最小になるモデルを選択します。ここで valLoss は交差検証平均二乗誤差 (MSE) です。
各反復で ASHA は、以前に学習させたモデルを選択してプロモートする (つまり、より多くの学習データを使用してモデルに再学習させる) か、ランダム探索を使用して新しいモデル (学習器タイプおよびハイパーパラメーター値) を選択します。ASHA は次のようにモデルをプロモートします。
アルゴリズムは、条件 (
floor(g/4)
個のモデルがプロモートされている。ここでg
はグループ中のモデルの数) を満たしていない最大の学習セット サイズをもつモデルのグループを検索します。モデルのグループの中から、ASHA は最小の log(1 + valLoss) の値をもつモデルを選択し、
4*(Training Set Size)
個の観測値でこのモデルに再学習させます。そのようなモデルのグループが存在しない場合、ASHA は古いモデルをプロモートする代わりに新しいモデルを選択し、最小の学習セット サイズを使用してこの新しいモデルに学習させます。
モデルが学習データのサブセットで学習している場合、ASHA は次のように交差検証の MSE を計算します。
各学習分割において、アルゴリズムは非層化サンプリングを使用して、観測値 (サイズ
Training set size
) の無作為標本を選択し、このデータのサブセットでモデルに学習させます。次にアルゴリズムは、当てはめられたモデルについて検定分割 (つまり、学習分割に含まれない観測値) で検定を実行し、MSE を計算します。
最後に、分割全体で結果を平均化します。
ASHA の詳細については、[1]を参照してください。
ASHA の反復回数
ASHA 最適化を使用する場合、既定の反復回数は、データ中の観測値の数、学習器タイプの数、並列処理の使用、および交差検証のタイプに依存します。アルゴリズムは、L 個の学習器タイプ (Learners
を参照) に対して、fitrauto
が最大の学習セット サイズで L 個のモデルに学習させるように反復回数を選択します。
次の表では、5 分割交差検証を使用した場合の、指定された仕様に基づく既定の反復回数について説明します。n が観測値の数を、L が学習器タイプの数を表すことに注意してください。
観測値の数 n | 既定の反復回数 (逐次実行) | 既定の反復回数 (並列実行) |
---|---|---|
n < 500 | 30*L — n が ASHA 最適化を実装するには小さすぎるため、fitrauto は代わりにランダム探索を実装して、モデルを検出し、評価します。 | 30*L — n が ASHA 最適化を実装するには小さすぎるため、fitrauto は代わりにランダム探索を実装して、モデルを検出し、評価します。 |
500 ≤ n < 2000 | 5*L | 5*(L + 1) |
2000 ≤ n < 8000 | 21*L | 21*(L + 1) |
8000 ≤ n < 32,000 | 85*L | 85*(L + 1) |
32,000 ≤ n | 341*L | 341*(L + 1) |
代替機能
使用するデータ セットに最適なモデルがわからない場合は、回帰学習器アプリを代わりに使用することができます。このアプリを使用すると、さまざまなモデルについてハイパーパラメーターを調整して、パフォーマンスが最も高い最適化済みモデルを選択できます。回帰学習器では、モデルのハイパーパラメーターを調整する前に特定のモデルを選択しなければなりませんが、最適化可能なハイパーパラメーターの選択とハイパーパラメーター値の設定をより柔軟に行うことができます。このアプリにより、さまざまな線形回帰モデルの学習を行うことも可能になります (線形回帰モデルを参照)。ただし、このアプリでは、最適化を並列実行することや、学習器として
"linear"
または"kernel"
を最適化すること、観測値の重みを指定すること、ASHA 最適化を使用することはできません。詳細は、回帰学習器アプリのハイパーパラメーターの最適化を参照してください。使用するデータに適合するモデルがわかっている場合は、対応するモデル近似関数を使用し、名前と値の引数
OptimizeHyperparameters
を指定して、ハイパーパラメーターを調整することもできます。複数のモデルの結果を比較して最適な回帰モデルを選択できます。分類モデルに適用する、このプロセスの例については、ベイズ最適化を使用したモデル選択の自動化への移行を参照してください。
参照
[1] Li, Liam, Kevin Jamieson, Afshin Rostamizadeh, Ekaterina Gonina, Moritz Hardt, Benjamin Recht, and Ameet Talwalkar. “A System for Massively Parallel Hyperparameter Tuning.” ArXiv:1810.05934v5 [Cs], March 16, 2020. https://arxiv.org/abs/1810.05934v5.
拡張機能
自動並列サポート
Parallel Computing Toolbox™ を使用して自動的に並列計算を実行することで、コードを高速化します。
ハイパーパラメーターの最適化を並列実行するには、この関数を呼び出すときに名前と値の引数 "HyperparameterOptimizationOptions",struct("UseParallel",true)
を指定します。
並列計算の全般的な情報については、自動並列サポートを使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2020b で導入R2023a: ガウス過程回帰 (GPR) 学習器に ARD カーネルを含めることが可能
OptimizeHyperparameters
の値が "all"
の場合、データ セットが次の特性に当てはまれば、関数 fitrauto
にガウス過程回帰 ("gp"
) 学習器の ARD カーネル オプションが含まれます。
観測値の数が 10,000 以下である。
カテゴリカル予測子の拡張後の予測子の数が 32 以下である (ダミー変数の自動作成を参照)。
GPR モデルの KernelFunction
の値が ARD カーネル オプションの場合、fitrauto
は、それらの GPR の許容誤差と初期ステップ サイズの値を使用してモデルに学習させます。
OptimizerOptions
の値は次のoptions
構造体と一致します。options = statset("fitrgp"); options.MaxIter = 1000; options.TolFun = 1e-3; options.TolX = 1e-3;
InitialStepSize
の値は"auto"
です。
以前のリリースでは、データ セットのサイズに関係なく、GPR 学習器の ARD カーネル オプションは関数 fitrauto
ですべて無視されていました。
R2022a: 学習器にニューラル ネットワーク モデルを追加
R2022a 以降では、使用可能な学習器のリストにニューラル ネットワーク モデルが追加されています。名前と値の引数 Learners
に "all"
または "all-nonlinear"
を指定した場合、fitrauto
によるモデル選択とハイパーパラメーター調整のプロセスで、その一環としてニューラル ネットワーク モデルも検討されます。また、データ セットの特性によっては、Learners
を "auto"
として指定した場合にもニューラル ネットワーク モデルが検討されます。
モデル選択プロセスでニューラル ネットワーク モデルを省略するには、含めるモデルを明示的に指定します。たとえば、木とアンサンブルのモデルのみを使用するには、"Learners",["tree","ensemble"]
と指定します。
R2022a: カテゴリカル展開後にデータが広がった場合の学習器の自動選択に線形モデルを追加
R2022a 以降では、Learners
を "auto"
として指定した場合に、カテゴリカル予測子の展開後にデータに含まれる予測子が観測値よりも多くなると (ダミー変数の自動作成を参照)、fitrauto
によるハイパーパラメーターの最適化で他のモデルと共に線形学習器 ("linear"
) も検討されます。以前のリリースでは、線形学習器は検討されていませんでした。
R2021a: 最適化プロセスで使用される線形学習器ソルバーを正則化手法に基づいて決定
R2021a 以降では、線形学習器 ("linear"
) を試すように指定すると、最適化プロセスのその反復で選択された正則化タイプに応じて、記憶制限 BFGS (LBFGS) ソルバーまたは可分近似によるスパース再構成 (SpaRSA) ソルバーのいずれかが fitrauto
で使用されます。
Regularization
が'ridge'
の場合、Solver
の値は既定では'lbfgs'
に設定されます。Regularization
が'lasso'
の場合、Solver
の値は既定では'sparsa'
に設定されます。
以前のリリースでは、最適化プロセスでの既定のソルバーの選択には、正則化タイプ、学習器タイプ、予測子の数など、さまざまな要因が関係していました。詳細については、Solver
を参照してください。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
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: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)