Main Content

特徴抽出のワークフロー

この例では、特徴抽出を行う完全なワークフローを示します。この例では、60 個の予測子と何万ものデータ標本が含まれている humanactivity データ セットを使用します。

データの読み込みと確認

この例を実行すると提供される humanactivity データを読み込みます。

load humanactivity

データの説明を表示します。

Description
Description = 29×1 string
    "                        === Human Activity Data ===                        "
    "                                                                           "
    " The humanactivity data set contains 24,075 observations of five different "
    " physical human activities: Sitting, Standing, Walking, Running, and       "
    " Dancing. Each observation has 60 features extracted from acceleration     "
    " data measured by smartphone accelerometer sensors. The data set contains  "
    " the following variables:                                                  "
    "                                                                           "
    " * actid - Response vector containing the activity IDs in integers: 1, 2, "
    " 3, 4, and 5 representing Sitting, Standing, Walking, Running, and         "
    " Dancing, respectively                                                     "
    " * actnames - Activity names corresponding to the integer activity IDs    "
    " * feat - Feature matrix of 60 features for 24,075 observations           "
    " * featlabels - Labels of the 60 features                                 "
    "                                                                           "
    " The Sensor HAR (human activity recognition) App [1] was used to create    "
    " the humanactivity data set. When measuring the raw acceleration data with "
    " this app, a person placed a smartphone in a pocket so that the smartphone "
    " was upside down and the screen faced toward the person. The software then "
    " calibrated the measured raw data accordingly and extracted the 60         "
    " features from the calibrated data. For details about the calibration and  "
    " feature extraction, see [2] and [3], respectively.                        "
    "                                                                           "
    " [1] El Helou, A. Sensor HAR recognition App. MathWorks File Exchange      "
    " http://www.mathworks.com/matlabcentral/fileexchange/54138-sensor-har-recognition-app "
    " [2] STMicroelectronics, AN4508 Application note. “Parameters and          "
    " calibration of a low-g 3-axis accelerometer.” 2014.                       "
    " [3] El Helou, A. Sensor Data Analytics. MathWorks File Exchange           "
    " https://www.mathworks.com/matlabcentral/fileexchange/54139-sensor-data-analytics--french-webinar-code- "

データ セットは動作タイプごとに整理されています。データの無作為なセットをより適切に表現するために、行をシャッフルします。

n = numel(actid); % Number of data points
rng(1) % For reproducibility
idx = randsample(n,n); % Shuffle
X = feat(idx,:); % The corresponding labels are in actid(idx)
Labels = actid(idx);

動作とそれに対応するラベルを表示します。

tbl = table(["1";"2";"3";"4";"5"],...
    ["Sitting";"Standing";"Walking";"Running";"Dancing"],...
    'VariableNames',{'Label' 'Activity'});
disp(tbl)
    Label     Activity 
    _____    __________

     "1"     "Sitting" 
     "2"     "Standing"
     "3"     "Walking" 
     "4"     "Running" 
     "5"     "Dancing" 

データを交差検証用に設定します。cvpartition を使用して、データから学習セットと検証セットを作成します。

c = cvpartition(n,"HoldOut",0.1);
idxtrain = training(c);
Xtrain = X(idxtrain,:);
LabelTrain = Labels(idxtrain);
idxtest = test(c);
Xtest = X(idxtest,:);
LabelTest = Labels(idxtest);

新しい特徴次元の選択

抽出する特徴量の個数の選択には、いくつかの考慮事項があります。

  • 特徴量が多くなると、メモリと計算時間が増える。

  • 特徴量が少ないと、分類器が不適切になる可能性がある。

まず、5 個の特徴量を選択します。後で、使用する特徴量を増やした場合の影響を確認します。

q = 5;

特徴量の抽出

特徴抽出関数には、sparsefiltrica の 2 つがあります。関数 sparsefilt から始めます。抽出の時間がかかりすぎないようにするため、反復回数を 10 に設定します。

通常は、数回から数百回の反復で sparsefilt アルゴリズムを実行すると良好な結果が得られます。反復回数が多すぎると、一種の過適合問題が発生し、分類精度が低下する可能性があります。

10 回の反復で sparsefilt を使用して、スパース フィルター モデルを取得します。

tic
Mdl = sparsefilt(Xtrain,q,'IterationLimit',10);
Warning: Solver LBFGS was not able to converge to a solution.
toc
Elapsed time is 0.116473 seconds.

sparsefilt は、内部の LBFGS オプティマイザーが収束しなかったことを警告しています。オプティマイザーが収束しなかったのは、少なくとも 1 つには、反復制限を 10 に設定したからです。それでも、この結果を使用して分類器に学習させることができます。

分類器の作成

元のデータを新しい特徴量の表現に変換します。

NewX = transform(Mdl,Xtrain);

変換したデータと LabelTrain の正しい分類ラベルに基づいて線形分類器に学習をさせます。学習済みモデルの精度は、fitcecoc の正則化パラメーター Lambda の影響を受けます。名前と値のペア OptimizeHyperparameters を使用して、Lambda の最適な値を求めてください。この最適化には時間がかかることに注意してください。Parallel Computing Toolbox™ のライセンスがある場合、並列計算を使用して実行を高速化することができます。並列のライセンスがない場合は、このスクリプトを実行する前に UseParallel の呼び出しを削除してください。

t = templateLinear('Solver','lbfgs');
options = struct('UseParallel',true);
tic
Cmdl = fitcecoc(NewX,LabelTrain,Learners=t, ...
    OptimizeHyperparameters="auto",...
    HyperparameterOptimizationOptions=options);
