exponenta event banner

Байесовская оптимизация с помощью массивов Tall

В этом примере показано, как использовать байесовскую оптимизацию для выбора оптимальных параметров для обучения классификатора ядра с помощью 'OptimizeHyperparameters' аргумент «имя-значение». Набор данных образца airlinesmall.csv - большой набор данных, содержащий табличный файл данных о полетах авиакомпании. В этом примере создается таблица высокого уровня, содержащая данные, и извлекаются метки классов и данные предиктора из таблицы высокого уровня для выполнения процедуры оптимизации.

При выполнении вычислений в массивах TALL MATLAB ® использует либо параллельный пул (по умолчанию при наличии Toolbox™ Parallel Computing), либо локальный сеанс MATLAB. Если требуется выполнить пример с использованием локального сеанса MATLAB при наличии панели инструментов Parallel Computing Toolbox, можно изменить глобальную среду выполнения с помощью mapreducer функция.

Получение данных в MATLAB

®

Создайте хранилище данных, которое ссылается на расположение папки с данными. Данные могут содержаться в одном файле, коллекции файлов или во всей папке. Для папок, содержащих коллекцию файлов, можно указать расположение всей папки или использовать подстановочный символ. '*.csv', для включения в хранилище данных нескольких файлов с одинаковым расширением. Выберите подмножество переменных для работы и обработайте 'NA' значения как отсутствующие данные, так что datastore заменяет их на NaN значения. Создайте таблицу высокого уровня, содержащую данные в хранилище данных.

ds = datastore('airlinesmall.csv');
ds.SelectedVariableNames = {'Month','DayofMonth','DayOfWeek',...
                            'DepTime','ArrDelay','Distance','DepDelay'};
ds.TreatAsMissing = 'NA';
tt  = tall(ds) % Tall table
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 6).

tt =

  M×7 tall table

    Month    DayofMonth    DayOfWeek    DepTime    ArrDelay    Distance    DepDelay
    _____    __________    _________    _______    ________    ________    ________

     10          21            3          642          8         308          12   
     10          26            1         1021          8         296           1   
     10          23            5         2055         21         480          20   
     10          23            5         1332         13         296          12   
     10          22            4          629          4         373          -1   
     10          28            3         1446         59         308          63   
     10           8            4          928          3         447          -2   
     10          10            6          859         11         954          -1   
      :          :             :           :          :           :           :
      :          :             :           :          :           :           :

Подготовка меток классов и данных предиктора

Определите рейсы с опозданием на 10 минут или более, определив логическую переменную, которая является истинной для позднего полета. Эта переменная содержит метки класса. Предварительный просмотр этой переменной включает первые несколько строк.

Y = tt.DepDelay > 10 % Class labels
Y =

  M×1 tall logical array

   1
   0
   1
   1
   0
   1
   0
   0
   :
   :

Создайте массив с высоким значением для данных предиктора.

X = tt{:,1:end-1} % Predictor data
X =

  M×6 tall double matrix

          10          21           3         642           8         308
          10          26           1        1021           8         296
          10          23           5        2055          21         480
          10          23           5        1332          13         296
          10          22           4         629           4         373
          10          28           3        1446          59         308
          10           8           4         928           3         447
          10          10           6         859          11         954
          :           :            :          :           :           :
          :           :            :          :           :           :

Удалить строки в X и Y которые содержат отсутствующие данные.

R = rmmissing([X Y]); % Data with missing entries removed
X = R(:,1:end-1); 
Y = R(:,end); 

Выполнить байесовскую оптимизацию с помощью OptimizeHyperparameters

Автоматическая оптимизация гиперпараметров с помощью 'OptimizeHyperparameters' аргумент «имя-значение».

Стандартизация переменных предиктора.

Z = zscore(X);

Найдите оптимальные значения для 'KernelScale' и 'Lambda' аргументы «имя-значение», которые минимизируют потери в наборе проверки удержания. По умолчанию программа выбирает и резервирует 20% данных в качестве данных проверки и обучает модель, используя остальные данные. Можно изменить долю удержания с помощью 'HyperparameterOptimizationOptions' аргумент «имя-значение». Для воспроизводимости используйте 'expected-improvement-plus' функция обнаружения и установка начальных значений генераторов случайных чисел с помощью rng и tallrng. Результаты могут варьироваться в зависимости от количества работников и среды выполнения для массивов tall. Дополнительные сведения см. в разделе Управление местом запуска кода.

