fitrgp

Соответствуйте модели Gaussian process regression (GPR)

Синтаксис

gprMdl = fitrgp(tbl,ResponseVarName)
gprMdl = fitrgp(tbl,formula)
gprMdl = fitrgp(tbl,y)
gprMdl = fitrgp(X,y)
gprMdl = fitrgp(___,Name,Value)

Описание

пример

gprMdl = fitrgp(tbl,ResponseVarName) возвращается модель Gaussian process regression (GPR) обучила использование выборочных данных в tbl, где ResponseVarName является именем переменной отклика в tbl.

gprMdl = fitrgp(tbl,formula) возвращает модель Gaussian process regression (GPR), обученное использование выборочных данных в tbl, для переменных прогноза и переменных отклика, идентифицированных formula.

gprMdl = fitrgp(tbl,y) возвращает модель GPR для предикторов в таблице tbl и непрерывном векторе отклика y.

пример

gprMdl = fitrgp(X,y) возвращает модель GPR для предикторов X и непрерывный вектор отклика y.

пример

gprMdl = fitrgp(___,Name,Value) возвращает модель GPR для любого из входных параметров в предыдущих синтаксисах, с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value.

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

gprMdl является объектом RegressionGP. Для методов и свойств этого класса, смотрите страницу класса RegressionGP.

Если вы обучаете перекрестную подтвержденную модель, то gprMdl является объектом RegressionPartitionedModel. Для последующего анализа на перекрестном подтвержденном объекте используйте методы класса RegressionPartitionedModel. Для методов этого класса смотрите страницу класса RegressionPartitionedModel.

Примеры

свернуть все

Этот пример использует данные о морском ушке [1], [2], от Репозитория Машинного обучения UCI [3]. Загрузите данные и сохраните их в вашей текущей папке с именем ‘abalone.data’.

Храните данные в table. Отобразите первые семь строк.

tbl = readtable('abalone.data','Filetype','text',...
     'ReadVariableNames',false);
tbl.Properties.VariableNames = {'Sex','Length','Diameter','Height',...
     'WWeight','SWeight','VWeight','ShWeight','NoShellRings'};
tbl(1:7,:)
ans = 

    Sex    Length    Diameter    Height    WWeight    SWeight    VWeight    ShWeight    NoShellRings
    ___    ______    ________    ______    _______    _______    _______    ________    ____________

    'M'    0.455     0.365       0.095      0.514     0.2245      0.101      0.15       15          
    'M'     0.35     0.265        0.09     0.2255     0.0995     0.0485      0.07        7          
    'F'     0.53      0.42       0.135      0.677     0.2565     0.1415      0.21        9          
    'M'     0.44     0.365       0.125      0.516     0.2155      0.114     0.155       10          
    'I'     0.33     0.255        0.08      0.205     0.0895     0.0395     0.055        7          
    'I'    0.425       0.3       0.095     0.3515      0.141     0.0775      0.12        8          
    'F'     0.53     0.415        0.15     0.7775      0.237     0.1415      0.33       20

Набор данных имеет 4 177 наблюдений. Цель состоит в том, чтобы предсказать возраст морского ушка от восьми физических измерений. Последняя переменная, количество звонков интерпретатора показывает возраст морского ушка. Первый предиктор является категориальной переменной. Последняя переменная в таблице является переменной отклика.

Соответствуйте модели GPR с помощью подмножества метода регрессоров для оценки параметра и полностью независимого условного метода для прогноза. Стандартизируйте предикторы.

gprMdl = fitrgp(tbl,'NoShellRings','KernelFunction','ardsquaredexponential',...
      'FitMethod','sr','PredictMethod','fic','Standardize',1)
grMdl = 

  RegressionGP
       PredictorNames: {1x8 cell}
         ResponseName: 'Var9'
    ResponseTransform: 'none'
      NumObservations: 4177
       KernelFunction: 'ARDSquaredExponential'
    KernelInformation: [1x1 struct]
        BasisFunction: 'Constant'
                 Beta: 10.9148
                Sigma: 2.0243
    PredictorLocation: [10x1 double]
       PredictorScale: [10x1 double]
                Alpha: [1000x1 double]
     ActiveSetVectors: [1000x10 double]
        PredictMethod: 'FIC'
        ActiveSetSize: 1000
            FitMethod: 'SR'
      ActiveSetMethod: 'Random'
    IsActiveSetVector: [4177x1 logical]
        LogLikelihood: -9.0013e+03
     ActiveSetHistory: [1x1 struct]
       BCDInformation: []

Предскажите ответы с помощью обученной модели.

ypred = resubPredict(gprMdl);

Постройте истинный ответ и предсказанные ответы.

figure();
plot(tbl.NoShellRings,'r.');
hold on
plot(ypred,'b');
xlabel('x');
ylabel('y');
legend({'data','predictions'},'Location','Best');
axis([0 4300 0 30]);
hold off;

Вычислите потерю регрессии на данных тренировки (потеря перезамены) для обученной модели.

L = resubLoss(gprMdl)
L =

    4.0064

Сгенерируйте выборочные данные.

rng(0,'twister'); % For reproducibility
n = 1000;
x = linspace(-10,10,n)';
y = 1 + x*5e-2 + sin(x)./x + 0.2*randn(n,1);

Соответствуйте модели GPR с помощью линейной основной функции и точного подходящего метода, чтобы оценить параметры. Также используйте точный метод прогноза.

gprMdl = fitrgp(x,y,'Basis','linear',...
      'FitMethod','exact','PredictMethod','exact');

Предскажите ответ, соответствующий строкам x (прогнозы перезамены) использование обученной модели.

ypred = resubPredict(gprMdl);

Постройте истинный ответ с ожидаемыми значениями.

plot(x,y,'b.');
hold on;
plot(x,ypred,'r','LineWidth',1.5);
xlabel('x');
ylabel('y');
legend('Data','GPR predictions');
hold off

Загрузите выборочные данные.

load(fullfile(matlabroot,'examples','stats','gprdata2.mat'))

Данные имеют одну переменную прогноза и непрерывный ответ. Это - моделируемые данные.

Соответствуйте модели GPR с помощью экспоненциальной функции ядра в квадрате с параметрами ядра по умолчанию.

gprMdl1 = fitrgp(x,y,'KernelFunction','squaredexponential');

Теперь, соответствуйте второй модели, где вы задаете начальные значения для параметров ядра.

sigma0 = 0.2;
kparams0 = [3.5, 6.2];
gprMdl2 = fitrgp(x,y,'KernelFunction','squaredexponential',...
     'KernelParameters',kparams0,'Sigma',sigma0);

Вычислите прогнозы перезамены из обеих моделей.

ypred1 = resubPredict(gprMdl1);
ypred2 = resubPredict(gprMdl2);

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

figure();
plot(x,y,'r.');
hold on
plot(x,ypred1,'b');
plot(x,ypred2,'g');
xlabel('x');
ylabel('y');
legend({'data','default kernel parameters',...
'kparams0 = [3.5,6.2], sigma0 = 0.2'},...
'Location','Best');
title('Impact of initial kernel parameter values');
hold off

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

Загрузите выборочные данные.

load(fullfile(matlabroot,'examples','stats','gprdata.mat'))

Существует шесть непрерывных переменных прогноза. Существует 500 наблюдений в обучающем наборе данных и 100 наблюдений в наборе тестовых данных. Это - моделируемые данные.

Соответствуйте модели GPR с помощью экспоненциальной функции ядра в квадрате с отдельной шкалой расстояний для каждого предиктора. Эта функция ковариации задана как:

k(xi,xj|θ)=σf2exp[-12m=1d(xim-xjm)2σm2].

где σm представляет шкалу расстояний для предиктора m, m = 1, 2, ..., d и σf стандартное отклонение сигнала. Неограниченная параметризация θ

θm=журналσm,form=1,2,...,dθd+1=журналσf.

Инициализируйте шкалы расстояний функции ядра в 10 и и шумовых стандартных отклонений сигнала в стандартном отклонении ответа.

sigma0 = std(ytrain);
sigmaF0 = sigma0;
d = size(Xtrain,2);
sigmaM0 = 10*ones(d,1);

Соответствуйте модели GPR с помощью начальных значений параметров ядра. Стандартизируйте предикторы в данных тренировки. Используйте точный подбор кривой и методы прогноза.

gprMdl = fitrgp(Xtrain,ytrain,'Basis','constant','FitMethod','exact',...
'PredictMethod','exact','KernelFunction','ardsquaredexponential',...
'KernelParameters',[sigmaM0;sigmaF0],'Sigma',sigma0,'Standardize',1);

Вычислите потерю регрессии на тестовых данных.

L = loss(gprMdl,Xtest,ytest)
L = 0.6919

Доступ к информации о ядре.

gprMdl.KernelInformation
ans = struct with fields:
                    Name: 'ARDSquaredExponential'
        KernelParameters: [7x1 double]
    KernelParameterNames: {7x1 cell}

Отобразите названия параметра ядра.

gprMdl.KernelInformation.KernelParameterNames
ans = 7x1 cell array
    {'LengthScale1'}
    {'LengthScale2'}
    {'LengthScale3'}
    {'LengthScale4'}
    {'LengthScale5'}
    {'LengthScale6'}
    {'SigmaF'      }