Copying objective function to workers...
Done copying objective function to workers.
|==============================================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Coding |       Lambda |      Learner |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |              |
|==============================================================================================================================|
|    1 |       6 | Best   |     0.24372 |      4.6976 |     0.24372 |     0.24372 |     onevsall |       3.9324 |          svm |
|    2 |       6 | Accept |     0.56743 |      6.3649 |     0.24372 |     0.40007 |     onevsone |      0.12409 |     logistic |
|    3 |       6 | Best   |    0.047905 |      5.6082 |    0.047905 |     0.18708 |     onevsall |   3.0428e-08 |          svm |
|    4 |       5 | Best   |    0.044259 |      5.9896 |    0.044259 |    0.044417 |     onevsone |   2.3997e-09 |          svm |
|    5 |       5 | Accept |     0.27949 |      5.8778 |    0.044259 |    0.044417 |     onevsall |    0.0026915 |     logistic |
|    6 |       6 | Accept |     0.27072 |      1.4726 |    0.044259 |    0.046079 |     onevsall |       4.6009 |          svm |
|    7 |       6 | Accept |    0.044951 |      2.6811 |    0.044259 |    0.045078 |     onevsone |   8.4641e-07 |          svm |
|    8 |       6 | Accept |    0.047074 |      2.4291 |    0.044259 |    0.043721 |     onevsall |   4.6737e-10 |          svm |
|    9 |       5 | Accept |    0.048782 |      2.2619 |    0.044259 |    0.045714 |     onevsall |    4.188e-07 |          svm |
|   10 |       5 | Accept |     0.74128 |      1.3176 |    0.044259 |    0.045714 |     onevsone |       4.6111 |          svm |
|   11 |       4 | Accept |    0.047951 |      9.4874 |    0.044259 |    0.039012 |     onevsall |   2.5237e-09 |     logistic |
|   12 |       4 | Accept |    0.044259 |      2.4651 |    0.044259 |    0.039012 |     onevsone |    4.639e-10 |          svm |
|   13 |       6 | Accept |    0.047305 |      2.1181 |    0.044259 |     0.04016 |     onevsall |   4.6238e-10 |          svm |
|   14 |       6 | Accept |     0.13762 |       1.563 |    0.044259 |    0.039295 |     onevsall |     0.000197 |          svm |
|   15 |       6 | Best   |    0.044213 |      2.2286 |    0.044213 |    0.040603 |     onevsone |   3.2212e-07 |          svm |
|   16 |       6 | Best   |    0.044028 |      2.1986 |    0.044028 |    0.042724 |     onevsone |   3.3084e-08 |          svm |
|   17 |       6 | Accept |    0.047397 |      2.2898 |    0.044028 |    0.042701 |     onevsall |   7.0046e-09 |          svm |
|   18 |       6 | Best   |    0.043982 |      2.2335 |    0.043982 |     0.04234 |     onevsone |   4.8906e-08 |          svm |
|   19 |       6 | Accept |    0.044074 |      4.8905 |    0.043982 |      0.0426 |     onevsone |    4.618e-10 |     logistic |
|   20 |       5 | Accept |    0.049889 |      4.6319 |    0.043982 |    0.042666 |     onevsall |   1.5731e-07 |     logistic |
|==============================================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Coding |       Lambda |      Learner |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |              |
|==============================================================================================================================|
|   21 |       5 | Accept |    0.044074 |      2.3749 |    0.043982 |    0.042666 |     onevsone |   9.2673e-08 |          svm |
|   22 |       6 | Accept |    0.047397 |      5.9207 |    0.043982 |    0.042595 |     onevsall |   4.6968e-10 |     logistic |
|   23 |       6 | Accept |    0.044074 |      2.0958 |    0.043982 |    0.042706 |     onevsone |   4.7064e-10 |          svm |
|   24 |       6 | Accept |     0.74128 |      1.3176 |    0.043982 |    0.042866 |     onevsall |       4.6104 |     logistic |
|   25 |       5 | Accept |    0.044074 |      2.3518 |    0.043982 |    0.043111 |     onevsone |   1.6131e-07 |          svm |
|   26 |       5 | Accept |     0.04412 |      2.2526 |    0.043982 |    0.043111 |     onevsone |    4.951e-09 |          svm |
|   27 |       6 | Accept |    0.044397 |      4.4049 |    0.043982 |     0.04312 |     onevsone |   1.9221e-08 |     logistic |
|   28 |       6 | Accept |     0.33889 |      1.6083 |    0.043982 |    0.043246 |     onevsone |    0.0057941 |          svm |
|   29 |       6 | Accept |    0.048689 |      5.0386 |    0.043982 |    0.043249 |     onevsall |   1.8172e-08 |     logistic |
|   30 |       5 | Accept |    0.047397 |       6.426 |    0.043982 |    0.043243 |     onevsall |   4.6642e-10 |     logistic |
|   31 |       5 | Accept |      0.1882 |      1.4843 |    0.043982 |    0.043243 |     onevsall |     0.031302 |          svm |

Figure contains an axes object. The axes object with title Min objective vs. Number of function evaluations, xlabel Function evaluations, ylabel Min objective contains 2 objects of type line. These objects represent Min observed objective, Estimated min objective.

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 31
Total elapsed time: 23.9334 seconds
Total objective function evaluation time: 108.0825

Best observed feasible point:
     Coding       Lambda      Learner
    ________    __________    _______

    onevsone    4.8906e-08      svm  

Observed objective function value = 0.043982
Estimated objective function value = 0.043668
Function evaluation time = 2.2335

Best estimated feasible point (according to models):
     Coding       Lambda      Learner
    ________    __________    _______

    onevsone    1.6131e-07      svm  

Estimated objective function value = 0.043243
Estimated function evaluation time = 2.4171
toc
Elapsed time is 25.690360 seconds.

分類器の評価

テスト データに適用したときの分類器の誤差をチェックします。

TestX = transform(Mdl,Xtest);
Loss = loss(Cmdl,TestX,LabelTest)
Loss = 0.0489

この変換により、元のデータで学習をさせたものより優れた分類器が生成されたでしょうか。元の学習データに基づいて分類器を作成し、損失を評価します。