rng('default') 
tallrng('default')
Mdl = fitckernel(Z,Y,'Verbose',0,'OptimizeHyperparameters','auto',...
    'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName','expected-improvement-plus'))
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 2: Completed in 7.1 sec
- Pass 2 of 2: Completed in 2.2 sec
Evaluation completed in 12 sec
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.6 sec
Evaluation completed in 1.8 sec
|=====================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |  KernelScale |       Lambda |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|    1 | Best   |     0.19672 |      125.49 |     0.19672 |     0.19672 |       1.2297 |    0.0080902 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.93 sec
Evaluation completed in 1.1 sec
|    2 | Accept |     0.19672 |      53.653 |     0.19672 |     0.19672 |     0.039643 |   2.5756e-05 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.5 sec
Evaluation completed in 1.6 sec
|    3 | Accept |     0.19672 |      52.453 |     0.19672 |     0.19672 |      0.02562 |   1.2555e-08 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|    4 | Accept |     0.19672 |      57.223 |     0.19672 |     0.19672 |       92.644 |   1.2056e-07 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.4 sec
Evaluation completed in 1.5 sec
|    5 | Best   |     0.11469 |      89.981 |     0.11469 |     0.12698 |       11.173 |   0.00024836 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.94 sec
Evaluation completed in 1.1 sec
|    6 | Best   |     0.11365 |      82.031 |     0.11365 |     0.11373 |       10.609 |   0.00025761 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.92 sec
Evaluation completed in 1.1 sec
|    7 | Accept |     0.19672 |      50.604 |     0.11365 |     0.11373 |    0.0059498 |   0.00043861 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.89 sec
Evaluation completed in 1 sec
|    8 | Accept |     0.12122 |      91.341 |     0.11365 |     0.11371 |        11.44 |   0.00045722 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.97 sec
Evaluation completed in 1.1 sec
|    9 | Best   |     0.10417 |      42.696 |     0.10417 |     0.10417 |       8.0424 |   6.7998e-05 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.87 sec
Evaluation completed in 1 sec
|   10 | Accept |     0.10433 |      42.215 |     0.10417 |     0.10417 |       9.6694 |   1.4948e-05 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.87 sec
Evaluation completed in 1 sec
|   11 | Best   |     0.10409 |      41.618 |     0.10409 |     0.10411 |       6.2099 |   6.1093e-06 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.88 sec
Evaluation completed in 1 sec
|   12 | Best   |     0.10383 |      44.635 |     0.10383 |     0.10404 |       5.6767 |   7.6134e-08 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.89 sec
Evaluation completed in 1 sec
|   13 | Accept |     0.10408 |      45.429 |     0.10383 |     0.10365 |       8.1769 |   8.5993e-09 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.89 sec
Evaluation completed in 1 sec
|   14 | Accept |     0.10404 |      41.928 |     0.10383 |     0.10361 |       7.6191 |   6.4079e-07 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.93 sec
Evaluation completed in 1.1 sec
|   15 | Best   |     0.10351 |      42.094 |     0.10351 |     0.10362 |       4.2987 |   9.2645e-08 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.88 sec
Evaluation completed in 1 sec
|   16 | Accept |     0.10404 |      44.684 |     0.10351 |     0.10362 |       4.8747 |   1.7838e-08 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.87 sec
Evaluation completed in 1 sec
|   17 | Accept |     0.10657 |      88.006 |     0.10351 |     0.10357 |       4.8239 |   0.00016344 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.88 sec
Evaluation completed in 1 sec
|   18 | Best   |     0.10299 |      41.303 |     0.10299 |     0.10358 |       3.5555 |   2.7165e-06 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.89 sec
Evaluation completed in 1 sec
|   19 | Accept |     0.10366 |      41.301 |     0.10299 |     0.10324 |       3.8035 |   1.3542e-06 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.87 sec
Evaluation completed in 0.99 sec
|   20 | Accept |     0.10337 |      41.345 |     0.10299 |     0.10323 |        3.806 |   1.8101e-06 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.89 sec
Evaluation completed in 1 sec
|=====================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |  KernelScale |       Lambda |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|   21 | Accept |     0.10345 |      41.418 |     0.10299 |     0.10322 |       3.3655 |    9.082e-09 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.86 sec
Evaluation completed in 0.98 sec
|   22 | Accept |     0.19672 |      60.129 |     0.10299 |     0.10322 |       999.62 |   1.2609e-06 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.88 sec
Evaluation completed in 1 sec
|   23 | Accept |     0.10315 |      41.133 |     0.10299 |     0.10306 |       3.6716 |   1.2445e-08 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.88 sec
Evaluation completed in 1 sec
|   24 | Accept |     0.19672 |      48.262 |     0.10299 |     0.10306 |    0.0010004 |   2.6214e-08 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.89 sec
Evaluation completed in 1 sec
|   25 | Accept |     0.19672 |      48.334 |     0.10299 |     0.10306 |      0.21865 |    0.0026529 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.86 sec
Evaluation completed in 0.98 sec
|   26 | Accept |     0.19672 |      60.229 |     0.10299 |     0.10306 |       299.92 |    0.0032109 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.87 sec
Evaluation completed in 0.99 sec
|   27 | Accept |     0.19672 |      48.361 |     0.10299 |     0.10306 |     0.002436 |    0.0040428 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.2 sec
Evaluation completed in 1.4 sec
|   28 | Accept |     0.19672 |      52.539 |     0.10299 |     0.10305 |      0.50559 |   3.3667e-08 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.88 sec
Evaluation completed in 1 sec
|   29 | Accept |     0.10354 |      43.957 |     0.10299 |     0.10313 |       3.7754 |   9.5626e-09 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 0.93 sec
Evaluation completed in 1.1 sec
|   30 | Accept |     0.10405 |      41.388 |     0.10299 |     0.10315 |       8.9864 |   2.3136e-07 |

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