Отобразите параметры ядра.

sigmaM = gprMdl.KernelInformation.KernelParameters(1:end-1,1)
sigmaM = 6×1
104 ×

    0.0004
    0.0007
    0.0004
    4.1731
    0.1018
    0.0056

sigmaF = gprMdl.KernelInformation.KernelParameters(end)
sigmaF = 28.1718
sigma  = gprMdl.Sigma
sigma = 0.8162

Постройте журнал изученных шкал расстояний.

figure()
plot((1:d)',log(sigmaM),'ro-');
xlabel('Length scale number');
ylabel('Log of length scale');

Журнал шкалы расстояний для 4-х и 5-х переменных прогноза высок относительно других. Эти переменные прогноза, кажется, как не влияют на ответ как другие переменные прогноза.

Соответствуйте модели GPR, не используя 4-е и 5-е переменные в качестве переменных прогноза.

X = [Xtrain(:,1:3) Xtrain(:,6)];
sigma0 = std(ytrain);
sigmaF0 = sigma0;
d = size(X,2);
sigmaM0 = 10*ones(d,1);

gprMdl = fitrgp(X,ytrain,'Basis','constant','FitMethod','exact',...
'PredictMethod','exact','KernelFunction','ardsquaredexponential',...
'KernelParameters',[sigmaM0;sigmaF0],'Sigma',sigma0,'Standardize',1);

Вычислите ошибку регрессии на тестовых данных.

xtest = [Xtest(:,1:3) Xtest(:,6)];
L = loss(gprMdl,xtest,ytest)
L = 0.6928

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

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

 ypred = predict(gprMdl,xtest);

Постройте исходный ответ наряду с подходящими значениями.

figure;
plot(ytest,'r');
hold on;
plot(ypred,'b');
legend('True response','GPR predicted values','Location','Best');
hold off

Этот пример показывает, как оптимизировать гиперпараметры автоматически с помощью fitrgp. Пример использует данные gprdata2, которые поставляются с вашим программным обеспечением.

Загрузите данные.

load(fullfile(matlabroot,'examples','stats','gprdata2.mat'))

Данные имеют одну переменную прогноза и непрерывный ответ. Это - моделируемые данные.

Соответствуйте модели GPR с помощью экспоненциальной функции ядра в квадрате с параметрами ядра по умолчанию.

gprMdl1 = fitrgp(x,y,'KernelFunction','squaredexponential');

Найдите гиперпараметры, которые минимизируют пятикратную потерю перекрестной проверки при помощи автоматической гипероптимизации параметров управления.

Для воспроизводимости, набор случайный seed и использование функция приобретения 'expected-improvement-plus'.

rng default
gprMdl2 = fitrgp(x,y,'KernelFunction','squaredexponential',...
    'OptimizeHyperparameters','auto','HyperparameterOptimizationOptions',...
    struct('AcquisitionFunctionName','expected-improvement-plus'));
|======================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |        Sigma |
|      | result |             | runtime     | (observed)  | (estim.)    |              |
|======================================================================================|
|    1 | Best   |     0.29417 |      2.1518 |     0.29417 |     0.29417 |    0.0015045 |
|    2 | Best   |    0.037898 |      1.3153 |    0.037898 |    0.060792 |      0.14147 |
|    3 | Accept |      1.5693 |     0.76112 |    0.037898 |    0.040633 |       25.279 |
|    4 | Accept |     0.29417 |      1.7549 |    0.037898 |    0.037984 |    0.0001091 |
|    5 | Accept |     0.29393 |      1.8182 |    0.037898 |    0.038029 |     0.029932 |
|    6 | Accept |     0.13152 |      1.2091 |    0.037898 |    0.038127 |      0.37127 |
|    7 | Best   |    0.037785 |      1.4368 |    0.037785 |    0.037728 |      0.18116 |
|    8 | Accept |     0.03783 |      1.3877 |    0.037785 |    0.036524 |      0.16251 |
|    9 | Accept |    0.037833 |      1.5439 |    0.037785 |    0.036854 |      0.16159 |
|   10 | Accept |    0.037835 |      1.8267 |    0.037785 |    0.037052 |      0.16072 |
|   11 | Accept |     0.29417 |      1.8249 |    0.037785 |     0.03705 |   0.00038214 |
|   12 | Accept |     0.42256 |      1.0248 |    0.037785 |     0.03696 |       3.2067 |
|   13 | Accept |     0.03786 |      1.3548 |    0.037785 |    0.037087 |      0.15245 |
|   14 | Accept |     0.29417 |      1.8118 |    0.037785 |    0.037043 |    0.0063584 |
|   15 | Accept |     0.42302 |       1.027 |    0.037785 |     0.03725 |       1.2221 |
|   16 | Accept |    0.039486 |      1.2477 |    0.037785 |    0.037672 |      0.10069 |
|   17 | Accept |    0.038591 |      1.3022 |    0.037785 |    0.037687 |      0.12077 |
|   18 | Accept |    0.038513 |       1.334 |    0.037785 |    0.037696 |       0.1227 |
|   19 | Best   |    0.037757 |      1.3904 |    0.037757 |    0.037572 |      0.19621 |
|   20 | Accept |    0.037787 |       1.452 |    0.037757 |    0.037601 |      0.18068 |
|======================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   |        Sigma |
|      | result |             | runtime     | (observed)  | (estim.)    |              |
|======================================================================================|
|   21 | Accept |     0.44917 |     0.90673 |    0.037757 |     0.03766 |       8.7818 |
|   22 | Accept |    0.040201 |      1.2108 |    0.037757 |    0.037601 |     0.075414 |
|   23 | Accept |    0.040142 |      1.1481 |    0.037757 |    0.037607 |     0.087198 |
|   24 | Accept |     0.29417 |      1.8435 |    0.037757 |     0.03758 |    0.0031018 |
|   25 | Accept |     0.29417 |      1.7875 |    0.037757 |    0.037555 |   0.00019545 |
|   26 | Accept |     0.29417 |      1.7721 |    0.037757 |    0.037582 |     0.013608 |
|   27 | Accept |     0.29417 |      1.8143 |    0.037757 |    0.037556 |   0.00076147 |
|   28 | Accept |     0.42162 |      1.0185 |    0.037757 |    0.037854 |       0.6791 |
|   29 | Best   |    0.037704 |      1.3398 |    0.037704 |    0.037908 |       0.2367 |
|   30 | Accept |    0.037725 |      1.4091 |    0.037704 |    0.037881 |      0.21743 |

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

Best observed feasible point:
    Sigma 
    ______

    0.2367

Observed objective function value = 0.037704
Estimated objective function value = 0.037881
Function evaluation time = 1.3398

Best estimated feasible point (according to models):
     Sigma 
    _______

    0.16159

Estimated objective function value = 0.037881
Estimated function evaluation time = 1.3583

Сравните пред - и подгонки постоптимизации.

ypred1 = resubPredict(gprMdl1);
ypred2 = resubPredict(gprMdl2);

figure();
plot(x,y,'r.');
hold on
plot(x,ypred1,'b');
plot(x,ypred2,'k','LineWidth',2);
xlabel('x');
ylabel('y');
legend({'data','Initial Fit','Optimized Fit'},'Location','Best');
title('Impact of Optimization');
hold off

Этот пример использует данные о морском ушке [1], [2], от Репозитория Машинного обучения UCI [3]. Загрузите данные и сохраните их в вашей текущей папке с именем ‘abalone.data’.

Храните данные в table. Отобразите первые семь строк.

tbl = readtable('abalone.data','Filetype','text','ReadVariableNames',false);tbl.Properties.VariableNames = {'Sex','Length','Diameter','Height','WWeight','SWeight','VWeight','ShWeight','NoShellRings'};
tbl(1:7,:)
ans = 

    Sex    Length    Diameter    Height    WWeight    SWeight    VWeight    ShWeight    NoShellRings
    ___    ______    ________    ______    _______    _______    _______    ________    ____________

    'M'    0.455     0.365       0.095      0.514     0.2245      0.101      0.15       15          
    'M'     0.35     0.265        0.09     0.2255     0.0995     0.0485      0.07        7          
    'F'     0.53      0.42       0.135      0.677     0.2565     0.1415      0.21        9          
    'M'     0.44     0.365       0.125      0.516     0.2155      0.114     0.155       10          
    'I'     0.33     0.255        0.08      0.205     0.0895     0.0395     0.055        7          
    'I'    0.425       0.3       0.095     0.3515      0.141     0.0775      0.12        8          
    'F'     0.53     0.415        0.15     0.7775      0.237     0.1415      0.33       20

Набор данных имеет 4 177 наблюдений. Цель состоит в том, чтобы предсказать возраст морского ушка от восьми физических измерений. Последняя переменная, количество звонков интерпретатора показывает возраст морского ушка. Первый предиктор является категориальной переменной. Последняя переменная в таблице является переменной отклика.

Обучите перекрестную подтвержденную модель GPR с помощью 25% данных для валидации.

rng('default') % For reproducibility
cvgprMdl = fitrgp(tbl,'NoShellRings','Standardize',1,'Holdout',0.25);

Вычислите среднюю потерю на моделях использования сгибов, обученных на наблюдениях из сгиба.

kfoldLoss(cvgprMdl)
ans =
   4.6409

Предскажите ответы для данных из сгиба.

ypred = kfoldPredict(cvgprMdl);

Постройте истинные ответы, используемые для тестирования и прогнозов.

figure();
plot(ypred(cvgprMdl.Partition.test));
hold on;
y = table2array(tbl(:,end));
plot(y(cvgprMdl.Partition.test),'r.');
axis([0 1050 0 30]);
xlabel('x')
ylabel('y')
hold off;

Сгенерируйте выборочные данные.

rng(0,'twister'); % For reproducibility
n = 1000;
x = linspace(-10,10,n)';
y = 1 + x*5e-2 + sin(x)./x + 0.2*randn(n,1);

Задайте экспоненциальную функцию ядра в квадрате как пользовательскую функцию ядра.

Можно вычислить экспоненциальную функцию ядра в квадрате как

k(xi,xj|θ)=σf2exp(-12(xi-xj)T(xi-xj)σl2),

где σf стандартное отклонение сигнала, σl шкала расстояний. Оба σf и σl должно быть больше, чем нуль. Это условие может быть осуществлено неограниченной параметризацией, σl=exp(θ(1)) и σf=exp(θ(2)), для некоторого неограниченного вектора параметризации θ.

Следовательно, можно задать экспоненциальную функцию ядра в квадрате как пользовательскую функцию ядра можно следующим образом:

kfcn = @(XN,XM,theta) (exp(theta(2))^2)*exp(-(pdist2(XN,XM).^2)/(2*exp(theta(1))^2));

Здесь pdist2(XN,XM).^2 вычисляет матрицу расстояния.

Соответствуйте модели GPR с помощью пользовательской функции ядра, kfcn. Задайте начальные значения параметров ядра (Поскольку вы используете пользовательскую функцию ядра, необходимо обеспечить начальные значения для неограниченного вектора параметризации, theta).

theta0 = [1.5,0.2];
gprMdl = fitrgp(x,y,'KernelFunction',kfcn,'KernelParameters',theta0);

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

Вычислите потерю перезамены для этой модели.

L = resubLoss(gprMdl)
L = 0.0391

Соответствуйте модели GPR с помощью встроенной экспоненциальной опции функции ядра в квадрате. Задайте начальные значения параметров ядра (Поскольку вы используете встроенную пользовательскую функцию ядра и задающий начальные значения параметров, необходимо обеспечить начальные значения для стандартного отклонения сигнала и шкалы (шкал) расстояний непосредственно).

sigmaL0 = exp(1.5);
sigmaF0 = exp(0.2);
gprMdl2 = fitrgp(x,y,'KernelFunction','squaredexponential','KernelParameters',[sigmaL0,sigmaF0]);

Вычислите потерю перезамены для этой модели.

L2 = resubLoss(gprMdl2)
L2 = 0.0391

Два значения потерь эквивалентны ожидаемый.

Обучите модель GPR на сгенерированных данных со многими предикторами. Задайте начальный размер шага для оптимизатора LBFGS.

Установите seed и тип генератора случайных чисел для воспроизводимости результатов.

rng(0,'twister'); % For reproducibility 

Сгенерируйте выборочные данные с 300 наблюдениями и 3 000 предикторов, где переменная отклика зависит от 4-х, 7-х, и 13-х предикторов.

N = 300;
P = 3000;
X = rand(N,P);
y = cos(X(:,7)) + sin(X(:,4).*X(:,13)) + 0.1*randn(N,1);

Установите начальные значения для параметров ядра.

sigmaL0 = sqrt(P)*ones(P,1); % Length scale for predictors
sigmaF0 = 1; % Signal standard deviation

Установите начальное шумовое стандартное отклонение на 1.

sigmaN0 = 1;

Specify 1e-2 as допуск завершения к относительной норме градиента.

opts = statset('fitrgp');
opts.TolFun = 1e-2;

Соответствуйте модели GPR с помощью начальных значений параметров ядра, начального шумового стандартного отклонения, и автоматическое определение уместности (ARD) придало экспоненциальной функции ядра квадратную форму.

Задайте начальный размер шага как 1 для определения начального приближения Гессиана для оптимизатора LBFGS.

gpr = fitrgp(X,y,'KernelFunction','ardsquaredexponential','Verbose',1, ...
    'Optimizer','lbfgs','OptimizerOptions',opts, ...
    'KernelParameters',[sigmaL0;sigmaF0],'Sigma',sigmaN0,'InitialStepSize',1);
o Parameter estimation: FitMethod = Exact, Optimizer = lbfgs

 o Solver = LBFGS, HessianHistorySize = 15, LineSearchMethod = weakwolfe

|====================================================================================================|
|   ITER   |   FUN VALUE   |  NORM GRAD  |  NORM STEP  |  CURV  |    GAMMA    |    ALPHA    | ACCEPT |
|====================================================================================================|
|        0 |  3.004966e+02 |   2.569e+02 |   0.000e+00 |        |   3.893e-03 |   0.000e+00 |   YES  |
|        1 |  9.525779e+01 |   1.281e+02 |   1.003e+00 |    OK  |   6.913e-03 |   1.000e+00 |   YES  |
|        2 |  3.972026e+01 |   1.647e+01 |   7.639e-01 |    OK  |   4.718e-03 |   5.000e-01 |   YES  |
|        3 |  3.893873e+01 |   1.073e+01 |   1.057e-01 |    OK  |   3.243e-03 |   1.000e+00 |   YES  |
|        4 |  3.859904e+01 |   5.659e+00 |   3.282e-02 |    OK  |   3.346e-03 |   1.000e+00 |   YES  |
|        5 |  3.748912e+01 |   1.030e+01 |   1.395e-01 |    OK  |   1.460e-03 |   1.000e+00 |   YES  |
|        6 |  2.028104e+01 |   1.380e+02 |   2.010e+00 |    OK  |   2.326e-03 |   1.000e+00 |   YES  |
|        7 |  2.001849e+01 |   1.510e+01 |   9.685e-01 |    OK  |   2.344e-03 |   1.000e+00 |   YES  |
|        8 | -7.706109e+00 |   8.340e+01 |   1.125e+00 |    OK  |   5.771e-04 |   1.000e+00 |   YES  |
|        9 | -1.786074e+01 |   2.323e+02 |   2.647e+00 |    OK  |   4.217e-03 |   1.250e-01 |   YES  |
|       10 | -4.058422e+01 |   1.972e+02 |   6.796e-01 |    OK  |   7.035e-03 |   1.000e+00 |   YES  |
|       11 | -7.850209e+01 |   4.432e+01 |   8.335e-01 |    OK  |   3.099e-03 |   1.000e+00 |   YES  |
|       12 | -1.312162e+02 |   3.334e+01 |   1.277e+00 |    OK  |   5.432e-02 |   1.000e+00 |   YES  |
|       13 | -2.005064e+02 |   9.519e+01 |   2.828e+00 |    OK  |   5.292e-03 |   1.000e+00 |   YES  |
|       14 | -2.070150e+02 |   1.898e+01 |   1.641e+00 |    OK  |   6.817e-03 |   1.000e+00 |   YES  |
|       15 | -2.108086e+02 |   3.793e+01 |   7.685e-01 |    OK  |   3.479e-03 |   1.000e+00 |   YES  |
|       16 | -2.122920e+02 |   7.057e+00 |   1.591e-01 |    OK  |   2.055e-03 |   1.000e+00 |   YES  |
|       17 | -2.125610e+02 |   4.337e+00 |   4.818e-02 |    OK  |   1.974e-03 |   1.000e+00 |   YES  |
|       18 | -2.130162e+02 |   1.178e+01 |   8.891e-02 |    OK  |   2.856e-03 |   1.000e+00 |   YES  |
|       19 | -2.139378e+02 |   1.933e+01 |   2.371e-01 |    OK  |   1.029e-02 |   1.000e+00 |   YES  |

|====================================================================================================|
|   ITER   |   FUN VALUE   |  NORM GRAD  |  NORM STEP  |  CURV  |    GAMMA    |    ALPHA    | ACCEPT |
|====================================================================================================|
|       20 | -2.151111e+02 |   1.550e+01 |   3.015e-01 |    OK  |   2.765e-02 |   1.000e+00 |   YES  |
|       21 | -2.173046e+02 |   5.856e+00 |   6.537e-01 |    OK  |   1.414e-02 |   1.000e+00 |   YES  |
|       22 | -2.201781e+02 |   8.918e+00 |   8.484e-01 |    OK  |   6.381e-03 |   1.000e+00 |   YES  |
|       23 | -2.288858e+02 |   4.846e+01 |   2.311e+00 |    OK  |   2.661e-03 |   1.000e+00 |   YES  |
|       24 | -2.392171e+02 |   1.190e+02 |   6.283e+00 |    OK  |   8.113e-03 |   1.000e+00 |   YES  |
|       25 | -2.511145e+02 |   1.008e+02 |   1.198e+00 |    OK  |   1.605e-02 |   1.000e+00 |   YES  |
|       26 | -2.742547e+02 |   2.207e+01 |   1.231e+00 |    OK  |   3.191e-03 |   1.000e+00 |   YES  |
|       27 | -2.849931e+02 |   5.067e+01 |   3.660e+00 |    OK  |   5.184e-03 |   1.000e+00 |   YES  |
|       28 | -2.899797e+02 |   2.068e+01 |   1.162e+00 |    OK  |   6.270e-03 |   1.000e+00 |   YES  |
|       29 | -2.916723e+02 |   1.816e+01 |   3.213e-01 |    OK  |   1.415e-02 |   1.000e+00 |   YES  |
|       30 | -2.947674e+02 |   6.965e+00 |   1.126e+00 |    OK  |   6.339e-03 |   1.000e+00 |   YES  |
|       31 | -2.962491e+02 |   1.349e+01 |   2.352e-01 |    OK  |   8.999e-03 |   1.000e+00 |   YES  |
|       32 | -3.004921e+02 |   1.586e+01 |   9.880e-01 |    OK  |   3.940e-02 |   1.000e+00 |   YES  |
|       33 | -3.118906e+02 |   1.889e+01 |   3.318e+00 |    OK  |   1.213e-01 |   1.000e+00 |   YES  |
|       34 | -3.189215e+02 |   7.086e+01 |   3.070e+00 |    OK  |   8.095e-03 |   1.000e+00 |   YES  |
|       35 | -3.245557e+02 |   4.366e+00 |   1.397e+00 |    OK  |   2.718e-03 |   1.000e+00 |   YES  |
|       36 | -3.254613e+02 |   3.751e+00 |   6.546e-01 |    OK  |   1.004e-02 |   1.000e+00 |   YES  |
|       37 | -3.262823e+02 |   4.011e+00 |   2.026e-01 |    OK  |   2.441e-02 |   1.000e+00 |   YES  |
|       38 | -3.325606e+02 |   1.773e+01 |   2.427e+00 |    OK  |   5.234e-02 |   1.000e+00 |   YES  |
|       39 | -3.350374e+02 |   1.201e+01 |   1.603e+00 |    OK  |   2.674e-02 |   1.000e+00 |   YES  |

|====================================================================================================|
|   ITER   |   FUN VALUE   |  NORM GRAD  |  NORM STEP  |  CURV  |    GAMMA    |    ALPHA    | ACCEPT |
|====================================================================================================|
|       40 | -3.379112e+02 |   5.280e+00 |   1.393e+00 |    OK  |   1.177e-02 |   1.000e+00 |   YES  |
|       41 | -3.389136e+02 |   3.061e+00 |   7.121e-01 |    OK  |   2.935e-02 |   1.000e+00 |   YES  |
|       42 | -3.401070e+02 |   4.094e+00 |   6.224e-01 |    OK  |   3.399e-02 |   1.000e+00 |   YES  |
|       43 | -3.436291e+02 |   8.833e+00 |   1.707e+00 |    OK  |   5.231e-02 |   1.000e+00 |   YES  |
|       44 | -3.456295e+02 |   5.891e+00 |   1.424e+00 |    OK  |   3.772e-02 |   1.000e+00 |   YES  |
|       45 | -3.460069e+02 |   1.126e+01 |   2.580e+00 |    OK  |   3.907e-02 |   1.000e+00 |   YES  |
|       46 | -3.481756e+02 |   1.546e+00 |   8.142e-01 |    OK  |   1.565e-02 |   1.000e+00 |   YES  |

         Infinity norm of the final gradient = 1.546e+00
              Two norm of the final step     = 8.142e-01, TolX   = 1.000e-12
Relative infinity norm of the final gradient = 6.016e-03, TolFun = 1.000e-02
EXIT: Local minimum found.

o Alpha estimation: PredictMethod = Exact

Поскольку модель GPR использует ядро ARD со многими предикторами, использование приближения LBFGS к Гессиану является большей памятью, эффективной, чем хранение полной матрицы Гессиана. Кроме того, использование начального размера шага, чтобы определить начальное приближение Гессиана может помочь ускорить оптимизацию.

Найдите веса предиктора путем взятия экспоненциала отрицательных изученных шкал расстояний. Нормируйте веса.

sigmaL = gpr.KernelInformation.KernelParameters(1:end-1); % Learned length scales
weights = exp(-sigmaL); % Predictor weights
weights = weights/sum(weights); % Normalized predictor weights

Постройте нормированные веса предиктора.

figure;
semilogx(weights,'ro');
xlabel('Predictor index');
ylabel('Predictor weight');

Обученная модель GPR присваивает самые большие веса 4-м, 7-м, и 13-м предикторам. Несоответствующие предикторы имеют веса близко к нулю.

Входные параметры

свернуть все

Выборочные данные раньше обучали модель, заданную как table. Каждая строка tbl соответствует одному наблюдению, и каждый столбец соответствует одной переменной. tbl содержит переменные прогноза, и опционально он может также содержать один столбец для переменной отклика. Многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов не позволены.

  • Если tbl содержит переменную отклика, и вы хотите использовать все остающиеся переменные в качестве предикторов, затем задать переменную отклика с помощью ResponseVarName.

  • Если tbl содержит переменную отклика, и вы хотите использовать только подмножество предикторов в обучении модель, затем задать переменную отклика и переменные прогноза с помощью formula.

  • Если tbl не содержит переменную отклика, то задайте переменную отклика с помощью y. Длина переменной отклика и количество строк в tbl должны быть равными.

Для получения дополнительной информации о типе данных table смотрите table.

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

Типы данных: table

Имя переменной отклика, заданное как имя переменной в tbl. Необходимо задать ResponseVarName как вектор символов или представить скаляр в виде строки. Например, если переменная отклика, y хранится в tbl (как tbl.y), то задают его как 'y'. В противном случае программное обеспечение обрабатывает все столбцы tbl, включая y, как предикторы когда обучение модель.

Типы данных: char | string

Переменные отклика и переменные прогноза, чтобы использовать в образцовом обучении, заданном как вектор символов или представить скаляр в виде строки в форме 'y~x1+x2+x3'. В этой форме y представляет переменную отклика; x1, x2, x3 представляет переменные прогноза, чтобы использовать в обучении модель.

Используйте формулу, если вы хотите задать подмножество переменных в tbl как предикторы, чтобы использовать когда обучение модель. Если вы задаете формулу, то любые переменные, которые не появляются в formula, не используются, чтобы обучить модель.

Формула не указывает на форму BasisFunction.

Пример: 'PetalLength~PetalWidth+Species' идентифицирует переменную PetalLength как переменную отклика, и PetalWidth и Species как переменные прогноза.

Типы данных: char | string

Данные о предикторе для модели GPR, заданной как n-by-d матрица. n является количеством наблюдений (строки), и d является количеством предикторов (столбцы).

Длина y и количество строк X должны быть равными.

Чтобы задать имена предикторов в порядке их внешнего вида в X, используйте аргумент пары "имя-значение" PredictorNames.

Типы данных: double

Данные об ответе для модели GPR, заданной как n-by-1 вектор. Можно не использовать y, если вы обеспечиваете данные тренировки tbl, который также включает y. В этом случае используйте ResponseVarName, чтобы идентифицировать переменную отклика или использовать formula, чтобы идентифицировать переменные отклика и переменные прогноза.

Типы данных: double

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'FitMethod','sr','BasisFunction','linear','ActiveSetMethod','sgma','PredictMethod',fic' обучает модель GPR с помощью подмножества метода приближения регрессоров для оценки параметра, использует линейную основную функцию, использует разреженное жадное матричное приближение для активного выбора и полностью независимый условный метод приближения для прогноза.

Примечание

Вы не можете использовать аргумент пары "имя-значение" перекрестной проверки наряду с аргументом пары "имя-значение" 'OptimizeHyperparameters'. Можно изменить перекрестную проверку для 'OptimizeHyperparameters' только при помощи аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'.

Подбор кривой

свернуть все

Метод, чтобы оценить параметры модели GPR, заданной как пара, разделенная запятой, состоящая из 'FitMethod' и одно из следующих.

Подходящий методОписание
'none'Никакая оценка, используйте начальные значения параметров в качестве известных значений параметров.
'exact'Точная Гауссова регрессия процесса. Значение по умолчанию, если n ≤ 2000, где n является количеством наблюдений.
'sd'Подмножество приближения точек данных. Значение по умолчанию, если n> 2000, где n является количеством наблюдений.
'sr'Подмножество приближения регрессоров.
'fic'Полностью независимое условное приближение.

Пример: 'FitMethod','fic'

Явное основание в модели GPR, заданной как пара, разделенная запятой, состоящая из 'BasisFunction' и одно из следующих. Если n является количеством наблюдений, основная функция добавляет термин H *β к модели, где H является базисной матрицей, и β является p-by-1 вектор базисных коэффициентов.

Явное основаниеБазисная матрица
'none'Пустая матрица.
'constant'

H=1

(n-by-1 вектор 1 с, где n является количеством наблюдений),

'linear'

H=[1,X]

'pureQuadratic'

H=[1,X,X2],

где

X2=[x112x122x1d2x212x222x2d2xn12xn22xnd2].

Указатель на функцию

Указатель на функцию, hfcn, который fitrgp вызывает как:

H=hfcn(X),

где X является n-by-d матрица предикторов, и H является n-by-p матрица основных функций.

Пример: 'BasisFunction','pureQuadratic'

Типы данных: char | string | function_handle

Начальное значение коэффициентов для явного основания, заданного как пара, разделенная запятой, состоящая из 'Beta' и p-by-1 вектор, где p является количеством столбцов в базисной матрице H.

Базисная матрица зависит от выбора явной основной функции можно следующим образом (также смотрите BasisFunction).

fitrgp использует содействующие начальные значения в качестве известных содействующих значений, только когда FitMethod является 'none'.

Типы данных: double

Начальное значение для шумового стандартного отклонения Гауссовой модели процесса, заданной как пара, разделенная запятой, состоящая из 'Sigma' и значения положительной скалярной величины.

Пример: 'Sigma',2

Типы данных: double

Постоянное значение Sigma для шумового стандартного отклонения Гауссовой модели процесса, заданной как логический скаляр. Когда ConstantSigma является true, fitrgp не оптимизирует значение Sigma, но вместо этого принимает начальное значение как значение в течение его вычислений.

Пример: 'ConstantSigma',true

Типы данных: логический

Нижняя граница на шумовом стандартном отклонении, заданном как пара, разделенная запятой, состоящая из 'SigmaLowerBound' и значения положительной скалярной величины.

Пример: 'SigmaLowerBound',0.02

Типы данных: double

Категориальный список предикторов, заданный как пара, разделенная запятой, состоящая из 'CategoricalPredictors' и одно из этих значений:

ЗначениеОписание
Вектор положительных целых чиселЗапись в векторе является индексным значением, соответствующим столбцу данных о предикторе (X или tbl), который содержит категориальную переменную.
Логический векторЗапись true означает, что соответствующий столбец данных о предикторе (X или tbl) является категориальной переменной.
Символьная матрицаКаждая строка матрицы является именем переменной прогноза. Имена должны совпадать с записями в PredictorNames. Заполните имена дополнительными пробелами, таким образом, каждая строка символьной матрицы имеет ту же длину.
Массив строк или массив ячеек из символьных векторовКаждый элемент в массиве является именем переменной прогноза. Имена должны совпадать с записями в PredictorNames.
всеВсе предикторы являются категориальными.

По умолчанию, если данные о предикторе находятся в таблице (tbl), fitrgp принимает, что переменная является категориальной, если это содержит логические значения, категориальные значения, массив строк или массив ячеек из символьных векторов. Если данные о предикторе являются матрицей (X), fitrgp принимает, что все предикторы непрерывны. Чтобы идентифицировать любые категориальные предикторы, когда данные будут матрицей, используйте аргумент пары "имя-значение" 'CategoricalPredictors'.

Пример: 'CategoricalPredictors','all'

Типы данных: single | double | logical | char | string | cell

Индикатор, чтобы стандартизировать данные, заданные как пара, разделенная запятой, состоящая из 'Standardize' и логического значения.

Если вы устанавливаете 'Standardize',1, то центры программного обеспечения и масштабируют каждый столбец данных о предикторе, столбцом среднее и стандартное отклонение, соответственно. Программное обеспечение не стандартизирует данные, содержавшиеся в фиктивных переменных столбцах, которые это генерирует для категориальных предикторов.

Пример: 'Standardize',1

Пример: 'Standardize',true

Типы данных: логический

Стандартное отклонение регуляризации для разреженного подмножества методов регрессоров ('sr') и полностью независимое условное выражение ('fic'), заданный как пара, разделенная запятой, состоящая из 'Regularization' и значения положительной скалярной величины.

Пример: 'Regularization',0.2

Типы данных: double

Метод для вычисления логарифмической вероятности и градиента для оценки параметра с помощью подмножества регрессоров ('sr') и полностью независимое условное выражение ('fic') методы приближения, заданные как пара, разделенная запятой, состоящая из 'ComputationMethod' и одно из следующих.

  • qr Используйте основанный на QR-факторизации подход, эта опция обеспечивает лучшую точность.

  • V Используйте подход V-method-based. Эта опция обеспечивает более быстрое вычисление логарифмических градиентов вероятности.

Пример: 'ComputationMethod','v'

Ядро (ковариация) функция

свернуть все

Форма функции ковариации, заданной как пара, разделенная запятой, состоящая из 'KernelFunction' и одно из следующих.

ФункцияОписание
'exponential'Экспоненциальное ядро.
'squaredexponential'Экспоненциальное ядро в квадрате.
'matern32'Ядро Matern с параметром 3/2.
'matern52'Ядро Matern с параметром 5/2.
'rationalquadratic'Рациональное квадратичное ядро.
'ardexponential'Экспоненциальное ядро с отдельной шкалой расстояний на предиктор.
'ardsquaredexponential'Экспоненциальное ядро в квадрате с отдельной шкалой расстояний на предиктор.
'ardmatern32'Ядро Matern с параметром 3/2 и отдельная шкала расстояний на предиктор.
'ardmatern52'Ядро Matern с параметром 5/2 и отдельная шкала расстояний на предиктор.
'ardrationalquadratic'Рациональное квадратичное ядро с отдельной шкалой расстояний на предиктор.
Указатель на функциюУказатель на функцию, который может быть назван как это:
Kmn = kfcn(Xm,Xn,theta)
где Xm является m-by-d матрица, Xn является n-by-d матрица, и Kmn является m-by-n матрица продуктов ядра, таким образом, что Kmn (i, j) является продуктом ядра между Xm (i, :) и Xn (j, :).
theta является r-by-1 неограниченный вектор параметра для kfcn.

Для получения дополнительной информации о функциях ядра смотрите Ядро (Ковариация) Опции Функции.

Пример: 'KernelFunction','matern32'

Типы данных: char | string | function_handle

Начальные значения для параметров ядра, заданных как пара, разделенная запятой, состоящая из 'KernelParameters' и вектора. Размер вектора и значений зависит от формы функции ковариации, заданной аргументом пары "имя-значение" KernelFunction.

'KernelFunction''KernelParameters'
'exponential' или 'squaredexponential' или 'matern32' или 'matern52'2 1 векторный phi, где phi(1) содержит шкалу расстояний и phi(2), содержит стандартное отклонение сигнала.
Начальное значение по умолчанию параметра шкалы расстояний является средним значением стандартных отклонений предикторов, и стандартное отклонение сигнала является стандартным отклонением ответов, разделенных на квадратный корень из 2. Таким образом,
phi = [mean(std(X));std(y)/sqrt(2)]
'rationalquadratic'Векторный phi 3 на 1, где phi(1) содержит шкалу расстояний, phi(2), содержит параметр смеси шкалы, и phi(3) содержит стандартное отклонение сигнала.
Начальное значение по умолчанию параметра шкалы расстояний является средним значением стандартных отклонений предикторов, и стандартное отклонение сигнала является стандартным отклонением ответов, разделенных на квадратный корень из 2. Начальное значение по умолчанию для параметра смеси шкалы равняется 1. Таким образом,
phi = [mean(std(X));1;std(y)/sqrt(2)]
'ardexponential' или 'ardsquaredexponential' или 'ardmatern32' или 'ardmatern52'(d +1)-by-1 векторный phi, где phi(i) содержит шкалу расстояний для предиктора i и phi(d+1), содержит стандартное отклонение сигнала. d является количеством переменных прогноза.
Начальное значение по умолчанию параметров шкалы расстояний является стандартными отклонениями предикторов, и стандартное отклонение сигнала является стандартным отклонением ответов, разделенных на квадратный корень из 2. Таким образом,
phi = [std(X)';std(y)/sqrt(2)]
'ardrationalquadratic'(d +2)-by-1 векторный phi, где phi(i) содержит шкалу расстояний для предиктора i, phi(d+1), содержит параметр смеси шкалы, и phi(d+2) содержит стандартное отклонение сигнала.
Начальное значение по умолчанию параметров шкалы расстояний является стандартными отклонениями предикторов, и стандартное отклонение сигнала является стандартным отклонением ответов, разделенных на квадратный корень из 2. Начальное значение по умолчанию для параметра смеси шкалы равняется 1. Таким образом,
phi = [std(X)';1;std(y)/sqrt(2)]
Указатель на функциюr-by-1 вектор как начальное значение неограниченного вектора параметра phi для пользовательского ядра функционирует kfcn.
Когда KernelFunction является указателем на функцию, необходимо предоставить начальные значения для параметров ядра.

Для получения дополнительной информации о функциях ядра смотрите Ядро (Ковариация) Опции Функции.

Пример: 'KernelParameters',theta

Типы данных: double

Метод для вычисления разделяет расстояния знаками препинания, чтобы выполнить встроенные функции ядра, заданные как пара, разделенная запятой, состоящая из 'DistanceMethod' и или 'fast' или 'accurate'. fitrgp вычисляет (xy)2 как x2+y22*x*y когда вы выбираете опцию fast и как (xy)2 когда вы выбираете опцию accurate.

Пример: 'DistanceMethod','accurate'

Активный выбор набора

свернуть все

Наблюдения в активном наборе, заданном как пара, разделенная запятой, состоящая из 'ActiveSet' и m-by-1 вектор целых чисел в пределах от 1 к n (mn) или логический вектор длины n по крайней мере с одним элементом true. n является общим количеством наблюдений в данных тренировки.

fitrgp использует наблюдения, обозначенные ActiveSet, чтобы обучить модель GPR. Активный набор не может иметь дублирующихся элементов.

Если вы предоставляете ActiveSet, то:

  • fitrgp не использует ActiveSetSize и ActiveSetMethod.

  • Вы не можете выполнить перекрестную проверку на этой модели.

Типы данных: double | logical

Размер активного набора для разреженных методов ('sd', 'sr', 'fic'), заданный как пара, разделенная запятой, состоящая из 'ActiveSetSize' и целочисленного m, 1 ≤ mn, где n является количеством наблюдений.

Значением по умолчанию является min (1000, n), когда FitMethod является 'sr' или 'fic', и min (2000, n), в противном случае.

Пример: 'ActiveSetSize',100

Типы данных: double

Активный метод выбора набора, заданный как пара, разделенная запятой, состоящая из 'ActiveSetMethod' и одно из следующих.

МетодОписание
'random'Случайный выбор
'sgma'Разреженное жадное матричное приближение
'entropy'Дифференциальный основанный на энтропии выбор
'likelihood'Подмножество регрессоров регистрирует основанный на вероятности выбор

Все активные методы выбора набора (кроме 'random') требуют устройства хранения данных n-by-m матрица, где m является размером активного набора, и n является количеством наблюдений.

Пример: 'ActiveSetMethod','entropy'

Случайный поисковый размер набора на жадное включение для активного выбора набора, заданного как пара, разделенная запятой, состоящая из 'RandomSearchSetSize' и целочисленного значения.

Пример: 'RandomSearchSetSize',30

Типы данных: double

Относительный допуск к завершению активного выбора набора, заданного как пара, разделенная запятой, состоящая из 'ToleranceActiveset' и значения положительной скалярной величины.

Пример: 'ToleranceActiveset',0.0002

Типы данных: double

Количество повторений для чередованного активного выбора набора и оценки параметра, когда ActiveSetMethod не является 'random', заданный как пара, разделенная запятой, состоящая из 'NumActiveSetRepeats' и целочисленного значения.

Пример: 'NumActiveSetRepeats',5

Типы данных: double

Предсказание

свернуть все

Метод раньше делал прогнозы из Гауссовой модели процесса, учитывая параметры, заданные как пара, разделенная запятой, состоящая из 'PredictMethod' и одно из следующих.

МетодОписание
'exact'Точный Гауссов метод регрессии процесса. Значение по умолчанию, если n ≤ 10000.
'bcd'Блокируйте Координатный Спуск. Значение по умолчанию, если n> 10000.
'sd'Подмножество приближения Точек данных.
'sr'Подмножество приближения Регрессоров.
'fic'Полностью Независимое Условное приближение.

Пример: 'PredictMethod','bcd'

Размер блока для блока координирует метод спуска ('bcd'), заданный как пара, разделенная запятой, состоящая из 'BlockSizeBCD' и целого числа в диапазоне от 1 до n, где n является количеством наблюдений.

Пример: 'BlockSizeBCD',1500

Типы данных: double

Количество жадных выборов для блока координирует метод спуска ('bcd'), заданный как пара, разделенная запятой, состоящая из 'NumGreedyBCD' и целого числа в диапазоне от 1 до BlockSizeBCD.

Пример: 'NumGreedyBCD',150

Типы данных: double

Относительный допуск на норме градиента для завершения блока координирует метод спуска ('bcd') итерации, заданные как пара, разделенная запятой, состоящая из 'ToleranceBCD' и положительной скалярной величины.

Пример: 'ToleranceBCD',0.002

Типы данных: double

Абсолютный допуск на размере шага для завершения блока координирует метод спуска ('bcd') итерации, заданные как пара, разделенная запятой, состоящая из 'StepToleranceBCD' и положительной скалярной величины.

Пример: 'StepToleranceBCD',0.002

Типы данных: double

Максимальное количество блока координирует метод спуска ('bcd') итерации, заданные как пара, разделенная запятой, состоящая из 'IterationLimitBCD' и целочисленного значения.

Пример: 'IterationLimitBCD',10000

Типы данных: double

Оптимизация

свернуть все

Оптимизатор, чтобы использовать для оценки параметра, заданной как пара, разделенная запятой, состоящая из 'Optimizer' и одно из значений в этой таблице.

ЗначениеОписание
'quasinewton'Плотный, симметричный rank-1-based, приближение квазиньютона к Гессиану
'lbfgs'Основанное на LBFGS приближение квазиньютона к Гессиану
'fminsearch'Неограниченная нелинейная оптимизация с помощью симплексного метода поиска Lagarias и др. [5]
'fminunc'Неограниченная нелинейная оптимизация (требует лицензии Optimization Toolbox™),
'fmincon'Ограниченная нелинейная оптимизация (требует лицензии Optimization Toolbox),

Для получения дополнительной информации об оптимизаторах см. Алгоритмы.

Пример: 'Optimizer','fmincon'

Опции для оптимизатора вы выбираете использование аргумента пары "имя-значение" Optimizer, заданного как пара, разделенная запятой, состоящая из 'OptimizerOptions' и структуры или объекта, созданного optimset, statset('fitrgp') или optimoptions.

ОптимизаторСоздайте опции оптимизатора Используя
'fminsearch'optimset (структура)
'quasinewton' или 'lbfgs'statset('fitrgp') (структура)
'fminunc' или 'fmincon'optimoptions (объект)

Опции по умолчанию зависят от типа оптимизатора.

Пример: 'OptimizerOptions',opt

Начальный размер шага, заданный как пара, разделенная запятой, состоящая из 'InitialStepSize' и действительной положительной скалярной величины или 'auto'.

'InitialStepSize' является аппроксимированным максимальным абсолютным значением первого шага оптимизации, когда оптимизатором является 'quasinewton' или 'lbfgs'. Начальный размер шага может определить начальное приближение Гессиана во время оптимизации.

По умолчанию fitrgp не использует начальный размер шага, чтобы определить начальное приближение Гессиана. Чтобы использовать начальный размер шага, установите значение для аргумента пары "имя-значение" 'InitialStepSize' или укажите, что 'InitialStepSize','auto', чтобы иметь fitrgp определяет значение автоматически. Для получения дополнительной информации о 'auto' см. Алгоритмы.

Пример: 'InitialStepSize','auto'

Перекрестная проверка

свернуть все

Индикатор для перекрестной проверки, заданной как пара, разделенная запятой, состоящая из 'CrossVal' и или 'off' или 'on'. Если это - 'on', то fitrgp возвращает модель GPR, перекрестную подтвержденную с 10 сгибами.

Можно использовать один из KFold, Holdout, аргументов пары "имя-значение" Leaveout или CVPartition, чтобы изменить настройки перекрестной проверки по умолчанию. Можно использовать только одну из этих пар "имя-значение" за один раз.

Как альтернатива, можно использовать метод crossval для модели.

Пример: 'CrossVal','on'

Случайный раздел для стратифицированного k - сворачивает перекрестную проверку, заданную как пара, разделенная запятой, состоящая из 'CVPartition' и объекта cvpartition.

Пример: 'CVPartition',cvp использует случайный раздел, заданный cvp.

Если вы задаете CVPartition, то вы не можете задать Holdout, KFold или Leaveout.

Часть данных, чтобы использовать для тестирования в валидации затяжки, заданной как пара, разделенная запятой, состоящая из 'Holdout' и скалярного значения в диапазоне от 0 до 1. Если вы задаете 'Holdout',p, то программное обеспечение:
1. Случайным образом резервы вокруг p *100% данных как данные о валидации и train модель с помощью остальной части данных
2. Хранит компактную, обученную модель в cvgprMdl.Trained.

Пример: 'Holdout', 0.3 использует 30% данных для тестирования и 70% данных для обучения.

Если вы задаете Holdout, то вы не можете задать CVPartition, KFold или Leaveout.

Типы данных: double

Количество сгибов, чтобы использовать в перекрестной подтвержденной модели GPR, заданной как пара, разделенная запятой, состоящая из 'KFold' и положительного целочисленного значения. KFold должен быть больше, чем 1. Если вы задаете 'KFold',k затем программное обеспечение:
1. Случайным образом делит данные в наборы k.
2. Для каждого набора, резервирует набор как тестовые данные и обучает модель с помощью другого k – 1 набор.
3. Хранит k компактные, обученные модели в ячейках k-by-1 массив ячеек в cvgprMdl.Trained.

Пример: 'KFold',5 использует 5 сгибов в перекрестной проверке. Таким образом, для каждого сгиба, использование, которое сворачивается как тестовые данные и обучает модель на остающихся 4 сгибах.

Если вы задаете KFold, то вы не можете задать CVPartition, Holdout или Leaveout.

Типы данных: double

Индикатор для перекрестной проверки "пропускает один", заданный как пара, разделенная запятой, состоящая из 'Leaveout' и или 'off' или 'on'.

Если вы задаете 'Leaveout','on', то, для каждого из наблюдений n, программного обеспечения:
1. Резервирует наблюдение как тестовые данные и обучает модель с помощью другого n – 1 наблюдение.
2. Хранит компактную, обученную модель в ячейке в n-by-1 массив ячеек cvgprMdl.Trained.

Пример: 'Leaveout','on'

Если вы задаете Leaveout, то вы не можете задать CVPartition, Holdout или KFold.

Гипероптимизация параметров управления

свернуть все

Параметры, чтобы оптимизировать, заданный как пара, разделенная запятой, состоящая из 'OptimizeHyperparameters' и одно из следующего:

  • 'none' Не оптимизировать.

  • 'auto' Используйте {'Sigma'}.

  • все Оптимизируйте все имеющие право параметры, эквивалентный to{'BasisFunction','KernelFunction','KernelScale','Sigma','Standardize'}.

  • Массив строк или массив ячеек имеющих право названий параметра.

  • Вектор объектов optimizableVariable, обычно вывод hyperparameters.

Оптимизация пытается минимизировать потерю перекрестной проверки (ошибка) для fitrgp путем варьирования параметров. Для получения информации о потере перекрестной проверки (хотя в различном контексте), смотрите Потерю Классификации. Чтобы управлять типом перекрестной проверки и другими аспектами оптимизации, используйте пару "имя-значение" HyperparameterOptimizationOptions.

Примечание

Значения 'OptimizeHyperparameters' заменяют любые значения, вы устанавливаете использование других аргументов пары "имя-значение". Например, установка 'OptimizeHyperparameters' к 'auto' заставляет значения 'auto' применяться.

Имеющие право параметры для fitrgp:

  • BasisFunctionfitrgp ищет среди 'constant', 'none', 'linear' и 'pureQuadratic'.

  • KernelFunctionfitrgp ищет среди 'ardexponential', 'ardmatern32', 'ardmatern52', 'ardrationalquadratic', 'ardsquaredexponential', 'exponential', 'matern32', 'matern52', 'rationalquadratic' и 'squaredexponential'.

  • KernelScalefitrgp использует аргумент KernelParameters, чтобы задать значение масштабного коэффициента ядра, который считается постоянный во время подбора кривой. В этом случае все входные размерности ограничиваются иметь то же значение KernelScale. fitrgp ищет среди действительного значения в области значений [1e-3*MaxPredictorRange,MaxPredictorRange], где

    MaxPredictorRange = max(max(X) - min(X)).

    KernelScale не может быть оптимизирован ни для одного из ядер ARD.

  • \sigma fitrgp ищет среди действительного значения в области значений [1e-4, max(1e-3,10*ResponseStd)], где

    ResponseStd = std(y).

    Внутренне, fitrgp устанавливает пару "имя-значение" ConstantSigma на true, таким образом, значение Sigma является постоянным во время подбора кривой.

  • Standardizefitrgp ищет среди true и false.

Установите параметры не по умолчанию путем передачи вектора объектов optimizableVariable, которые имеют значения не по умолчанию. Например,

load fisheriris
params = hyperparameters('fitrgp',meas,species);
params(1).Range = [1e-4,1e6];

Передайте params как значение OptimizeHyperparameters.

По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков, целевая функция является журналом (1 + потеря перекрестной проверки) для регрессии и misclassification уровня для классификации. Чтобы управлять итеративным отображением, установите поле Verbose аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'. Чтобы управлять графиками, установите поле ShowPlots аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'.

Для примера смотрите, Оптимизируют Регрессию GPR.

Пример: 'auto'

Опции для оптимизации, заданной как пара, разделенная запятой, состоящая из 'HyperparameterOptimizationOptions' и структуры. Этот аргумент изменяет эффект аргумента пары "имя-значение" OptimizeHyperparameters. Все поля в структуре являются дополнительными.

Имя поляЗначенияЗначение по умолчанию
Optimizer
  • 'bayesopt' — Используйте Байесовую оптимизацию. Внутренне, эта установка вызывает bayesopt.

  • 'gridsearch' — Используйте поиск сетки со значениями NumGridDivisions на размерность.

  • 'randomsearch' — Ищите наугад среди точек MaxObjectiveEvaluations.

'gridsearch' ищет в произвольном порядке, с помощью универсальной выборки без замены от сетки. После оптимизации можно получить таблицу в порядке сетки при помощи команды sortrows(Mdl.HyperparameterOptimizationResults).

'bayesopt'
AcquisitionFunctionName

  • 'expected-improvement-per-second-plus'

  • 'expected-improvement'

  • 'expected-improvement-plus'

  • 'expected-improvement-per-second'

  • 'lower-confidence-bound'

  • 'probability-of-improvement'

Приобретение функционирует, чьи имена включают per-second, не приводят к восстанавливаемым результатам, потому что оптимизация зависит от времени выполнения целевой функции. Приобретение функционирует, чьи имена включают plus, изменяют их поведение, когда они сверхиспользуют область. Для получения дополнительной информации смотрите Типы Функции Приобретения.

'expected-improvement-per-second-plus'
MaxObjectiveEvaluationsМаксимальное количество оценок целевой функции.30 для 'bayesopt' или 'randomsearch' и целой сетки для 'gridsearch'
MaxTime

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

Inf
NumGridDivisionsДля 'gridsearch', количества значений в каждой размерности. Значение может быть вектором положительных целых чисел, дающих количество значений для каждой размерности или скаляр, который применяется ко всем размерностям. Это поле проигнорировано для категориальных переменных.10
ShowPlotsЛогическое значение, указывающее, показать ли графики. Если true, это поле строит лучшее значение целевой функции против номера итерации. Если существуют один или два параметра оптимизации, и если Optimizer является 'bayesopt', то ShowPlots также строит модель целевой функции против параметров.true
SaveIntermediateResultsЛогическое значение, указывающее, сохранить ли результаты, когда Optimizer является 'bayesopt'. Если true, это поле перезаписывает переменную рабочей области под названием 'BayesoptResults' в каждой итерации. Переменная является объектом BayesianOptimization.false
Verbose

Отобразитесь к командной строке.

  • 0 — Никакое итеративное отображение

  • 1 — Итеративное отображение

  • 2 — Итеративное отображение с дополнительной информацией

Для получения дополнительной информации смотрите аргумент пары "имя-значение" bayesopt Verbose.

1
UseParallelЛогическое значение, указывающее, запустить ли Байесовую оптимизацию параллельно, которая требует Parallel Computing Toolbox™. Для получения дополнительной информации смотрите Параллельную Байесовую Оптимизацию.false
Repartition

Логическое значение, указывающее, повторно разделить ли перекрестную проверку в каждой итерации. Если false, оптимизатор использует один раздел для оптимизации.

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

false
Используйте не больше, чем одни из следующих трех имен полей.
CVPartitionОбъект cvpartition, как создано cvpartition.'Kfold',5, если вы не задаете поля перекрестной проверки
HoldoutСкаляр в области значений (0,1), представляющий часть затяжки.
KfoldЦелое число, больше, чем 1.

Пример: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)

Типы данных: struct

Другой

свернуть все

Имена переменной прогноза, заданные как пара, разделенная запятой, состоящая из 'PredictorNames' и массив строк уникальных имен или массив ячеек уникальных векторов символов. Функциональность 'PredictorNames' зависит от способа, которым вы снабжаете данными тренировки.

  • Если вы предоставляете X и y, то можно использовать 'PredictorNames', чтобы дать переменные прогноза на имена X.

    • Порядок имен в PredictorNames должен соответствовать порядку следования столбцов X. Таким образом, PredictorNames{1} является именем X(:,1), PredictorNames{2} является именем X(:,2) и так далее. Кроме того, size(X,2) и numel(PredictorNames) должны быть равными.

    • По умолчанию PredictorNames является {'x1','x2',...}.

  • Если вы предоставляете tbl, то можно использовать 'PredictorNames', чтобы выбрать который переменные прогноза использовать в обучении. Таким образом, fitrgp использует переменные прогноза в PredictorNames и ответе только в обучении.

    • PredictorNames должен быть подмножеством tbl.Properties.VariableNames и не может включать имя переменной отклика.

    • По умолчанию PredictorNames содержит имена всех переменных прогноза.

    • Это хорошая практика, чтобы задать предикторы для обучения с помощью одного из 'PredictorNames' или formula только.

Пример: 'PredictorNames',{'PedalLength','PedalWidth'}

Типы данных: string | cell

Имя переменной отклика, заданное как пара, разделенная запятой, состоящая из 'ResponseName' и вектора символов или скаляра строки.

  • Если вы предоставляете Y, то можно использовать 'ResponseName', чтобы задать имя для переменной отклика.

  • Если вы предоставляете ResponseVarName или formula, то вы не можете использовать 'ResponseName'.

Пример: 'ResponseName','response'

Типы данных: char | string

Уровень многословия, заданный как пара, разделенная запятой, состоящая из 'Verbose' и одно из следующих.

  • 0 — fitrgp подавляет диагностические сообщения, связанные с активным выбором набора и спуском координаты блока, но отображает сообщения, связанные с оценкой параметра, в зависимости от значения 'Display' в OptimizerOptions.

  • 1 — fitrgp отображает итеративные диагностические сообщения, связанные с оценкой параметра, активным выбором набора и спуском координаты блока.

Пример: 'Verbose',1

Размер кэша в мегабайтах (МБ), заданных как пара, разделенная запятой, состоящая из 'CacheSize' и положительной скалярной величины. Размер кэша является дополнительной памятью, которая доступна в дополнение к требуемому для подбора кривой и активного выбора набора. fitrgp использует CacheSize для:

  • Решите, разделяют ли расстояния знаками препинания, должен кэшироваться при оценке параметров.

  • Решите, как матричные векторные произведения должны быть вычислены для метода спуска координаты блока и для того, чтобы сделать прогнозы.

Пример: 'CacheSize',2000

Типы данных: double

Выходные аргументы

свернуть все

Гауссова модель регрессии процесса, возвращенная как RegressionGP или объект RegressionPartitionedModel.

  • Если вы перекрестный подтверждаете, то есть, если вы используете один из 'Crossval', 'KFold', 'Holdout', 'Leaveout' или пар "имя-значение" 'CVPartition', то gprMdl является объектом RegressionPartitionedModel. Вы не можете использовать объект RegressionPartitionedModel сделать прогнозы с помощью predict. Для получения дополнительной информации о методах и свойствах этого объекта, смотрите RegressionPartitionedModel.

  • Если вы не перекрестный подтверждаете, то gprMdl является объектом RegressionGP. Можно использовать этот объект для прогнозов с помощью метода predict. Для получения дополнительной информации о методах и свойствах этого объекта, смотрите RegressionGP.

Больше о

свернуть все

Активная оценка выбора и параметра набора

Для подмножества данных, подмножества регрессоров или полностью независимого условного приближения подходящие методы (FitMethod равняются 'sd', 'sr' или 'fic'), если вы не обеспечиваете активный набор, fitrgp выбирает активный набор и вычисляет оценки параметра в серии итераций.

В первой итерации программное обеспечение использует начальные значения параметров в векторном η 0 = [β 0, σ 0, θ 0], чтобы выбрать активный набор A1. Это максимизирует GPR крайняя логарифмическая вероятность или ее приближение с помощью η0 как начальные значения и A1, чтобы вычислить новые оценки параметра η1. Затем, это вычисляет новую логарифмическую вероятность L 1 использование η1 и A1.

Во второй итерации программное обеспечение выбирает активный набор A2 с помощью значений параметров в η1. Затем с помощью η1 как начальные значения и A2, это максимизирует GPR крайняя логарифмическая вероятность или ее приближение и оценивает новые значения параметров η2. Затем с помощью η2 и A2, вычисляет новое логарифмическое значение вероятности L 2.

Следующая таблица обобщает итерации и что вычисляется в каждой итерации.

Номер итерацииАктивный наборВектор параметраРегистрируйте вероятность
1A1η1L 1
2A2η2L 2
3A3η3L 3

Программное обеспечение выполняет итерации так же для конкретного количества повторений. Можно задать количество репликаций для активного выбора набора с помощью аргумента пары "имя-значение" NumActiveSetRepeats.

Советы

  • fitrgp принимает любую комбинацию подбора кривой, прогноза и активных методов выбора набора. В некоторых случаях не может быть возможно вычислить стандартные отклонения предсказанных ответов, следовательно интервалы прогноза. Смотрите predict. И в некоторых случаях, использование точного метода может быть дорогим из-за размера данных тренировки.

  • Свойство PredictorNames хранит один элемент для каждого из исходных имен переменной прогноза. Например, если существует три предиктора, один из которых является категориальной переменной с тремя уровнями, PredictorNames 1 3 массив ячеек из символьных векторов.

  • Свойство ExpandedPredictorNames хранит один элемент для каждой из переменных прогноза, включая фиктивные переменные. Например, если существует три предиктора, один из которых является категориальной переменной с тремя уровнями, затем ExpandedPredictorNames является массивом ячеек из символьных векторов 1 на 5.

  • Точно так же свойство Beta хранит один бета коэффициент для каждого предиктора, включая фиктивные переменные.

  • Свойство X хранит данные тренировки, как первоначально введено. Это не включает фиктивные переменные.

  • Подход по умолчанию к инициализации приближения Гессиана в fitrgp может быть медленным, когда у вас есть модель GPR со многими параметрами ядра, такой как тогда, когда с помощью ядра ARD со многими предикторами. В этом случае считайте определение 'auto' или значением для начального размера шага.

    Можно установить 'Verbose',1 для отображения итеративных диагностических сообщений и начать обучение модель GPR с помощью LBFGS или оптимизатора квазиньютона с оптимизацией fitrgp по умолчанию. Если итеративные диагностические сообщения не отображены после нескольких секунд возможно, что инициализация приближения Гессиана занимает слишком много времени. В этом случае полагайте, что обучение перезапуску и использование начального размера шага ускоряют оптимизацию.

  • После обучения модель можно сгенерировать код C/C++, который предсказывает ответы для новых данных. Генерация кода C/C++ требует MATLAB® Coder™. Для получения дополнительной информации смотрите Введение в Генерацию кода..

Алгоритмы

  • Подбор кривой модели GPR включает оценку следующих параметров модели от данных:

    • Функция ковариации k(xi,xj|θ) параметризованный с точки зрения параметров ядра в векторе θ (см. ядро (ковариация) опции функции),

    • Шумовое отклонение, σ2

    • Вектор коэффициентов фиксированных основных функций, β

    Значение аргумента пары "имя-значение" 'KernelParameters' является вектором, который состоит из начальных значений для стандартного отклонения сигнала σf и характеристические шкалы расстояний σl. Функция fitrgp использует эти значения, чтобы определить параметры ядра. Точно так же аргумент пары "имя-значение" 'Sigma' содержит начальное значение для шумового стандартного отклонения σ.

  • Во время оптимизации fitrgp создает вектор неограниченных начальных значений параметров η0 при помощи начальных значений для шумового стандартного отклонения и параметров ядра.

  • fitrgp аналитически определяет явные базисные коэффициенты β, заданный аргументом пары "имя-значение" 'Beta', от ориентировочных стоимостей θ и σ2. Поэтому не появляется в η0 вектор, когда fitrgp инициализирует числовую оптимизацию.

    Примечание

    Если вы не задаете оценки параметров для модели GPR, fitrgp использует значение аргумента пары "имя-значение" 'Beta' и других начальных значений параметров как известные значения параметров GPR (см. Beta). Во всех других случаях значение аргумента 'Beta' оптимизировано аналитически от целевой функции.

  • Оптимизатор квазиньютона использует метод доверительной области с плотным, симметричным rank-1-based (SR1), приближением квазиньютона к Гессиану, в то время как оптимизатор LBFGS использует стандартный метод поиска строки с приближением квазиньютона ограниченной памяти Бройдена Флетчера Голдфарба Шэнно (LBFGS) к Гессиану. Смотрите Носедэла и Райта [6].

  • Если вы устанавливаете аргумент пары "имя-значение" 'InitialStepSize' 'auto', fitrgp определяет начальный размер шага, s0, при помощи s0=0.5η0+0.1.

    s0 начальный вектор шага, и η0 вектор неограниченных начальных значений параметров.

  • Во время оптимизации fitrgp использует начальный размер шага, s0, можно следующим образом:

    Если вы используете 'Optimizer','quasinewton' с начальным размером шага, то начальное приближение Гессиана g0s0I.

    Если вы используете 'Optimizer','lbfgs' с начальным размером шага, то начальное приближение обратного Гессиана s0g0I.

    g0 начальный вектор градиента, и I единичная матрица.

Ссылки

[1] Уорик J. N. Т. Л. Селлерс, С. Р. Тэлбот, А. Дж. Которн и В. Б. Форд. "Биология Генеральной совокупности Морского ушка (_Haliotis_ разновидности) на Тасмании. I. Морское ушко Blacklip (_H. rubra _) от Северного Побережья и Островов Пролива Басса". Морское Деление Рыболовства, Технический отчет № 48 (ISSN 1034-3288), 1994.

[2] С. Во. "Расширяя и тестируя Каскадной Корреляции в сравнении с эталоном", диссертация. Кафедра информатики, университет Тасмании, 1995.

[3] Личмен, M. Репозиторий машинного обучения UCI, Ирвин, CA: Калифорнийский университет, школа информатики и вычислительной техники, 2013. http://archive.ics.uci.edu/ml.

[4] Расмуссен, C. E. и К. К. Ай. Уильямс. Гауссовы процессы для машинного обучения. Нажатие MIT. Кембридж, Массачусетс, 2006.

[5] Lagarias, J. C. Дж. А. Ридс, М. Х. Райт и П. Э. Райт. "Свойства сходимости Симплекс-метода Nelder-меда в Низких Размерностях". SIAM Journal Оптимизации. Издание 9, Номер 1, 1998, стр 112–147.

[6] Nocedal, J. и С. Дж. Райт. Числовая оптимизация, второй выпуск. Ряд Спрингера в исследовании операций, Springer Verlag, 2006.

Расширенные возможности

Введенный в R2015b