tic
Omdl = fitcecoc(Xtrain,LabelTrain,Learners=t, ...
    OptimizeHyperparameters="auto",...
    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.
|==============================================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Coding |       Lambda |      Learner |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |              |
|==============================================================================================================================|
|    1 |       6 | Best   |    0.035259 |      5.5107 |    0.035259 |    0.035259 |     onevsone |      0.77518 |          svm |
|    2 |       6 | Best   |    0.021829 |      8.7406 |    0.021829 |    0.022507 |     onevsone |   1.4423e-09 |          svm |
|    3 |       6 | Accept |     0.03729 |      13.605 |    0.021829 |    0.021838 |     onevsall |       0.6103 |          svm |
|    4 |       6 | Accept |    0.022383 |      8.5819 |    0.021829 |    0.021836 |     onevsone |   4.1356e-09 |          svm |
|    5 |       6 | Accept |    0.024045 |      7.7692 |    0.021829 |     0.02255 |     onevsone |   4.6679e-10 |          svm |
|    6 |       6 | Accept |    0.040198 |       8.308 |    0.021829 |    0.022615 |     onevsall |       4.6023 |     logistic |
|    7 |       6 | Best   |    0.021553 |       7.829 |    0.021553 |      0.0221 |     onevsone |   7.3067e-08 |          svm |
|    8 |       6 | Accept |    0.021829 |      7.6416 |    0.021553 |    0.021892 |     onevsone |   5.8054e-09 |          svm |
|    9 |       6 | Best   |    0.021506 |      9.0909 |    0.021506 |    0.021558 |     onevsone |   8.1397e-08 |          svm |
|   10 |       6 | Best   |    0.019937 |      33.993 |    0.019937 |    0.019992 |     onevsone |    0.0001022 |     logistic |
|   11 |       6 | Accept |    0.021091 |      8.4908 |    0.019937 |    0.019984 |     onevsone |   3.4715e-08 |          svm |
|   12 |       6 | Accept |    0.019937 |      46.814 |    0.019937 |    0.019961 |     onevsone |    1.569e-05 |     logistic |
|   13 |       6 | Accept |    0.022152 |      6.9556 |    0.019937 |    0.019965 |     onevsone |   3.7097e-08 |          svm |
|   14 |       6 | Accept |    0.039275 |       7.372 |    0.019937 |    0.019897 |     onevsone |       1.0643 |     logistic |
|   15 |       6 | Best   |    0.019799 |      53.215 |    0.019799 |    0.019695 |     onevsone |   1.1332e-07 |     logistic |
|   16 |       6 | Accept |    0.022568 |       8.594 |    0.019799 |    0.019662 |     onevsone |   2.0178e-05 |          svm |
|   17 |       6 | Accept |    0.020906 |      20.329 |    0.019799 |    0.019877 |     onevsone |   0.00079115 |     logistic |
|   18 |       6 | Accept |    0.023814 |      43.531 |    0.019799 |    0.019875 |     onevsall |   4.6349e-10 |          svm |
|   19 |       6 | Accept |    0.020353 |      45.355 |    0.019799 |    0.020057 |     onevsone |   2.5069e-05 |     logistic |
|   20 |       6 | Accept |    0.020214 |      46.906 |    0.019799 |    0.020048 |     onevsone |     4.64e-10 |     logistic |
|==============================================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Coding |       Lambda |      Learner |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |              |
|==============================================================================================================================|
|   21 |       6 | Best   |    0.019614 |      51.847 |    0.019614 |        0.02 |     onevsone |   1.5863e-06 |     logistic |
|   22 |       6 | Accept |    0.020168 |      49.186 |    0.019614 |     0.01991 |     onevsone |    3.644e-07 |     logistic |
|   23 |       6 | Accept |    0.022845 |      130.99 |    0.019614 |    0.019909 |     onevsall |   3.2522e-09 |     logistic |
|   24 |       6 | Accept |    0.024691 |      45.677 |    0.019614 |     0.01991 |     onevsall |   1.0458e-06 |          svm |
|   25 |       6 | Accept |    0.020629 |       46.99 |    0.019614 |    0.019901 |     onevsone |   7.1125e-09 |     logistic |
|   26 |       6 | Accept |     0.02026 |      47.407 |    0.019614 |    0.019899 |     onevsone |   3.5513e-08 |     logistic |
|   27 |       6 | Accept |    0.020168 |      48.879 |    0.019614 |    0.019912 |     onevsone |   4.9086e-09 |     logistic |
|   28 |       6 | Accept |     0.02026 |      46.764 |    0.019614 |    0.019909 |     onevsone |   1.3482e-08 |     logistic |
|   29 |       6 | Accept |     0.02003 |      46.455 |    0.019614 |    0.019916 |     onevsone |   3.6929e-09 |     logistic |
|   30 |       6 | Accept |    0.024229 |      8.5617 |    0.019614 |    0.019905 |     onevsone |    0.0091116 |          svm |

Figure contains an axes object. The axes object with title Min objective vs. Number of function evaluations, xlabel Function evaluations, ylabel Min objective contains 2 objects of type line. These objects represent Min observed objective, Estimated min objective.

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 190.1928 seconds
Total objective function evaluation time: 921.392

Best observed feasible point:
     Coding       Lambda      Learner 
    ________    __________    ________

    onevsone    1.5863e-06    logistic

Observed objective function value = 0.019614
Estimated objective function value = 0.019832
Function evaluation time = 51.8468

Best estimated feasible point (according to models):
     Coding      Lambda      Learner 
    ________    _________    ________

    onevsone    3.644e-07    logistic

Estimated objective function value = 0.019905
Estimated function evaluation time = 51.7579
toc
Elapsed time is 195.893143 seconds.
Losso = loss(Omdl,Xtest,LabelTest)
Losso = 0.0177

スパース フィルターに基づく分類器では、元のデータに基づく分類器より損失が大きくなっています。しかし、元のデータでは 60 個の特徴量を使用していましたが、この分類器は 5 個の特徴量しか使用しておらず、はるかに短時間で作成できます。より優れたスパース フィルター分類器を作成するため、q を 5 から 20 に増やします。これでも、元のデータの 60 個より少ない特徴量です。

q = 20;
Mdl2 = sparsefilt(Xtrain,q,'IterationLimit',10);
Warning: Solver LBFGS was not able to converge to a solution.
NewX = transform(Mdl2,Xtrain);
TestX = transform(Mdl2,Xtest);
tic
Cmdl = fitcecoc(NewX,LabelTrain,Learners=t, ...
    OptimizeHyperparameters="auto",...
    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.
|==============================================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Coding |       Lambda |      Learner |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |              |
|==============================================================================================================================|
|    1 |       6 | Best   |     0.12147 |      1.2383 |     0.12147 |     0.12147 |     onevsall |      0.39835 |          svm |
|    2 |       6 | Accept |     0.74128 |      1.4354 |     0.12147 |     0.43121 |     onevsall |        2.244 |     logistic |
|    3 |       6 | Accept |     0.74128 |      1.5455 |     0.12147 |     0.53465 |     onevsone |       4.6046 |          svm |
|    4 |       6 | Best   |    0.036136 |       3.915 |    0.036136 |    0.082195 |     onevsall |   2.1658e-06 |          svm |
|    5 |       6 | Best   |    0.032352 |      5.1021 |    0.032352 |    0.032396 |     onevsone |   1.3434e-07 |          svm |
|    6 |       6 | Accept |    0.040151 |      3.7664 |    0.032352 |    0.032389 |     onevsone |   2.0976e-05 |     logistic |
|    7 |       6 | Accept |    0.045459 |      2.0148 |    0.032352 |    0.032413 |     onevsall |   0.00083838 |          svm |
|    8 |       6 | Accept |    0.032352 |      8.7656 |    0.032352 |    0.032422 |     onevsall |   4.4817e-08 |          svm |
|    9 |       6 | Accept |     0.74128 |      1.6885 |    0.032352 |      0.0324 |     onevsone |       4.6093 |     logistic |
|   10 |       6 | Best   |    0.030183 |      5.2918 |    0.030183 |     0.03016 |     onevsone |   6.8351e-10 |          svm |
|   11 |       6 | Accept |    0.032583 |      11.351 |    0.030183 |     0.03017 |     onevsone |    7.561e-08 |     logistic |
|   12 |       6 | Accept |    0.038213 |      2.6803 |    0.030183 |    0.030243 |     onevsone |   3.8304e-05 |          svm |
|   13 |       6 | Accept |    0.032075 |      8.8183 |    0.030183 |    0.030252 |     onevsall |   4.7331e-10 |          svm |
|   14 |       6 | Accept |    0.039321 |      1.7803 |    0.030183 |    0.030264 |     onevsall |   4.8211e-05 |          svm |
|   15 |       6 | Accept |    0.035259 |      2.9937 |    0.030183 |    0.030191 |     onevsone |   3.6175e-06 |          svm |
|   16 |       5 | Accept |    0.040521 |      5.4636 |    0.030183 |    0.030185 |     onevsall |    1.224e-05 |     logistic |
|   17 |       5 | Accept |    0.036275 |      5.0559 |    0.030183 |    0.030185 |     onevsone |   1.7186e-06 |     logistic |
|   18 |       6 | Accept |     0.13827 |     0.90957 |    0.030183 |    0.030183 |     onevsall |       4.6063 |          svm |
|   19 |       6 | Accept |    0.030598 |      4.5358 |    0.030183 |    0.030251 |     onevsone |   6.1338e-09 |          svm |
|   20 |       6 | Accept |    0.058289 |      2.5512 |    0.030183 |    0.030239 |     onevsall |   0.00088491 |     logistic |
|==============================================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Coding |       Lambda |      Learner |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |              |
|==============================================================================================================================|
|   21 |       6 | Accept |     0.10919 |      2.3477 |    0.030183 |    0.030234 |     onevsone |    0.0027425 |     logistic |
|   22 |       6 | Accept |    0.031475 |      8.4684 |    0.030183 |    0.030235 |     onevsall |   3.4821e-09 |          svm |
|   23 |       6 | Accept |    0.045274 |      3.9578 |    0.030183 |    0.030226 |     onevsall |   0.00010652 |     logistic |
|   24 |       6 | Accept |    0.045782 |      1.9671 |    0.030183 |    0.030202 |     onevsone |   0.00067026 |          svm |
|   25 |       6 | Accept |    0.031244 |      20.475 |    0.030183 |    0.030201 |     onevsone |   4.6681e-10 |     logistic |
|   26 |       6 | Best   |    0.029952 |      4.7633 |    0.029952 |    0.029927 |     onevsone |   1.8406e-09 |          svm |
|   27 |       6 | Best   |    0.029814 |      4.8472 |    0.029814 |    0.029915 |     onevsone |   4.6362e-10 |          svm |
|   28 |       6 | Accept |    0.036229 |      9.8727 |    0.029814 |    0.029915 |     onevsall |   7.1397e-07 |     logistic |
|   29 |       6 | Accept |    0.033413 |      3.7575 |    0.029814 |    0.029921 |     onevsone |   6.2968e-07 |          svm |
|   30 |       6 | Accept |    0.033967 |      22.019 |    0.029814 |    0.029923 |     onevsall |   7.3548e-08 |     logistic |

Figure contains an axes object. The axes object with title Min objective vs. Number of function evaluations, xlabel Function evaluations, ylabel Min objective contains 2 objects of type line. These objects represent Min observed objective, Estimated min objective.

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 39.9471 seconds
Total objective function evaluation time: 163.3793

Best observed feasible point:
     Coding       Lambda      Learner
    ________    __________    _______

    onevsone    4.6362e-10      svm  

Observed objective function value = 0.029814
Estimated objective function value = 0.030009
Function evaluation time = 4.8472

Best estimated feasible point (according to models):
     Coding       Lambda      Learner
    ________    __________    _______

    onevsone    6.8351e-10      svm  

Estimated objective function value = 0.029923
Estimated function evaluation time = 4.94
toc
Elapsed time is 41.581666 seconds.
Loss2 = loss(Cmdl,TestX,LabelTest)
Loss2 = 0.0320

今回は、5 個の特徴量の分類器より分類損失が小さくなっていますが、元のデータの分類器よりは損失が大きいままです。ここでも、20 個の予測子に対する分類器の方が、データ全体に対する分類器よりも短時間で作成できます。

RICA を試す

他の特徴抽出関数 rica を試します。20 個の特徴量を抽出し、分類器を作成して、テスト データに対する損失を確認します。ricasparsefilt より反復回数を増やす方が性能が向上する可能性があるので、関数 rica では反復回数を増やします。

多くの場合、特徴抽出を行う前に、データの前処理ステップとして入力データを "事前に白色化" します。前置白色化ステップには、相関除去および標準化という 2 つの変換が含まれます。これにより、予測子がゼロ平均と単位共分散をもつようになります。rica は標準化変換のみをサポートします。予測子がゼロ平均と単位共分散をもつようにするには、名前と値のペアの引数 Standardize を使用します。あるいは、sparsefilt または rica を呼び出す前に zscore 変換を適用して、コントラスト正規化用にイメージを個別に変換することもできます。

Mdl3 = rica(Xtrain,q,'IterationLimit',400,'Standardize',true);
Warning: Solver LBFGS was not able to converge to a solution.
NewX = transform(Mdl3,Xtrain);
TestX = transform(Mdl3,Xtest);
tic
Cmdl = fitcecoc(NewX,LabelTrain,Learners=t, ...
    OptimizeHyperparameters="auto",...
    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.
|==============================================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Coding |       Lambda |      Learner |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |              |
|==============================================================================================================================|
|    1 |       6 | Best   |    0.048689 |      1.7274 |    0.048689 |    0.048689 |     onevsone |      0.49772 |          svm |
|    2 |       6 | Accept |    0.062442 |      2.2582 |    0.048689 |    0.055562 |     onevsone |      0.45646 |     logistic |
|    3 |       6 | Best   |    0.032075 |      2.5078 |    0.032075 |    0.047435 |     onevsone |     0.014644 |          svm |
|    4 |       4 | Accept |    0.035998 |      3.1521 |    0.025522 |    0.040067 |     onevsall |   3.8151e-05 |          svm |
|    5 |       4 | Best   |    0.025522 |      3.3093 |    0.025522 |    0.040067 |     onevsone |   2.2518e-09 |          svm |
|    6 |       4 | Accept |    0.035675 |      3.1199 |    0.025522 |    0.040067 |     onevsall |   1.2518e-09 |          svm |
|    7 |       6 | Accept |    0.077164 |      1.6918 |    0.025522 |    0.025637 |     onevsone |        3.067 |          svm |
|    8 |       6 | Accept |    0.026445 |      3.2975 |    0.025522 |    0.031634 |     onevsone |    0.0012412 |          svm |
|    9 |       6 | Accept |    0.025568 |      3.4501 |    0.025522 |    0.027235 |     onevsone |   4.6552e-10 |          svm |
|   10 |       6 | Accept |    0.025614 |        3.42 |    0.025522 |    0.025585 |     onevsone |    4.677e-10 |          svm |
|   11 |       6 | Accept |    0.025706 |      3.2351 |    0.025522 |     0.02559 |     onevsone |   4.5709e-09 |          svm |
|   12 |       6 | Accept |    0.027783 |      2.7219 |    0.025522 |     0.02559 |     onevsone |    0.0031183 |          svm |
|   13 |       6 | Accept |    0.025614 |      3.1778 |    0.025522 |     0.02559 |     onevsone |    0.0001457 |          svm |
|   14 |       6 | Accept |    0.025568 |      3.0303 |    0.025522 |     0.02559 |     onevsone |   1.4458e-07 |          svm |
|   15 |       6 | Accept |    0.027968 |      3.7776 |    0.025522 |     0.02559 |     onevsone |   0.00021934 |     logistic |
|   16 |       6 | Accept |    0.035398 |      2.7932 |    0.025522 |     0.02559 |     onevsall |   2.0683e-07 |          svm |
|   17 |       6 | Accept |    0.052151 |      1.5232 |    0.025522 |     0.02559 |     onevsall |      0.13918 |          svm |
|   18 |       6 | Accept |    0.026214 |      11.715 |    0.025522 |     0.02559 |     onevsone |   7.7428e-08 |     logistic |
|   19 |       6 | Accept |     0.16042 |       1.847 |    0.025522 |    0.025488 |     onevsall |       4.6082 |     logistic |
|   20 |       6 | Accept |    0.033783 |      12.694 |    0.025522 |    0.025591 |     onevsall |   4.6182e-10 |     logistic |
|==============================================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Coding |       Lambda |      Learner |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |              |
|==============================================================================================================================|
|   21 |       6 | Best   |    0.025475 |      4.0126 |    0.025475 |     0.02559 |     onevsone |   3.7723e-06 |          svm |
|   22 |       6 | Accept |    0.038351 |      4.3279 |    0.025475 |     0.02559 |     onevsall |    0.0010239 |     logistic |
|   23 |       6 | Accept |     0.12239 |      1.0595 |    0.025475 |    0.025591 |     onevsall |       4.5914 |          svm |
|   24 |       6 | Accept |    0.026214 |      6.1461 |    0.025475 |    0.025591 |     onevsone |   1.0019e-05 |     logistic |
|   25 |       6 | Accept |    0.037613 |      2.0165 |    0.025475 |    0.025591 |     onevsall |    0.0031581 |          svm |
|   26 |       6 | Accept |    0.034936 |      2.4126 |    0.025475 |     0.02559 |     onevsone |    0.0056673 |     logistic |
|   27 |       6 | Accept |    0.034336 |      6.0477 |    0.025475 |    0.025591 |     onevsall |   2.7728e-05 |     logistic |
|   28 |       6 | Accept |    0.033967 |      10.413 |    0.025475 |    0.025591 |     onevsall |   6.8407e-07 |     logistic |
|   29 |       6 | Accept |     0.02626 |      8.3859 |    0.025475 |     0.02559 |     onevsone |    8.783e-07 |     logistic |
|   30 |       6 | Accept |    0.035582 |      2.8227 |    0.025475 |     0.02559 |     onevsall |   1.3589e-08 |          svm |

Figure contains an axes object. The axes object with title Min objective vs. Number of function evaluations, xlabel Function evaluations, ylabel Min objective contains 2 objects of type line. These objects represent Min observed objective, Estimated min objective.

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 27.1224 seconds
Total objective function evaluation time: 122.0946

Best observed feasible point:
     Coding       Lambda      Learner
    ________    __________    _______

    onevsone    3.7723e-06      svm  

Observed objective function value = 0.025475
Estimated objective function value = 0.025475
Function evaluation time = 4.0126

Best estimated feasible point (according to models):
     Coding      Lambda      Learner
    ________    _________    _______

    onevsone    4.677e-10      svm  

Estimated objective function value = 0.02559
Estimated function evaluation time = 3.4172
toc
Elapsed time is 28.228099 seconds.
Loss3 = loss(Cmdl,TestX,LabelTest)
Loss3 = 0.0275

rica に基づく分類器は、20 個の特徴量のスパース フィルター分類器と同じようなテスト損失になります。この分類器は比較的短時間で作成できます。

より多くの特徴量を試す

特徴抽出関数にはいくつかの調整パラメーターがあります。結果に影響を与える可能性があるパラメーターの 1 つは、要求する特徴量の個数です。前に試した 20 個の特徴量や元のデータの 60 個の特徴量ではなく 100 個の特徴量に基づいた場合に、分類器がどの程度良好に機能するかを調べます。元のデータより多くの特徴量を使用することを "過完備" 学習と呼びます。逆に、少ない特徴量を使用することを "劣完備" 学習と呼びます。過完備学習では分類器の精度が向上する可能性があり、劣完備学習ではメモリと時間が節約される可能性があります。

q = 100;
Mdl4 = sparsefilt(Xtrain,q,'IterationLimit',10);
Warning: Solver LBFGS was not able to converge to a solution.
NewX = transform(Mdl4,Xtrain);
TestX = transform(Mdl4,Xtest);
tic
Cmdl = fitcecoc(NewX,LabelTrain,Learners=t, ...
    OptimizeHyperparameters="auto",...
    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.
|==============================================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Coding |       Lambda |      Learner |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |              |
|==============================================================================================================================|
|    1 |       6 | Best   |    0.039413 |      7.4097 |    0.039413 |    0.039413 |     onevsone |   9.6788e-05 |     logistic |
|    2 |       6 | Accept |    0.056258 |      8.2736 |    0.039413 |    0.047834 |     onevsone |    0.0023908 |          svm |
|    3 |       6 | Accept |    0.050535 |      9.9138 |    0.039413 |    0.048735 |     onevsall |    0.0001608 |     logistic |
|    4 |       6 | Best   |    0.033967 |      13.569 |    0.033967 |    0.034082 |     onevsone |   9.9249e-05 |          svm |
|    5 |       6 | Accept |    0.039413 |      7.9397 |    0.033967 |    0.033968 |     onevsone |   9.6762e-05 |     logistic |
|    6 |       6 | Accept |    0.034059 |      13.408 |    0.033967 |    0.033968 |     onevsone |   0.00010471 |          svm |
|    7 |       6 | Best   |    0.033598 |      12.795 |    0.033598 |    0.033599 |     onevsone |   5.9298e-05 |          svm |
|    8 |       6 | Best   |    0.031752 |      32.351 |    0.031752 |    0.031753 |     onevsall |   5.3759e-06 |          svm |
|    9 |       6 | Accept |    0.088841 |      4.3567 |    0.031752 |    0.031753 |     onevsone |    0.0029806 |     logistic |
|   10 |       6 | Accept |    0.032121 |      9.7001 |    0.031752 |    0.031753 |     onevsone |   1.4055e-05 |     logistic |
|   11 |       6 | Accept |     0.74128 |      4.2755 |    0.031752 |     0.03176 |     onevsone |       1.1119 |          svm |
|   12 |       6 | Accept |     0.74128 |      3.1437 |    0.031752 |    0.031767 |     onevsone |       1.9263 |     logistic |
|   13 |       6 | Accept |     0.37322 |      2.9349 |    0.031752 |     0.03177 |     onevsall |     0.080099 |     logistic |
|   14 |       6 | Best   |    0.028891 |      20.557 |    0.028891 |    0.028907 |     onevsone |   5.6435e-06 |          svm |
|   15 |       6 | Best   |    0.027875 |      16.755 |    0.027875 |    0.027886 |     onevsone |   8.1017e-07 |     logistic |
|   16 |       6 | Best   |    0.027644 |      47.389 |    0.027644 |     0.02765 |     onevsall |   2.6085e-07 |     logistic |
|   17 |       6 | Accept |     0.18322 |       4.166 |    0.027644 |    0.027651 |     onevsall |       4.6137 |          svm |
|   18 |       6 | Best   |    0.019614 |      45.707 |    0.019614 |    0.019626 |     onevsone |   2.2409e-09 |     logistic |
|   19 |       6 | Accept |     0.18363 |      4.9399 |    0.019614 |    0.019626 |     onevsall |     0.085841 |          svm |
|   20 |       6 | Accept |    0.055058 |      9.7251 |    0.019614 |    0.019626 |     onevsall |    0.0011989 |          svm |
|==============================================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Coding |       Lambda |      Learner |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |              |
|==============================================================================================================================|
|   21 |       6 | Accept |    0.035306 |      14.675 |    0.019614 |    0.019625 |     onevsall |    1.403e-05 |     logistic |
|   22 |       6 | Best   |    0.019522 |      28.211 |    0.019522 |    0.019531 |     onevsone |   7.1633e-10 |          svm |
|   23 |       6 | Accept |    0.038582 |      17.001 |    0.019522 |     0.01953 |     onevsall |   8.8768e-05 |          svm |
|   24 |       6 | Accept |    0.022245 |      32.142 |    0.019522 |    0.019529 |     onevsone |   3.8747e-08 |     logistic |
|   25 |       6 | Accept |    0.023399 |      31.652 |    0.019522 |     0.01953 |     onevsone |   1.4128e-07 |          svm |
|   26 |       6 | Accept |    0.020168 |      31.645 |    0.019522 |    0.019535 |     onevsone |   7.4304e-09 |          svm |
|   27 |       6 | Accept |    0.022937 |      112.17 |    0.019522 |    0.019535 |     onevsall |   1.8485e-09 |          svm |
|   28 |       6 | Accept |    0.019614 |      27.955 |    0.019522 |     0.01955 |     onevsone |   2.0284e-09 |          svm |
|   29 |       6 | Accept |    0.020122 |      44.919 |    0.019522 |    0.019549 |     onevsone |   4.6246e-10 |     logistic |
|   30 |       6 | Accept |    0.020722 |      38.788 |    0.019522 |    0.019547 |     onevsone |   8.9251e-09 |     logistic |

Figure contains an axes object. The axes object with title Min objective vs. Number of function evaluations, xlabel Function evaluations, ylabel Min objective contains 2 objects of type line. These objects represent Min observed objective, Estimated min objective.

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 149.9449 seconds
Total objective function evaluation time: 658.4665

Best observed feasible point:
     Coding       Lambda      Learner
    ________    __________    _______

    onevsone    7.1633e-10      svm  

Observed objective function value = 0.019522
Estimated objective function value = 0.019563
Function evaluation time = 28.2111

Best estimated feasible point (according to models):
     Coding       Lambda      Learner
    ________    __________    _______

    onevsone    2.0284e-09      svm  

Estimated objective function value = 0.019547
Estimated function evaluation time = 29.3667
toc
Elapsed time is 153.432841 seconds.
Loss4 = loss(Cmdl,TestX,LabelTest)
Loss4 = 0.0239

100 個の特徴量を抽出した過完備スパース フィルターに基づく分類器は、テスト損失が小さくなります。

Mdl5 = rica(Xtrain,q,'IterationLimit',400,'Standardize',true);
Warning: Solver LBFGS was not able to converge to a solution.
NewX = transform(Mdl5,Xtrain);
TestX = transform(Mdl5,Xtest);
tic
Cmdl = fitcecoc(NewX,LabelTrain,Learners=t, ...
    OptimizeHyperparameters="auto",...
    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.
|==============================================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Coding |       Lambda |      Learner |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |              |
|==============================================================================================================================|
|    1 |       6 | Best   |    0.030875 |      5.8653 |    0.030875 |    0.030875 |     onevsone |      0.34902 |          svm |
|    2 |       6 | Best   |    0.019845 |      6.5249 |    0.019845 |    0.025358 |     onevsone |    0.0026162 |     logistic |
|    3 |       6 | Accept |     0.03489 |      4.6883 |    0.019845 |    0.020385 |     onevsone |     0.099101 |     logistic |
|    4 |       6 | Accept |    0.020629 |          15 |    0.019845 |    0.019912 |     onevsall |   0.00027131 |     logistic |
|    5 |       6 | Best   |    0.015691 |       16.21 |    0.015691 |    0.015748 |     onevsone |   7.8723e-09 |          svm |
|    6 |       6 | Best   |    0.015645 |      11.998 |    0.015645 |    0.015699 |     onevsone |   3.5196e-05 |     logistic |
|    7 |       6 | Best   |    0.015368 |      18.798 |    0.015368 |    0.015369 |     onevsone |   2.6623e-06 |     logistic |
|    8 |       6 | Accept |    0.019476 |      6.5533 |    0.015368 |    0.015369 |     onevsone |     0.002019 |     logistic |
|    9 |       6 | Accept |    0.022106 |      19.792 |    0.015368 |    0.015369 |     onevsall |    0.0019358 |          svm |
|   10 |       6 | Accept |     0.11496 |      4.0322 |    0.015368 |     0.01537 |     onevsone |       3.4314 |     logistic |
|   11 |       6 | Accept |    0.021322 |      6.2828 |    0.015368 |    0.015369 |     onevsone |    0.0043416 |     logistic |
|   12 |       6 | Accept |    0.084502 |      4.1352 |    0.015368 |    0.015369 |     onevsone |       4.5974 |          svm |
|   13 |       6 | Accept |    0.015599 |      11.929 |    0.015368 |     0.01537 |     onevsone |    5.601e-05 |     logistic |
|   14 |       6 | Accept |    0.018876 |      14.777 |    0.015368 |     0.01537 |     onevsone |    0.0073401 |          svm |
|   15 |       6 | Best   |    0.015138 |      16.286 |    0.015138 |    0.015138 |     onevsone |    4.647e-10 |          svm |
|   16 |       6 | Accept |    0.022799 |      10.342 |    0.015138 |    0.015138 |     onevsone |     0.052733 |          svm |
|   17 |       6 | Accept |    0.015322 |      18.918 |    0.015138 |    0.015139 |     onevsone |   1.3043e-07 |          svm |
|   18 |       6 | Accept |     0.04712 |      4.7692 |    0.015138 |    0.015139 |     onevsall |      0.10508 |     logistic |
|   19 |       6 | Accept |     0.10246 |      4.0277 |    0.015138 |    0.015139 |     onevsall |       4.5714 |          svm |
|   20 |       6 | Accept |     0.15276 |      4.0699 |    0.015138 |     0.01514 |     onevsall |       4.5936 |     logistic |
|==============================================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |       Coding |       Lambda |      Learner |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |              |
|==============================================================================================================================|
|   21 |       6 | Best   |    0.014953 |      26.102 |    0.014953 |    0.014953 |     onevsone |   8.0118e-05 |          svm |
|   22 |       6 | Accept |    0.028291 |      7.1206 |    0.014953 |    0.014953 |     onevsall |     0.005946 |     logistic |
|   23 |       6 | Accept |    0.015876 |      19.702 |    0.014953 |    0.014953 |     onevsone |   4.6726e-10 |     logistic |
|   24 |       6 | Accept |    0.015091 |      23.087 |    0.014953 |    0.014953 |     onevsone |   2.6545e-06 |          svm |
|   25 |       6 | Accept |    0.016845 |      44.235 |    0.014953 |    0.014953 |     onevsall |   4.6319e-10 |          svm |
|   26 |       6 | Accept |    0.017076 |      54.261 |    0.014953 |    0.014953 |     onevsall |   4.3174e-07 |     logistic |
|   27 |       6 | Accept |    0.016799 |      45.904 |    0.014953 |    0.014953 |     onevsall |   4.2209e-06 |          svm |
|   28 |       6 | Best   |    0.014768 |      27.573 |    0.014768 |    0.014768 |     onevsone |   1.7625e-08 |     logistic |
|   29 |       6 | Accept |    0.018599 |      33.435 |    0.014768 |    0.014768 |     onevsall |   0.00016625 |          svm |
|   30 |       6 | Accept |    0.017584 |      27.061 |    0.014768 |    0.014768 |     onevsall |    1.646e-05 |     logistic |

Figure contains an axes object. The axes object with title Min objective vs. Number of function evaluations, xlabel Function evaluations, ylabel Min objective contains 2 objects of type line. These objects represent Min observed objective, Estimated min objective.

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 113.968 seconds
Total objective function evaluation time: 513.4789

Best observed feasible point:
     Coding       Lambda      Learner 
    ________    __________    ________

    onevsone    1.7625e-08    logistic

Observed objective function value = 0.014768
Estimated objective function value = 0.014768
Function evaluation time = 27.5729

Best estimated feasible point (according to models):
     Coding       Lambda      Learner 
    ________    __________    ________

    onevsone    1.7625e-08    logistic

Estimated objective function value = 0.014768
Estimated function evaluation time = 27.1423
toc
Elapsed time is 116.497520 seconds.
Loss5 = loss(Cmdl,TestX,LabelTest)
Loss5 = 0.0158

100 個の特徴量を抽出した RICA に基づく分類器は、スパース フィルターと 100 個の特徴量に基づく分類器と同じようなテスト損失になり、元のデータで学習させた分類器と比べて作成時間が半分になります。

bayesopt の使用によるハイパーパラメーターの最適化

特徴抽出関数には次のような調整パラメーターがあります。

  • 反復制限

  • 関数、rica または sparsefilt

  • Lambda パラメーター

  • 学習済み特徴量の個数 q

  • 符号化、onevsone または onevsall

fitcecoc の正則化パラメーターも、学習済み分類器の精度に影響を与えます。このパラメーターもハイパーパラメーターのリストに含めます。

使用可能なパラメーターから効果的に探すため、bayesopt を試します。ワークスペースから渡されるパラメーターが含まれている、サポート ファイル filterica.m にある目的関数を使用します。

変動の原因を取り除くため、初期の変換重み行列を固定します。

W = randn(1e4,1e3);

目的関数のハイパーパラメーターを作成します。

iterlim = optimizableVariable('iterlim',[5,500],'Type','integer');
lambda = optimizableVariable('lambda',[0,10]);
solver = optimizableVariable('solver',{'r','s'},'Type','categorical');
qvar = optimizableVariable('q',[5,100],'Type','integer');
lambdareg = optimizableVariable('lambdareg',[1e-6,1],'Transform','log');
coding = optimizableVariable('coding',{'o','a'},'Type','categorical');
vars = [iterlim,lambda,solver,qvar,lambdareg,coding];

内部最適化の実行が完了しないときに発生する警告なしで最適化を実行します。最適化で良好な値が見つかる可能性を向上させるため、既定の 30 回ではなく 60 回の反復で実行します。

warning('off','stats:classreg:learning:fsutils:Solver:LBFGSUnableToConverge');
tic
results = bayesopt(@(x) filterica(x,Xtrain,Xtest,LabelTrain,LabelTest,W),vars, ...
    'UseParallel',true,'MaxObjectiveEvaluations',60);
Copying objective function to workers...
Done copying objective function to workers.
|===========================================================================================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |      iterlim |       lambda |       solver |            q |    lambdareg |       coding |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |              |              |              |              |
|===========================================================================================================================================================================|
|    1 |       6 | Best   |     0.52943 |       4.912 |     0.52943 |     0.52943 |           70 |       9.3497 |            s |           22 |     0.030312 |            o |
|    2 |       6 | Best   |    0.048927 |      7.0904 |    0.048927 |    0.086902 |          202 |      0.60409 |            r |            9 |     0.010864 |            o |
|    3 |       6 | Best   |    0.027201 |      12.647 |    0.027201 |    0.027592 |          190 |      0.80733 |            r |           25 |     0.039332 |            o |
|    4 |       6 | Accept |    0.035378 |      8.6101 |    0.027201 |    0.027731 |           54 |       3.0477 |            r |           61 |      0.77824 |            o |
|    5 |       6 | Accept |     0.25536 |      30.032 |    0.027201 |    0.027466 |          178 |        6.761 |            s |           84 |   0.00066641 |            o |
|    6 |       6 | Accept |     0.35333 |       32.47 |    0.027201 |    0.027443 |          175 |       2.8287 |            s |           92 |    0.0012333 |            a |
|    7 |       6 | Accept |     0.12827 |      27.117 |    0.027201 |    0.027393 |          325 |       7.3952 |            s |           35 |   8.2172e-06 |            a |
|    8 |       6 | Accept |     0.34755 |       33.96 |    0.027201 |    0.027396 |          266 |       4.0928 |            s |           60 |   0.00041521 |            a |
|    9 |       6 | Accept |    0.078705 |      2.0607 |    0.027201 |    0.027294 |           53 |       1.7616 |            r |            7 |      0.73652 |            o |
|   10 |       6 | Best   |    0.026029 |      6.6583 |    0.026029 |    0.026189 |           70 |       5.0943 |            r |           36 |      0.30991 |            o |
|   11 |       6 | Accept |    0.040287 |     0.99791 |    0.026029 |    0.026218 |            9 |       4.8121 |            s |           13 |   1.0643e-06 |            o |
|   12 |       6 | Accept |    0.055786 |      1.2549 |    0.026029 |    0.026247 |           38 |       8.6327 |            s |            8 |   1.2675e-05 |            o |
|   13 |       6 | Best   |    0.018814 |       8.233 |    0.018814 |    0.018829 |           25 |       0.0278 |            r |           84 |   0.00010178 |            o |
|   14 |       6 | Accept |     0.53812 |     0.49606 |    0.018814 |    0.018875 |           11 |      0.18468 |            r |            5 |   1.3987e-06 |            o |
|   15 |       6 | Best   |    0.016874 |      47.355 |    0.016874 |    0.016839 |          212 |       8.9402 |            r |           87 |    0.0039156 |            o |
|   16 |       6 | Accept |     0.52264 |      17.397 |    0.016874 |    0.016855 |          394 |       2.7795 |            s |           19 |     0.007691 |            o |
|   17 |       6 | Accept |    0.020328 |      3.7038 |    0.016874 |    0.016822 |            8 |       3.5707 |            r |           99 |      0.10314 |            o |
|   18 |       6 | Best   |    0.015555 |      7.6923 |    0.015555 |   0.0084954 |            9 |      0.74158 |            r |           97 |   0.00043623 |            o |
|   19 |       6 | Accept |    0.035237 |      17.017 |    0.015555 |   0.0086345 |          331 |      0.63154 |            r |           20 |   1.0203e-06 |            a |
|   20 |       6 | Accept |    0.055538 |     0.73762 |    0.015555 |    0.011825 |           11 |       4.4459 |            r |            7 |   0.00020189 |            o |
|===========================================================================================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |      iterlim |       lambda |       solver |            q |    lambdareg |       coding |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |              |              |              |              |
|===========================================================================================================================================================================|
|   21 |       6 | Accept |    0.037108 |      1.0492 |    0.015555 |    0.010948 |           20 |       9.5934 |            r |            8 |   0.00027665 |            o |
|   22 |       6 | Accept |    0.041709 |      1.9456 |    0.015555 |    0.015403 |           28 |       9.3857 |            s |           17 |    2.994e-06 |            o |
|   23 |       6 | Accept |    0.018454 |       13.93 |    0.015555 |    0.010483 |           22 |      0.69741 |            r |           97 |   1.2894e-05 |            a |
|   24 |       6 | Accept |    0.028586 |      11.282 |    0.015555 |     0.01139 |           35 |       3.2021 |            s |           99 |   1.0644e-06 |            o |
|   25 |       6 | Accept |    0.039866 |      2.4192 |    0.015555 |    0.010809 |           28 |       9.8094 |            s |           23 |   1.0098e-06 |            a |
|   26 |       6 | Accept |     0.88918 |       49.28 |    0.015555 |    0.013345 |          429 |     0.060872 |            r |           52 |    0.0011157 |            a |
|   27 |       6 | Accept |     0.10786 |     0.53144 |    0.015555 |    0.013969 |            5 |       6.4836 |            r |            6 |   1.3566e-06 |            a |
|   28 |       6 | Accept |    0.017484 |      56.302 |    0.015555 |    0.013962 |          474 |       1.8928 |            r |           48 |   0.00063848 |            o |
|   29 |       6 | Accept |     0.38735 |      35.182 |    0.015555 |    0.013918 |          497 |        6.564 |            s |           34 |      0.80739 |            a |
|   30 |       6 | Accept |    0.044439 |       13.26 |    0.015555 |    0.014003 |          497 |       5.7095 |            r |           10 |   1.6015e-05 |            a |
|   31 |       6 | Accept |    0.033871 |      1.1249 |    0.015555 |    0.013967 |           18 |       7.7947 |            r |           13 |    8.166e-06 |            a |
|   32 |       6 | Accept |     0.74128 |      1.6253 |    0.015555 |    0.013465 |           38 |        2.435 |            s |           15 |      0.98978 |            o |
|   33 |       6 | Accept |     0.32977 |      19.047 |    0.015555 |    0.013292 |          497 |       7.4015 |            s |           18 |   1.2428e-06 |            o |
|   34 |       6 | Accept |     0.13391 |     0.52899 |    0.015555 |    0.013399 |            8 |       8.6813 |            s |           14 |      0.97959 |            a |
|   35 |       6 | Accept |     0.19883 |     0.65282 |    0.015555 |    0.013247 |           13 |        2.418 |            s |            9 |     0.093133 |            a |
|   36 |       6 | Accept |    0.047703 |     0.61038 |    0.015555 |    0.013195 |            7 |       4.4549 |            s |            7 |   1.3742e-05 |            a |
|   37 |       6 | Accept |      0.2922 |      20.739 |    0.015555 |    0.013686 |          498 |       0.7477 |            s |           18 |   1.2496e-06 |            a |
|   38 |       6 | Accept |     0.03113 |      11.814 |    0.015555 |    0.013804 |          287 |        9.474 |            r |           17 |   7.4789e-06 |            a |
|   39 |       6 | Accept |     0.05179 |      82.825 |    0.015555 |    0.014658 |          327 |       8.4596 |            r |          100 |      0.99361 |            a |
|   40 |       6 | Accept |     0.08023 |     0.89041 |    0.015555 |    0.014749 |           28 |       5.3041 |            r |            8 |      0.71177 |            a |
|===========================================================================================================================================================================|
| Iter | Active  | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |      iterlim |       lambda |       solver |            q |    lambdareg |       coding |
|      | workers | result |             | runtime     | (observed)  | (estim.)    |              |              |              |              |              |              |
|===========================================================================================================================================================================|
|   41 |       6 | Accept |    0.026725 |      10.287 |    0.015555 |     0.01503 |           13 |       1.3207 |            s |          100 |   4.0387e-06 |            a |
|   42 |       6 | Accept |    0.054087 |     0.87185 |    0.015555 |    0.014909 |           13 |       2.0473 |            s |            9 |   7.9662e-05 |            o |
|   43 |       6 | Accept |    0.061574 |     0.80035 |    0.015555 |    0.015371 |           18 |       2.9059 |            r |            5 |   3.0653e-05 |            a |
|   44 |       6 | Accept |    0.053178 |      1.1839 |    0.015555 |    0.015997 |           20 |       3.5261 |            s |            9 |   2.7956e-06 |            a |
|   45 |       6 | Accept |     0.03253 |      1.5798 |    0.015555 |     0.01643 |           29 |       4.7229 |            r |           10 |    0.0023745 |            o |
|   46 |       6 | Accept |    0.019437 |      4.5849 |    0.015555 |    0.015791 |           12 |       1.2408 |            r |           91 |     0.012225 |            o |
|   47 |       6 | Accept |    0.059445 |      14.142 |    0.015555 |    0.015878 |          439 |       2.1105 |            r |           13 |      0.95524 |            o |
|   48 |       6 | Accept |    0.047275 |      11.728 |    0.015555 |    0.016694 |          488 |       2.6315 |            r |           10 |    1.073e-06 |            a |
|   49 |       6 | Accept |    0.040995 |      4.1608 |    0.015555 |    0.015764 |          292 |       4.4442 |            r |            5 |   0.00019596 |            o |
|   50 |       6 | Accept |    0.084049 |     0.84595 |    0.015555 |    0.016101 |           17 |       4.5231 |            r |           12 |      0.94067 |            a |
|   51 |       6 | Accept |     0.01608 |      9.7893 |    0.015555 |    0.013937 |           27 |       8.5051 |            r |           98 |    0.0014041 |            o |
|   52 |       6 | Accept |    0.046612 |     0.75998 |    0.015555 |    0.013516 |            6 |       3.6319 |            r |           15 |     0.050078 |            o |
|   53 |       6 | Accept |    0.026378 |      3.9473 |    0.015555 |    0.013503 |            5 |        5.451 |            s |           86 |   2.2645e-05 |            o |
|   54 |       6 | Accept |     0.01652 |       5.525 |    0.015555 |    0.013616 |            6 |       3.4626 |            r |           99 |    0.0042698 |            o |
|   55 |       6 | Accept |    0.023626 |      4.3491 |    0.015555 |    0.013606 |            6 |      0.87113 |            s |           90 |   4.9252e-06 |            o |
|   56 |       6 | Accept |    0.035756 |      1.5968 |    0.015555 |    0.013244 |           11 |       2.0662 |            r |           26 |   3.9009e-05 |            o |
|   57 |       6 | Accept |    0.031252 |      9.0684 |    0.015555 |    0.013039 |          331 |       2.3022 |            r |           11 |   3.3415e-05 |            o |
|   58 |       6 | Accept |    0.072441 |       12.75 |    0.015555 |    0.013042 |          492 |       2.5934 |            r |           11 |      0.72574 |            a |
|   59 |       6 | Accept |     0.02269 |      126.16 |    0.015555 |    0.013115 |          491 |       8.0628 |            r |           99 |      0.16601 |            o |
|   60 |       6 | Accept |    0.039891 |      11.467 |    0.015555 |     0.01292 |          497 |       4.2759 |            r |            9 |    0.0019962 |            o |

Figure contains an axes object. The axes object with title Min objective vs. Number of function evaluations, xlabel Function evaluations, ylabel Min objective contains 2 objects of type line. These objects represent Min observed objective, Estimated min objective.

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 60 reached.
Total function evaluations: 60
Total elapsed time: 210.4583 seconds
Total objective function evaluation time: 831.0775

Best observed feasible point:
    iterlim    lambda     solver    q     lambdareg     coding
    _______    _______    ______    __    __________    ______

       9       0.74158      r       97    0.00043623      o   

Observed objective function value = 0.015555
Estimated objective function value = 0.019291
Function evaluation time = 7.6923

Best estimated feasible point (according to models):
    iterlim    lambda    solver    q     lambdareg    coding
    _______    ______    ______    __    _________    ______

      27       8.5051      r       98    0.0014041      o   

Estimated objective function value = 0.01292
Estimated function evaluation time = 8.4066
toc
Elapsed time is 211.892362 seconds.
warning('on','stats:classreg:learning:fsutils:Solver:LBFGSUnableToConverge');

生成された分類器は、RICA を使用して 100 個の特徴量を対象に 400 回の反復で学習させた分類器との比較で同様な損失 ("観測された目的関数値") になります。この分類器を使用するには、bayesopt によって求められる最適な分類モデルを取得します。

t = templateLinear('Lambda',results.XAtMinObjective.lambda,'Solver','lbfgs');
if results.XAtMinObjective.coding == "o"
    Cmdl = fitcecoc(NewX,LabelTrain,Learners=t,Coding='onevsone');
else
    Cmdl = fitcecoc(NewX,LabelTrain,Learners=t,Coding='onevsall');
end

参考

| | |

関連する例

詳細