Best observed feasible point:
    KernelScale      Lambda  
    ___________    __________

      3.5555       2.7165e-06

Observed objective function value = 0.10299
Estimated objective function value = 0.10332
Function evaluation time = 41.3029

Best estimated feasible point (according to models):
    KernelScale      Lambda  
    ___________    __________

      3.6716       1.2445e-08

Estimated objective function value = 0.10315
Estimated function evaluation time = 42.3461
Mdl = 
  ClassificationKernel
            PredictorNames: {'x1'  'x2'  'x3'  'x4'  'x5'  'x6'}
              ResponseName: 'Y'
                ClassNames: [0 1]
                   Learner: 'svm'
    NumExpansionDimensions: 256
               KernelScale: 3.6716
                    Lambda: 1.2445e-08
             BoxConstraint: 665.9442


  Properties, Methods

Выполнение байесовской оптимизации с помощью bayesopt

Кроме того, можно использовать bayesopt функция для поиска оптимальных значений гиперпараметров.

Разбейте набор данных на учебные и тестовые наборы. Укажите образец с удержанием 1/3 для тестового набора.

rng('default') % For reproducibility
tallrng('default') % For reproducibility
Partition = cvpartition(Y,'Holdout',1/3);
trainingInds = training(Partition); % Indices for the training set
testInds = test(Partition);         % Indices for the test set

Извлеките данные обучения и тестирования и стандартизируйте данные предиктора.

Ytrain = Y(trainingInds); % Training class labels
Xtrain = X(trainingInds,:);
[Ztrain,mu,stddev] = zscore(Xtrain); % Standardized training data

Ytest = Y(testInds); % Testing class labels
Xtest = X(testInds,:);
Ztest = (Xtest-mu)./stddev; % Standardized test data

Определение переменных sigma и lambda чтобы найти оптимальные значения для 'KernelScale' и 'Lambda' аргументы «имя-значение». Использовать optimizableVariable и укажите широкий диапазон для переменных, поскольку оптимальные значения неизвестны. Примените логарифмическое преобразование к переменным для поиска оптимальных значений в логарифмической шкале.

N = gather(numel(Ytrain)); % Evaluate the length of the tall training array in memory
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: 0% complete
Evaluation 0% complete
- Pass 1 of 1: Completed in 0.95 sec
Evaluation 91% complete

