exponenta event banner

Байесовские функции вывода оптимизации

Что такое байесовская функция вывода оптимизации?

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

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

Встроенные функции вывода

Эти встроенные функции вывода сохраняют результаты оптимизации в файл или в рабочую область.

  • @assignInBase - сохранение результатов после каждой итерации в переменной с именем 'BayesoptResults' в рабочей области. Чтобы выбрать другое имя, передайте SaveVariableName пара имя-значение.

  • @saveToFile - сохранение результатов после каждой итерации в файл с именем 'BayesoptResults.mat' в текущей папке. Чтобы выбрать другое имя или папку, передайте SaveFileName пара имя-значение.

Например, чтобы сохранить результаты после каждой итерации в переменной рабочей области с именем 'BayesIterations',

results = bayesopt(fun,vars,'OutputFcn',@assignInBase, ...
    'SaveVariableName','BayesIterations')

Пользовательские функции вывода

Запись пользовательской функции вывода с сигнатурой

stop = outputfun(results,state)

bayesopt проходит results и state переменных в свою функцию. Функция возвращается stop, для которого установлено значение true для остановки итераций или false для продолжения итераций.

results является объектом класса BayesianOptimization. results содержит имеющуюся на данный момент информацию о вычислениях.

state имеет возможные значения:

  • 'initial'bayesopt собирается начать итерацию.

  • 'iteration'bayesopt только что закончил итерацию.

  • 'done'bayesopt только что закончил свою окончательную итерацию.

Пример см. в разделе Байесовская функция вывода оптимизации.

Байесовская функция вывода оптимизации

В этом примере показано, как использовать пользовательскую функцию вывода с байесовской оптимизацией. Функция вывода останавливает оптимизацию, когда целевая функция, которая является частотой ошибок перекрестной проверки, падает ниже 13%. Функция вывода также отображает время для каждой итерации.

function stop = outputfun(results,state)
persistent h
stop = false;
switch state
    case 'initial'
        h = figure;
    case 'iteration'
        if results.MinObjective < 0.13
            stop = true;
        end
        figure(h)
        tms = results.IterationTimeTrace;
        plot(1:numel(tms),tms')
        xlabel('Iteration Number')
        ylabel('Time for Iteration')
        title('Time for Each Iteration')
        drawnow
end

Целевой функцией является потеря перекрестной проверки классификации KNN ionosphere данные. Загрузите данные и для воспроизводимости задайте случайный поток по умолчанию.

load ionosphere
rng default

Оптимизация по размеру окрестности от 1 до 30 и для трех метрик расстояния.

num = optimizableVariable('n',[1,30],'Type','integer');
dst = optimizableVariable('dst',{'chebychev','euclidean','minkowski'},'Type','categorical');
vars = [num,dst];

Установите раздел перекрестной проверки и целевую функцию. Для воспроизводимости установите значение AcquisitionFunctionName кому 'expected-improvement-plus'. Выполните оптимизацию.

c = cvpartition(351,'Kfold',5);
fun = @(x)kfoldLoss(fitcknn(X,Y,'CVPartition',c,'NumNeighbors',x.n,...
    'Distance',char(x.dst),'NSMethod','exhaustive'));
results = bayesopt(fun,vars,'OutputFcn',@outputfun,...
    'AcquisitionFunctionName','expected-improvement-plus');
|=====================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |            n |          dst |
|      | result |             | runtime     | (observed)  | (estim.)    |              |              |
|=====================================================================================================|
|    1 | Best   |     0.19943 |     0.23067 |     0.19943 |     0.19943 |           24 |    chebychev |
|    2 | Best   |     0.16809 |     0.14758 |     0.16809 |      0.1747 |            9 |    euclidean |
|    3 | Best   |     0.12536 |     0.10547 |     0.12536 |     0.12861 |            3 |    chebychev |

__________________________________________________________
Optimization completed.
Total function evaluations: 3
Total elapsed time: 4.842 seconds
Total objective function evaluation time: 0.48372

Best observed feasible point:
    n       dst   
    _    _________

    3    chebychev

Observed objective function value = 0.12536
Estimated objective function value = 0.12861
Function evaluation time = 0.10547

Best estimated feasible point (according to models):
    n       dst   
    _    _________

    3    chebychev

Estimated objective function value = 0.12861
Estimated function evaluation time = 0.15309

Связанные темы