Evaluation completed in 1.1 sec
sigma = optimizableVariable('sigma',[1e-3,1e3],'Transform','log');
lambda = optimizableVariable('lambda',[(1e-3)/N, (1e3)/N],'Transform','log');

Создайте целевую функцию для байесовской оптимизации. Целевая функция принимает в таблице, которая содержит переменные sigma и lambda, а затем вычисляет значение потери классификации для двоичной модели классификации ядра Гаусса, обученной с использованием fitckernel функция. Набор 'Verbose',0 в fitckernel подавление итеративного отображения диагностической информации.

minfn = @(z)gather(loss(fitckernel(Ztrain,Ytrain, ...
    'KernelScale',z.sigma,'Lambda',z.lambda,'Verbose',0), ...
    Ztest,Ytest));

Оптимизация параметров [sigma,lambda] модели классификации ядра в отношении потери классификации с помощью bayesopt. По умолчанию bayesopt отображает итеративную информацию об оптимизации в командной строке. Для воспроизводимости установите значение AcquisitionFunctionName опция для 'expected-improvement-plus'. Функция сбора данных по умолчанию зависит от времени выполнения и, следовательно, может давать различные результаты.

results = bayesopt(minfn,[sigma,lambda],'AcquisitionFunctionName','expected-improvement-plus')
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.3 sec
|=====================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |        sigma |       lambda |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|    1 | Best   |     0.19651 |      84.526 |     0.19651 |     0.19651 |       1.2297 |     0.012135 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|    2 | Accept |     0.19651 |      112.57 |     0.19651 |     0.19651 |     0.039643 |   3.8633e-05 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.3 sec
|    3 | Accept |     0.19651 |      80.282 |     0.19651 |     0.19651 |      0.02562 |   1.8832e-08 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.3 sec
|    4 | Accept |     0.19651 |      52.306 |     0.19651 |     0.19651 |       92.644 |   1.8084e-07 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|    5 | Accept |     0.19651 |      52.717 |     0.19651 |     0.19651 |       978.95 |   0.00015066 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|    6 | Accept |     0.19651 |      90.336 |     0.19651 |     0.19651 |    0.0089609 |    0.0059189 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|    7 | Accept |     0.19651 |      110.35 |     0.19651 |     0.19651 |    0.0010228 |    1.292e-08 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.3 sec
|    8 | Accept |     0.19651 |      76.594 |     0.19651 |     0.19651 |      0.27475 |    0.0044831 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|    9 | Accept |     0.19651 |      77.641 |     0.19651 |     0.19651 |      0.81326 |   1.0753e-07 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|   10 | Accept |     0.19651 |      100.21 |     0.19651 |     0.19651 |    0.0040507 |   0.00011333 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|   11 | Accept |     0.19651 |      52.287 |     0.19651 |     0.19651 |       964.67 |   1.2786e-08 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|   12 | Accept |     0.19651 |       107.7 |     0.19651 |     0.19651 |      0.24069 |    0.0070503 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|   13 | Accept |     0.19651 |      52.092 |     0.19651 |     0.19651 |       974.15 |     0.010898 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.3 sec
|   14 | Accept |     0.19651 |      92.184 |     0.19651 |     0.19651 |    0.0013246 |    0.0011748 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|   15 | Accept |     0.19651 |      87.893 |     0.19651 |     0.19651 |    0.0067415 |   1.9074e-07 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.3 sec
|   16 | Accept |     0.19651 |      110.46 |     0.19651 |     0.19651 |     0.020448 |    1.247e-08 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|   17 | Accept |     0.19651 |      104.12 |     0.19651 |     0.19651 |    0.0016556 |    0.0001784 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|   18 | Accept |     0.19651 |      85.263 |     0.19651 |     0.19651 |    0.0047914 |   2.3289e-06 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|   19 | Accept |     0.19651 |      52.102 |     0.19651 |     0.19651 |       90.015 |   0.00024412 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.3 sec
|   20 | Accept |     0.19651 |      82.238 |     0.19651 |     0.19651 |      0.68775 |   2.7178e-07 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|=====================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |        sigma |       lambda |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|   21 | Accept |     0.19651 |      49.468 |     0.19651 |     0.19651 |       49.073 |   0.00014766 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|   22 | Accept |     0.19651 |      49.183 |     0.19651 |     0.19651 |       25.955 |   8.4946e-05 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|   23 | Accept |     0.19651 |      84.781 |     0.19651 |     0.19651 |     0.002241 |   1.6284e-06 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|   24 | Accept |     0.19651 |      90.023 |     0.19651 |     0.19651 |     0.060661 |   0.00041011 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|   25 | Accept |     0.19651 |      87.349 |     0.19651 |     0.19651 |     0.035771 |    0.0023369 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.3 sec
|   26 | Accept |     0.19651 |      49.932 |     0.19651 |     0.19651 |       713.45 |   3.5177e-08 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|   27 | Accept |     0.19651 |      87.169 |     0.19651 |     0.19651 |     0.012395 |   1.8186e-06 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|   28 | Accept |     0.19651 |       94.87 |     0.19651 |     0.19651 |     0.042872 |    0.0015886 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.2 sec
|   29 | Best   |     0.10795 |      37.932 |     0.10795 |     0.19346 |       1.5886 |   4.9128e-07 |
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 1.1 sec
Evaluation completed in 1.3 sec
|   30 | Accept |     0.19651 |      52.241 |     0.10795 |     0.19356 |       236.64 |   5.0506e-06 |

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

Best observed feasible point:
    sigma       lambda  
    ______    __________

    1.5886    4.9128e-07

Observed objective function value = 0.10795
Estimated objective function value = 0.19356
Function evaluation time = 37.9317

Best estimated feasible point (according to models):
    sigma       lambda  
    ______    __________

    1.5886    4.9128e-07

Estimated objective function value = 0.19356
Estimated function evaluation time = 66.1901
results = 
  BayesianOptimization with properties:

                      ObjectiveFcn: @(z)gather(loss(fitckernel(Ztrain,Ytrain,'KernelScale',z.sigma,'Lambda',z.lambda,'Verbose',0),Ztest,Ytest))
              VariableDescriptions: [1×2 optimizableVariable]
                           Options: [1×1 struct]
                      MinObjective: 0.1079
                   XAtMinObjective: [1×2 table]
             MinEstimatedObjective: 0.1936
          XAtMinEstimatedObjective: [1×2 table]
           NumObjectiveEvaluations: 30
                  TotalElapsedTime: 2.4555e+03
                         NextPoint: [1×2 table]
                            XTrace: [30×2 table]
                    ObjectiveTrace: [30×1 double]
                  ConstraintsTrace: []
                     UserDataTrace: {30×1 cell}
      ObjectiveEvaluationTimeTrace: [30×1 double]
                IterationTimeTrace: [30×1 double]
                        ErrorTrace: [30×1 double]
                  FeasibilityTrace: [30×1 logical]
       FeasibilityProbabilityTrace: [30×1 double]
               IndexOfMinimumTrace: [30×1 double]
             ObjectiveMinimumTrace: [30×1 double]
    EstimatedObjectiveMinimumTrace: [30×1 double]

Возврат наиболее подходящей точки в байесовской модели results с помощью bestPoint функция. Использовать критерий по умолчанию min-visited-upper-confidence-interval, которая определяет наилучшую осуществимую точку как посещаемую точку, которая минимизирует верхний доверительный интервал для значения целевой функции.

zbest = bestPoint(results)
zbest=1×2 table
    sigma       lambda  
    ______    __________

    1.5886    4.9128e-07

Стол zbest содержит оптимальные оценочные значения для 'KernelScale' и 'Lambda' аргументы «имя-значение». Эти значения можно указать при обучении нового оптимизированного классификатора ядра с помощью

Mdl = fitckernel(Ztrain,Ytrain,'KernelScale',zbest.sigma,'Lambda',zbest.lambda)

Для больших массивов процедура оптимизации может занять много времени. Если набор данных слишком велик для выполнения процедуры оптимизации, можно попытаться оптимизировать параметры, используя только частичные данные. Используйте datasample функции и указать 'Replace','false' для выборки данных без замены.

См. также

| | | | | | | |