fitrensemble

Подходящий ансамбль учеников для регрессии

Описание

пример

Mdl = fitrensemble(Tbl,ResponseVarName) возвращает обученный объект модели ансамбля регрессии (Mdl) это содержит результаты повышения 100 деревьев регрессии с помощью LSBoost и предиктора и данных об ответе в таблице Tbl. ResponseVarName имя переменной отклика в Tbl.

пример

Mdl = fitrensemble(Tbl,formula) применяет formula подбирать модель к предиктору и данным об ответе в таблице Tbl. formula объяснительная модель ответа и подмножество переменных предикторов в Tbl используемый, чтобы соответствовать Mdl. Например, 'Y~X1+X2+X3' соответствует переменной отклика Tbl.Y в зависимости от переменных предикторов Tbl.X1, Tbl.X2, и Tbl.X3.

пример

Mdl = fitrensemble(Tbl,Y) обработки все переменные в таблице Tbl как переменные предикторы. Y вектор из ответов, который не находится в Tbl.

пример

Mdl = fitrensemble(X,Y) использует данные о предикторе в матричном X и данные об ответе в векторном Y.

пример

Mdl = fitrensemble(___,Name,Value) дополнительные опции использования заданы одним или несколькими Name,Value парные аргументы и любой из входных параметров в предыдущих синтаксисах. Например, можно задать количество изучения циклов, метода агрегации ансамбля, или реализовывать 10-кратную перекрестную проверку.

Примеры

свернуть все

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

Загрузите carsmall набор данных. Сохраните переменные, которые будут использоваться в обучении в таблице.

load carsmall
Tbl = table(Cylinders,Displacement,Horsepower,Weight,MPG);

Обучите ансамбль регрессии.

Mdl1 = fitrensemble(Tbl,'MPG');

Mdl1 RegressionEnsemble модель. Некоторые известные характеристики Mdl1 :

  • Алгоритмом агрегации ансамбля является 'LSBoost'.

  • Поскольку метод агрегации ансамбля является повышающим алгоритмом, деревья регрессии, которые позволяют максимум 10 разделений, составляют ансамбль.

  • Сто деревьев составляют ансамбль.

Поскольку MPG переменная в MATLAB® Workspace, можно получить тот же результат путем ввода

Mdl1 = fitrensemble(Tbl,MPG);

Используйте обученный ансамбль регрессии, чтобы предсказать экономию топлива для автомобиля с четырьмя цилиндрами с 200-кубическим смещением дюйма, 150 лошадиных сил и весящие 3 000 фунтов.

pMPG = predict(Mdl1,[4 200 150 3000])
pMPG = 25.6467

Обучите новый ансамбль, использующий все предикторы в Tbl кроме Displacement.

formula = 'MPG ~ Cylinders + Horsepower + Weight';
Mdl2 = fitrensemble(Tbl,formula);

Сравните перезамену MSEs между Mdl1 и Mdl2.

mse1 = resubLoss(Mdl1)
mse1 = 0.3096
mse2 = resubLoss(Mdl2)
mse2 = 0.5861

MSE в выборке для ансамбля, который обучается на всех предикторах, ниже.

Обучите ансамбль повышенных деревьев регрессии при помощи fitrensemble. Уменьшайте учебное время путем определения 'NumBins' аргумент пары "имя-значение" интервалу числовые предикторы. После обучения можно воспроизвести сгруппированные данные о предикторе при помощи BinEdges свойство обученной модели и discretize функция.

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

rng('default') % For reproducibility
N = 1e6;
X1 = randi([-1,5],[N,1]);
X2 = randi([5,10],[N,1]);
X3 = randi([0,5],[N,1]);
X4 = randi([1,10],[N,1]);
X = [X1 X2 X3 X4];
y = X1 + X2 + X3 + X4 + normrnd(0,1,[N,1]);

Обучите ансамбль повышенных деревьев регрессии с помощью повышения наименьших квадратов (LSBoost, значение по умолчанию). Время функция в целях сравнения.

tic
Mdl1 = fitrensemble(X,y);
toc
Elapsed time is 78.662954 seconds.

Ускорьте обучение при помощи 'NumBins' аргумент пары "имя-значение". Если вы задаете 'NumBins' значение как положительный целочисленный скаляр, затем интервалы программного обеспечения каждый числовой предиктор в конкретное количество равновероятных интервалов, и затем выращивает деревья на индексах интервала вместо исходных данных. Программное обеспечение не делает интервала категориальные предикторы.

tic
Mdl2 = fitrensemble(X,y,'NumBins',50);
toc
Elapsed time is 43.353208 seconds.

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

Сравните ошибки регрессии перезаменой.

rsLoss = resubLoss(Mdl1)
rsLoss = 1.0134
rsLoss2 = resubLoss(Mdl2)
rsLoss2 = 1.0133

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

Воспроизведите сгруппированные данные о предикторе при помощи BinEdges свойство обученной модели и discretize функция.

X = Mdl2.X; % Predictor data
Xbinned = zeros(size(X));
edges = Mdl2.BinEdges;
% Find indices of binned predictors.
idxNumeric = find(~cellfun(@isempty,edges));
if iscolumn(idxNumeric)
    idxNumeric = idxNumeric';
end
for j = idxNumeric 
    x = X(:,j);
    % Convert x to array if x is a table.
    if istable(x)
        x = table2array(x);
    end
    % Group x into bins by using the discretize function.
    xbinned = discretize(x,[-inf; edges{j}; inf]);
    Xbinned(:,j) = xbinned;
end

Xbinned содержит индексы интервала, в пределах от 1 к количеству интервалов, для числовых предикторов. Xbinned значениями является 0 для категориальных предикторов. Если X содержит NaNs, затем соответствующий Xbinned значениями является NaNs.

Оцените ошибку обобщения ансамбля повышенных деревьев регрессии.

Загрузите carsmall набор данных. Выберите количество цилиндров, объем, перемещенный цилиндрами, лошадиной силой и весом как предикторы экономии топлива.

load carsmall
X = [Cylinders Displacement Horsepower Weight];

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

rng(1); % For reproducibility
t = templateTree('MaxNumSplits',1);
Mdl = fitrensemble(X,MPG,'Learners',t,'CrossVal','on');

Mdl RegressionPartitionedEnsemble модель.

Постройте совокупное, перекрестное подтвержденное 10-кратное, среднеквадратическая ошибка (MSE). Отобразите предполагаемую ошибку обобщения ансамбля.

kflc = kfoldLoss(Mdl,'Mode','cumulative');
figure;
plot(kflc);
ylabel('10-fold cross-validated MSE');
xlabel('Learning cycle');

Figure contains an axes object. The axes object contains an object of type line.

estGenError = kflc(end)
estGenError = 26.2356

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

Ансамбль достигает MSE приблизительно 23,5 после накопления приблизительно 30 слабых учеников.

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

В этом примере показано, как оптимизировать гиперпараметры автоматически с помощью fitrensemble. Пример использует carsmall данные.

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

load carsmall

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

Mdl = fitrensemble([Horsepower,Weight],MPG,'OptimizeHyperparameters','auto')

В этом примере, для воспроизводимости, устанавливает случайный seed и используют 'expected-improvement-plus' функция захвата. Кроме того, для воспроизводимости случайного лесного алгоритма задайте 'Reproducible' аргумент пары "имя-значение" как true для древовидных учеников.

rng('default')
t = templateTree('Reproducible',true);
Mdl = fitrensemble([Horsepower,Weight],MPG,'OptimizeHyperparameters','auto','Learners',t, ...
    'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName','expected-improvement-plus'))
|===================================================================================================================================|
| Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   |       Method | NumLearningC-|    LearnRate |  MinLeafSize |
|      | result | log(1+loss) | runtime     | (observed)  | (estim.)    |              | ycles        |              |              |
|===================================================================================================================================|
|    1 | Best   |      2.9726 |      13.337 |      2.9726 |      2.9726 |          Bag |          413 |            - |            1 |
|    2 | Accept |      6.2619 |      2.3668 |      2.9726 |      3.6133 |      LSBoost |           57 |    0.0016067 |            6 |
|    3 | Accept |      2.9975 |     0.94632 |      2.9726 |      2.9852 |          Bag |           32 |            - |            2 |
|    4 | Accept |      4.1897 |      1.5493 |      2.9726 |       2.972 |          Bag |           55 |            - |           40 |
|    5 | Accept |      6.3321 |      1.9898 |      2.9726 |      2.9715 |      LSBoost |           55 |     0.001005 |            2 |
|    6 | Best   |      2.9714 |      1.0991 |      2.9714 |      2.9715 |          Bag |           39 |            - |            1 |
|    7 | Best   |      2.9615 |      1.6467 |      2.9615 |      2.9681 |          Bag |           55 |            - |            1 |
|    8 | Accept |      2.9644 |      2.6645 |      2.9615 |      2.9672 |          Bag |           95 |            - |            1 |
|    9 | Accept |      4.1881 |      12.732 |      2.9615 |      2.9673 |      LSBoost |          358 |      0.64858 |           50 |
|   10 | Accept |      3.6908 |      7.0849 |      2.9615 |      2.9673 |      LSBoost |          202 |      0.98368 |            1 |
|   11 | Accept |      3.3713 |      1.8364 |      2.9615 |      2.9673 |      LSBoost |           47 |      0.12743 |            1 |
|   12 | Accept |      4.1881 |      6.3488 |      2.9615 |      2.9673 |      LSBoost |          176 |      0.06594 |           49 |
|   13 | Accept |      5.4684 |      1.3218 |      2.9615 |      2.9673 |      LSBoost |           35 |     0.014266 |            1 |
|   14 | Accept |      3.4923 |      8.7346 |      2.9615 |      2.9673 |      LSBoost |          237 |      0.30062 |            1 |
|   15 | Accept |      4.1911 |      14.091 |      2.9615 |      2.9675 |      LSBoost |          409 |    0.0095215 |           50 |
|   16 | Accept |      3.1188 |     0.58652 |      2.9615 |      2.9675 |      LSBoost |           14 |       0.1698 |            4 |
|   17 | Accept |      3.5467 |       7.941 |      2.9615 |      2.9674 |      LSBoost |          229 |      0.42676 |            5 |
|   18 | Accept |       3.495 |       12.15 |      2.9615 |      2.9674 |      LSBoost |          348 |      0.09163 |            4 |
|   19 | Accept |      6.4004 |     0.89392 |      2.9615 |      2.9673 |      LSBoost |           23 |    0.0010034 |           49 |
|   20 | Accept |      4.2393 |     0.47357 |      2.9615 |      2.9674 |      LSBoost |           11 |      0.20542 |           49 |
|===================================================================================================================================|
| Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   |       Method | NumLearningC-|    LearnRate |  MinLeafSize |
|      | result | log(1+loss) | runtime     | (observed)  | (estim.)    |              | ycles        |              |              |
|===================================================================================================================================|
|   21 | Accept |       6.322 |     0.67343 |      2.9615 |      2.9674 |      LSBoost |           16 |    0.0037729 |            1 |
|   22 | Accept |      4.5597 |      1.6081 |      2.9615 |      2.9674 |      LSBoost |           44 |     0.022615 |           12 |
|   23 | Accept |      3.6736 |      10.852 |      2.9615 |      2.9674 |      LSBoost |          317 |      0.99727 |           10 |
|   24 | Accept |      4.7897 |      12.612 |      2.9615 |      2.9674 |      LSBoost |          354 |    0.0032841 |           50 |
|   25 | Accept |      3.6779 |      1.4664 |      2.9615 |      2.9674 |      LSBoost |           39 |     0.042372 |            1 |
|   26 | Accept |      5.7092 |      2.3196 |      2.9615 |      2.9674 |      LSBoost |           57 |    0.0065865 |            8 |
|   27 | Accept |       4.229 |      3.4044 |      2.9615 |      2.9674 |      LSBoost |           98 |     0.026602 |           50 |
|   28 | Best   |      2.8822 |      0.3701 |      2.8822 |       2.883 |          Bag |           10 |            - |           10 |
|   29 | Accept |      2.8995 |     0.39957 |      2.8822 |      2.8842 |          Bag |           11 |            - |            6 |
|   30 | Best   |      2.8251 |      13.405 |      2.8251 |      2.8258 |          Bag |          498 |            - |            8 |

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

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

Best observed feasible point:
    Method    NumLearningCycles    LearnRate    MinLeafSize
    ______    _________________    _________    ___________

     Bag             498              NaN            8     

Observed objective function value = 2.8251
Estimated objective function value = 2.8258
Function evaluation time = 13.4046

Best estimated feasible point (according to models):
    Method    NumLearningCycles    LearnRate    MinLeafSize
    ______    _________________    _________    ___________

     Bag             498              NaN            8     

Estimated objective function value = 2.8258
Estimated function evaluation time = 14.4658
Mdl = 
  RegressionBaggedEnsemble
                         ResponseName: 'Y'
                CategoricalPredictors: []
                    ResponseTransform: 'none'
                      NumObservations: 94
    HyperparameterOptimizationResults: [1x1 BayesianOptimization]
                           NumTrained: 498
                               Method: 'Bag'
                         LearnerNames: {'Tree'}
                 ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
                              FitInfo: []
                   FitInfoDescription: 'None'
                       Regularization: []
                            FResample: 1
                              Replace: 1
                     UseObsForLearner: [94x498 logical]


  Properties, Methods

Оптимизация, искавшая по методам регрессию (Bag и LSBoost), по NumLearningCycles, по LearnRate для LSBoost, и по древовидному ученику MinLeafSize. Выход является регрессией ансамбля с минимальной предполагаемой потерей перекрестной проверки.

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

Этот пример вручную находит оптимальные параметры при помощи опции перекрестной проверки ('KFold' аргумент пары "имя-значение") и kfoldLoss функция. В качестве альтернативы можно использовать 'OptimizeHyperparameters' аргумент пары "имя-значение", чтобы оптимизировать гиперпараметры автоматически. Смотрите Оптимизируют Ансамбль Регрессии.

Загрузите carsmall набор данных. Выберите количество цилиндров, объем, перемещенный цилиндрами, лошадиной силой и весом как предикторы экономии топлива.

load carsmall
Tbl = table(Cylinders,Displacement,Horsepower,Weight,MPG);

Значения по умолчанию древовидных контроллеров глубины для повышения деревьев регрессии:

  • 10 для MaxNumSplits.

  • 5 для MinLeafSize

  • 10 для MinParentSize

Искать оптимальный уровень древовидной сложности:

  1. Перекрестный подтвердите набор ансамблей. Экспоненциально увеличьте уровень древовидной сложности для последующих ансамблей от пня решения (одно разделение) к в большей части n - 1 разделение. n является объемом выборки. Кроме того, варьируйтесь скорость обучения для каждого ансамбля между 0,1 к 1.

  2. Оцените перекрестную подтвержденную среднеквадратическую ошибку (MSE) для каждого ансамбля.

  3. Для уровня древовидной сложности j, j=1...J, сравните совокупный, перекрестный подтвержденный MSE ансамблей путем графического вывода их против количества изучения циклов. Постройте отдельные кривые для каждой скорости обучения на той же фигуре.

  4. Выберите кривую, которая достигает минимального MSE, и отметьте соответствующий цикл изучения и скорость обучения.

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

rng(1) % For reproducibility
MdlDeep = fitrtree(Tbl,'MPG','CrossVal','on','MergeLeaves','off', ...
    'MinParentSize',1,'Surrogate','on');
MdlStump = fitrtree(Tbl,'MPG','MaxNumSplits',1,'CrossVal','on', ...
    'Surrogate','on');

Перекрестный подтвердите ансамбль 150 повышенных деревьев регрессии с помощью 5-кратной перекрестной проверки. Используя древовидный шаблон:

  • Варьируйтесь максимальное количество разделений с помощью значений в последовательности {20,21,...,2m}. m таков что 2m не больше, чем n - 1.

  • Включите суррогатные разделения.

Для каждого варианта настройте скорость обучения с помощью каждого значения в наборе {0.1, 0.25, 0.5, 1}.

n = size(Tbl,1);
m = floor(log2(n - 1));
learnRate = [0.1 0.25 0.5 1];
numLR = numel(learnRate);
maxNumSplits = 2.^(0:m);
numMNS = numel(maxNumSplits);
numTrees = 150;
Mdl = cell(numMNS,numLR);

for k = 1:numLR
    for j = 1:numMNS
        t = templateTree('MaxNumSplits',maxNumSplits(j),'Surrogate','on');
        Mdl{j,k} = fitrensemble(Tbl,'MPG','NumLearningCycles',numTrees, ...
            'Learners',t,'KFold',5,'LearnRate',learnRate(k));
    end
end

Оцените совокупный, перекрестный подтвержденный MSE каждого ансамбля.

kflAll = @(x)kfoldLoss(x,'Mode','cumulative');
errorCell = cellfun(kflAll,Mdl,'Uniform',false);
error = reshape(cell2mat(errorCell),[numTrees numel(maxNumSplits) numel(learnRate)]);
errorDeep = kfoldLoss(MdlDeep);
errorStump = kfoldLoss(MdlStump);

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

mnsPlot = [1 round(numel(maxNumSplits)/2) numel(maxNumSplits)];
figure;
for k = 1:3
    subplot(2,2,k)
    plot(squeeze(error(:,mnsPlot(k),:)),'LineWidth',2)
    axis tight
    hold on
    h = gca;
    plot(h.XLim,[errorDeep errorDeep],'-.b','LineWidth',2)
    plot(h.XLim,[errorStump errorStump],'-.r','LineWidth',2)
    plot(h.XLim,min(min(error(:,mnsPlot(k),:))).*[1 1],'--k')
    h.YLim = [10 50];    
    xlabel('Number of trees')
    ylabel('Cross-validated MSE')
    title(sprintf('MaxNumSplits = %0.3g', maxNumSplits(mnsPlot(k))))
    hold off
end
hL = legend([cellstr(num2str(learnRate','Learning Rate = %0.2f')); ...
        'Deep Tree';'Stump';'Min. MSE']);
hL.Position(1) = 0.6;

Figure contains 3 axes objects. Axes object 1 with title MaxNumSplits = 1 contains 7 objects of type line. Axes object 2 with title MaxNumSplits = 8 contains 7 objects of type line. Axes object 3 with title MaxNumSplits = 64 contains 7 objects of type line. These objects represent Learning Rate = 0.10, Learning Rate = 0.25, Learning Rate = 0.50, Learning Rate = 1.00, Deep Tree, Stump, Min. MSE.

Каждая кривая содержит минимум перекрестный подтвержденный MSE, происходящий в оптимальном количестве деревьев в ансамбле.

Идентифицируйте максимальное количество разделений, количество деревьев и скорость обучения, которая дает к самому низкому MSE в целом.

[minErr,minErrIdxLin] = min(error(:));
[idxNumTrees,idxMNS,idxLR] = ind2sub(size(error),minErrIdxLin);
fprintf('\nMin. MSE = %0.5f',minErr)
Min. MSE = 16.77593
fprintf('\nOptimal Parameter Values:\nNum. Trees = %d',idxNumTrees);
Optimal Parameter Values:
Num. Trees = 78
fprintf('\nMaxNumSplits = %d\nLearning Rate = %0.2f\n',...
    maxNumSplits(idxMNS),learnRate(idxLR))
MaxNumSplits = 1
Learning Rate = 0.25

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

tFinal = templateTree('MaxNumSplits',maxNumSplits(idxMNS),'Surrogate','on');
MdlFinal = fitrensemble(Tbl,'MPG','NumLearningCycles',idxNumTrees, ...
    'Learners',tFinal,'LearnRate',learnRate(idxLR))
MdlFinal = 
  RegressionEnsemble
           PredictorNames: {1x4 cell}
             ResponseName: 'MPG'
    CategoricalPredictors: []
        ResponseTransform: 'none'
          NumObservations: 94
               NumTrained: 78
                   Method: 'LSBoost'
             LearnerNames: {'Tree'}
     ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
                  FitInfo: [78x1 double]
       FitInfoDescription: {2x1 cell}
           Regularization: []


  Properties, Methods

MdlFinal RegressionEnsemble. Чтобы предсказать экономию топлива автомобиля, учитывая его количество цилиндров, объем, перемещенный цилиндрами, лошадиной силой и весом, можно передать данные о предикторе и MdlFinal к predict.

Вместо того, чтобы искать оптимальные значения вручную при помощи опции перекрестной проверки ('KFold') и kfoldLoss функция, можно использовать 'OptimizeHyperparameters' аргумент пары "имя-значение". Когда вы задаете 'OptimizeHyperparameters', программное обеспечение находит оптимальные параметры автоматически с помощью Байесовой оптимизации. Оптимальные значения получены при помощи 'OptimizeHyperparameters' может отличаться от тех полученный поиск руководства использования.

t = templateTree('Surrogate','on');
mdl = fitrensemble(Tbl,'MPG','Learners',t, ...
    'OptimizeHyperparameters',{'NumLearningCycles','LearnRate','MaxNumSplits'})
|====================================================================================================================|
| Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   | NumLearningC-|    LearnRate | MaxNumSplits |
|      | result | log(1+loss) | runtime     | (observed)  | (estim.)    | ycles        |              |              |
|====================================================================================================================|
|    1 | Best   |      3.3955 |      1.2264 |      3.3955 |      3.3955 |           26 |     0.072054 |            3 |
|    2 | Accept |      6.0976 |      6.0375 |      3.3955 |      3.5549 |          170 |    0.0010295 |           70 |
|    3 | Best   |      3.2914 |      9.4872 |      3.2914 |      3.2917 |          273 |      0.61026 |            6 |
|    4 | Accept |      6.1839 |      2.9098 |      3.2914 |      3.2915 |           80 |    0.0016871 |            1 |
|    5 | Best   |      3.0379 |     0.83247 |      3.0379 |      3.0384 |           18 |      0.21288 |           31 |
|    6 | Accept |      3.3628 |      0.4622 |      3.0379 |      3.1888 |           10 |      0.17826 |            5 |
|    7 | Best   |      3.0192 |     0.48199 |      3.0192 |      3.0146 |           10 |      0.27711 |           59 |
|    8 | Accept |      4.3171 |     0.47274 |      3.0192 |      3.0194 |           10 |      0.10878 |           97 |
|    9 | Accept |      3.0291 |     0.45342 |      3.0192 |      3.0189 |           10 |      0.64806 |            1 |
|   10 | Accept |      5.7111 |     0.46345 |      3.0192 |      3.0076 |           10 |     0.037859 |            1 |
|   11 | Best   |      2.9323 |      1.6842 |      2.9323 |      2.9272 |           49 |      0.17618 |            1 |
|   12 | Accept |      2.9623 |      0.6281 |      2.9323 |      2.9322 |           15 |      0.42954 |            2 |
|   13 | Best   |      2.8991 |     0.46049 |      2.8991 |      2.8994 |           10 |      0.37123 |            1 |
|   14 | Accept |      2.9228 |      2.0394 |      2.8991 |      2.8992 |           58 |     0.079645 |            1 |
|   15 | Accept |      3.1547 |      1.6303 |      2.8991 |      2.8994 |           46 |      0.98493 |            2 |
|   16 | Accept |      2.9173 |      1.5015 |      2.8991 |      2.8992 |           42 |      0.11747 |            1 |
|   17 | Accept |      2.9391 |     0.53856 |      2.8991 |      2.9008 |           13 |      0.30735 |            1 |
|   18 | Accept |      2.9169 |      1.3937 |      2.8991 |      2.9006 |           41 |      0.38464 |            1 |
|   19 | Accept |      2.9314 |      1.0662 |      2.8991 |      2.9008 |           30 |      0.26653 |            1 |
|   20 | Accept |      2.9107 |       2.574 |      2.8991 |      2.9008 |           74 |       0.4603 |            1 |
|====================================================================================================================|
| Iter | Eval   | Objective:  | Objective   | BestSoFar   | BestSoFar   | NumLearningC-|    LearnRate | MaxNumSplits |
|      | result | log(1+loss) | runtime     | (observed)  | (estim.)    | ycles        |              |              |
|====================================================================================================================|
|   21 | Accept |       3.177 |      16.941 |      2.8991 |      2.9007 |          486 |     0.075726 |           91 |
|   22 | Accept |      2.9119 |      4.1443 |      2.8991 |      2.9007 |          123 |      0.13144 |            1 |
|   23 | Accept |      2.9256 |      4.2553 |      2.8991 |      2.9006 |          130 |     0.056279 |            1 |
|   24 | Accept |      2.9156 |      4.1008 |      2.8991 |      2.9005 |          123 |     0.085232 |            1 |
|   25 | Accept |      3.2233 |      1.8002 |      2.8991 |       2.901 |           46 |      0.42036 |           96 |
|   26 | Accept |      3.0629 |     0.48814 |      2.8991 |      2.9008 |           10 |      0.48771 |           98 |
|   27 | Accept |      3.0637 |      2.7094 |      2.8991 |      2.9009 |           74 |     0.078567 |           88 |
|   28 | Accept |       2.902 |      4.5334 |      2.8991 |      2.9009 |          117 |      0.27895 |            1 |
|   29 | Accept |      2.9975 |      0.5331 |      2.8991 |      2.9135 |           10 |      0.37423 |            3 |
|   30 | Accept |      2.9287 |     0.86351 |      2.8991 |      2.9217 |           17 |      0.28241 |            1 |

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

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

Best observed feasible point:
    NumLearningCycles    LearnRate    MaxNumSplits
    _________________    _________    ____________

           10             0.37123          1      

Observed objective function value = 2.8991
Estimated objective function value = 2.934
Function evaluation time = 0.46049

Best estimated feasible point (according to models):
    NumLearningCycles    LearnRate    MaxNumSplits
    _________________    _________    ____________

           13             0.30735          1      

Estimated objective function value = 2.9217
Estimated function evaluation time = 0.58143
mdl = 
  RegressionEnsemble
                       PredictorNames: {1x4 cell}
                         ResponseName: 'MPG'
                CategoricalPredictors: []
                    ResponseTransform: 'none'
                      NumObservations: 94
    HyperparameterOptimizationResults: [1x1 BayesianOptimization]
                           NumTrained: 13
                               Method: 'LSBoost'
                         LearnerNames: {'Tree'}
                 ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
                              FitInfo: [13x1 double]
                   FitInfoDescription: {2x1 cell}
                       Regularization: []


  Properties, Methods

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

свернуть все

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

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

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

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

Примечание

Чтобы сохранить память и время выполнения, предоставьте X и Y вместо Tbl.

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

Имя переменной отклика в виде имени переменной отклика в Tbl.

Необходимо задать ResponseVarName как вектор символов или строковый скаляр. Например, если Tbl.Y переменная отклика, затем задайте ResponseVarName как 'Y'. В противном случае, fitrensemble обработки все столбцы Tbl как переменные предикторы.

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

Объяснительная модель переменной отклика и подмножество переменных предикторов в виде вектора символов или строкового скаляра в форме "Y~x1+x2+x3". В этой форме, Y представляет переменную отклика и x1x2 , и x3 представляйте переменные предикторы.

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

Имена переменных в формуле должны быть оба именами переменных в Tbl (Tbl.Properties.VariableNames) и допустимый MATLAB® идентификаторы. Можно проверить имена переменных в Tbl при помощи isvarname функция. Если имена переменных не допустимы, то можно преобразовать их при помощи matlab.lang.makeValidName функция.

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

Данные о предикторе в виде числовой матрицы.

Каждая строка соответствует одному наблюдению, и каждый столбец соответствует одному переменному предиктору.

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

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

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

Ответ в виде числового вектора. Каждый элемент в Y ответ на наблюдение в соответствующей строке X или Tbl. Длина Y и количество строк X или Tbl должно быть равным.

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

Аргументы name-value

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

Пример: 'NumLearningCycles',500,'Method','Bag','Learners',templateTree(),'CrossVal','on' перекрестный подтверждает ансамбль 500 сложенных в мешок деревьев регрессии с помощью 10-кратной перекрестной проверки.

Примечание

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

Общие опции ансамбля

свернуть все

Метод агрегации ансамбля в виде разделенной запятой пары, состоящей из 'Method' и 'LSBoost' или 'Bag'.

ЗначениеМетодПримечания
'LSBoost'Наименьшие квадраты, повышающие (LSBoost)Можно задать скорость обучения для уменьшения при помощи 'LearnRate' аргумент пары "имя-значение".
'Bag'Загрузите агрегацию (укладывание в мешки, например, случайный лес [2])fitrensemble использование, висящее как мешок со случайными выборами предиктора в каждом разделении (случайный лес) по умолчанию. Чтобы использовать укладывание в мешки без случайных выборов, используйте древовидных учеников чей 'NumVariablesToSample' значением является 'all'.

Для получения дополнительной информации об алгоритмах агрегации ансамбля и примерах, см. Алгоритмы, Алгоритмы Ансамбля, и Выберите Applicable Ensemble Aggregation Method.

Пример: 'Method','Bag'

Количество ансамбля, изучающего циклы в виде разделенной запятой пары, состоящей из 'NumLearningCycles' и положительное целое число. В каждом цикле изучения программное обеспечение обучает одного слабого ученика каждому объекту шаблона в Learners. Следовательно, программное обеспечение обучает NumLearningCycles*numel(Learners) ученики.

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

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

Пример: 'NumLearningCycles',500

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

Слабые ученики, чтобы использовать в ансамбле в виде разделенной запятой пары, состоящей из 'Learners' и 'tree', древовидный объект шаблона или вектор ячейки из древовидных объектов шаблона.

  • 'tree' (значение по умолчанию) — fitrensemble ученики дерева регрессии значения по умолчанию использования, который совпадает с использованием templateTree(). Значения по умолчанию templateTree() зависьте от значения 'Method'.

    • Для сложенных в мешок деревьев решений, максимального количества разделений решения ('MaxNumSplits') n–1, где n количество наблюдений. Количество предикторов, чтобы выбрать наугад для каждого разделения ('NumVariablesToSample') одна треть количества предикторов. Поэтому fitrensemble выращивает глубокие деревья решений. Можно вырастить более мелкие деревья, чтобы уменьшать сложность модели или время вычисления.

    • Для повышенных деревьев решений, 'MaxNumSplits' 10 и 'NumVariablesToSample' 'all'. Поэтому fitrensemble выращивает мелкие деревья решений. Можно вырастить более глубокие деревья для лучшей точности.

    Смотрите templateTree для настроек по умолчанию слабого ученика.

  • Древовидный объект шаблона — fitrensemble использует древовидный объект шаблона, созданный templateTree. Используйте аргументы пары "имя-значение" templateTree задавать настройки древовидных учеников.

  • Вектор ячейки из объектов шаблона дерева mfitrensemble выращивает деревья регрессии m на изучение цикла (см. NumLearningCycles). Например, для ансамбля, состоявшего из двух типов деревьев регрессии, предоставьте {t1 t2}, где t1 и t2 объекты шаблона дерева регрессии, возвращенные templateTree.

Чтобы получить восстанавливаемые результаты, необходимо задать 'Reproducible' аргумент пары "имя-значение" templateTree как true если 'NumVariablesToSample' не 'all'.

Для получения дополнительной информации на количестве учеников, чтобы обучаться, смотрите NumLearningCycles и Советы.

Пример: 'Learners',templateTree('MaxNumSplits',5)

Частота распечатки в виде разделенной запятой пары, состоящей из 'NPrint' и положительное целое число или 'off'.

Отслеживать количество слабых учеников или сгибов это fitrensemble обученный до сих пор, задайте положительное целое число. Таким образом, если вы задаете положительный целочисленный m:

  • Также не задавая опции перекрестной проверки (например, CrossValто fitrensemble отображает сообщение к командной строке каждый раз, когда она завершает учебный m слабые ученики.

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

Если вы задаете 'off'то fitrensemble не отображает сообщение, когда оно завершает учебных слабых учеников.

Совет

Для самого быстрого обучения некоторых повышенных деревьев решений, набор NPrint к значению по умолчанию 'off'. Этот совет содержит когда классификация Method 'AdaBoostM1', 'AdaBoostM2', 'GentleBoost', или 'LogitBoost', или когда регрессия Method 'LSBoost'.

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

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

Количество интервалов для числовых предикторов в виде разделенной запятой пары, состоящей из 'NumBins' и положительный целочисленный скаляр.

  • Если 'NumBins' значение пусто (значение по умолчанию), затем fitrensemble не делает интервала никакие предикторы.

  • Если вы задаете 'NumBins' значение как положительный целочисленный скаляр (numBinsто fitrensemble интервалы каждый числовой предиктор в в большей части numBins равновероятные интервалы, и затем выращивают деревья на индексах интервала вместо исходных данных.

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

    • fitrensemble не делает интервала категориальные предикторы.

Когда вы используете большой обучающий набор данных, эта опция раскладывания ускоряет обучение, но может вызвать потенциальное уменьшение в точности. Можно попробовать 'NumBins',50 во-первых, и затем измените значение в зависимости от точности и учебной скорости.

Обученная модель хранит границы интервала в BinEdges свойство.

Пример: 'NumBins',50

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

Категориальные предикторы перечисляют в виде одного из значений в этой таблице.

ЗначениеОписание
Вектор из положительных целых чисел

Каждая запись в векторе является значением индекса, указывающим, что соответствующий предиктор является категориальным. Значения индекса между 1 и p, где p количество предикторов, используемых, чтобы обучить модель.

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

Логический вектор

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

Символьная матрицаКаждая строка матрицы является именем переменного предиктора. Имена должны совпадать с записями в PredictorNames. Заполните имена дополнительными пробелами, таким образом, каждая строка символьной матрицы имеет ту же длину.
Массив строк или массив ячеек из символьных векторовКаждым элементом в массиве является имя переменного предиктора. Имена должны совпадать с записями в PredictorNames.
"all"Все предикторы являются категориальными.

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

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

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

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

  • Если вы предоставляете X и Y, затем можно использовать PredictorNames присваивать имена к переменным предикторам в X.

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

    • По умолчанию, PredictorNames {'x1','x2',...}.

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

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

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

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

Пример: "PredictorNames",["SepalLength","SepalWidth","PetalLength","PetalWidth"]

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

Имя переменной отклика в виде вектора символов или строкового скаляра.

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

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

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

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

Преобразование ответа в виде любого 'none' или указатель на функцию. Значением по умолчанию является 'none', что означает @(y)y, или никакое преобразование. Для функции MATLAB или функции вы задаете, используете ее указатель на функцию для преобразования ответа. Указатель на функцию должен принять вектор (исходные значения отклика) и возвратить вектор, одного размера (преобразованные значения отклика).

Пример: Предположим, что вы создаете указатель на функцию, который применяет экспоненциальное преобразование к входному вектору при помощи myfunction = @(y)exp(y). Затем можно задать преобразование ответа как 'ResponseTransform',myfunction.

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

Параллельные опции

свернуть все

Опции для вычисления в параллели и установки случайных чисел в виде структуры. Создайте Options структура с statset.

Примечание

Вам нужен Parallel Computing Toolbox™, чтобы вычислить параллельно.

Эта таблица приводит поля опции и их значения.

Имя поляЗначениеЗначение по умолчанию
UseParallel

Установите это значение к true вычислить параллельно. Параллельное обучение ансамбля требует, чтобы вы установили 'Method' аргумент значения имени к 'Bag'. Параллельное обучение доступно только древовидным ученикам, типу по умолчанию для 'Bag'.

false
UseSubstreams

Установите это значение к true запускать расчеты параллельно восстанавливаемым способом.

Чтобы вычислить восстанавливаемо, установите Streams к типу, который позволяет подпотоки: 'mlfg6331_64' или 'mrg32k3a'. Кроме того, используйте древовидный шаблон с 'Reproducible' набор аргумента значения имени к true. Смотрите воспроизводимость в параллельных статистических расчетах.

false
StreamsЗадайте это значение как a RandStream объектный массив или массив ячеек таких объектов. Используйте отдельный объект кроме тех случаев, когда UseParallel значением является true и UseSubstreams значением является false. В этом случае используйте массив ячеек, который имеет тот же размер как параллельный пул.Если вы не задаете Streamsто fitrensemble использует поток по умолчанию или потоки.

Для примера с помощью восстанавливаемого параллельного обучения смотрите, Обучают Ансамбль Классификации параллельно.

Для двухъядерных систем и выше, fitrensemble параллелизирует использование обучения Intel® Поточная обработка базовых блоков (TBB). Поэтому определение UseParallel опция как true не может обеспечить значительное ускорение на одиночном компьютере. Для получения дополнительной информации на Intel TBB, см. https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onetbb.html.

Пример: 'Options',statset('UseParallel',true)

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

Опции перекрестной проверки

свернуть все

Флаг перекрестной проверки в виде разделенной запятой пары, состоящей из 'Crossval' и 'on' или 'off'.

Если вы задаете 'on', затем программное обеспечение реализует 10-кратную перекрестную проверку.

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

В качестве альтернативы перекрестный подтвердите позже путем передачи Mdl к crossval или crossval.

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

Раздел перекрестной проверки в виде cvpartition объект раздела, созданный cvpartition. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.

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

Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5). Затем можно задать перекрестную подтвержденную модель при помощи 'CVPartition',cvp.

Часть данных, используемых для валидации затяжки в виде скалярного значения в области значений (0,1). Если вы задаете 'Holdout',p, затем программное обеспечение завершает эти шаги:

  1. Случайным образом выберите и зарезервируйте p*100% из данных как данные о валидации, и обучают модель с помощью остальной части данных.

  2. Сохраните компактную, обученную модель в Trained свойство перекрестной подтвержденной модели.

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

Пример: 'Holdout',0.1

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

Количество сгибов, чтобы использовать в перекрестной подтвержденной модели в виде положительного целочисленного значения, больше, чем 1. Если вы задаете 'KFold',k, затем программное обеспечение завершает эти шаги:

  1. Случайным образом разделите данные в k наборы.

  2. Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью другого k – 1 набор.

  3. Сохраните k компактные, обученные модели в k- 1 вектор ячейки в Trained свойство перекрестной подтвержденной модели.

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

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

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

Флаг перекрестной проверки "Пропускает один" в виде 'on' или 'off'. Если вы задаете 'Leaveout','on', затем для каждого из наблюдений n (где n является количеством наблюдений, исключая недостающие наблюдения, заданные в NumObservations свойство модели), программное обеспечение завершает эти шаги:

  1. Зарезервируйте одно наблюдение как данные о валидации и обучите модель с помощью другого n – 1 наблюдение.

  2. Сохраните n компактные, обученные модели в n-by-1 вектор ячейки в Trained свойство перекрестной подтвержденной модели.

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

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

Другие опции регрессии

свернуть все

Веса наблюдения в виде разделенной запятой пары, состоящей из 'Weights' и числовой вектор из положительных значений или имя переменной в Tbl. Программное обеспечение взвешивает наблюдения в каждой строке X или Tbl с соответствующим значением в Weights. Размер Weights должен равняться количеству строк X или Tbl.

Если вы задаете входные данные как таблицу Tbl, затем Weights может быть имя переменной в Tbl это содержит числовой вектор. В этом случае необходимо задать Weights как вектор символов или строковый скаляр. Например, если вектор весов W хранится как Tbl.W, затем задайте его как 'W'. В противном случае программное обеспечение обрабатывает все столбцы Tbl, включая W, как предикторы или ответ, когда обучение модель.

Программное обеспечение нормирует значения Weights суммировать к 1.

По умолчанию, Weights единицы (n,1), где n количество наблюдений в X или Tbl.

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

Выборка опций

свернуть все

Часть набора обучающих данных, чтобы передискретизировать для каждого слабого ученика в виде положительной скалярной величины в (0,1]. Использовать 'FResample', установите Resample к 'on'.

Пример: 'FResample',0.75

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

Отметьте указание на выборку с помощью замены в виде разделенной запятой пары, состоящей из 'Replace' и 'off' или 'on'.

  • Для 'on', программное обеспечение производит учебные наблюдения с заменой.

  • Для 'off', программное обеспечение производит учебные наблюдения без замены. Если вы устанавливаете Resample к 'on', затем наблюдения обучения выборкам программного обеспечения, принимающие универсальные веса. Если вы также задаете повышающий метод, то программное обеспечение повышает путем перевзвешивания наблюдений.

Если вы не устанавливаете Method к 'bag' или набор Resample к 'on'замена не оказывает влияния.

Пример: 'Replace','off'

Отметьте указание, чтобы передискретизировать в виде разделенной запятой пары, состоящей из 'Resample' и 'off' или 'on'.

  • Если Method повышающий метод, затем:

    • 'Resample','on' задает к демонстрационным учебным наблюдениям с помощью обновленных весов в качестве вероятностей выборки многочлена.

    • 'Resample','off'(значение по умолчанию) задает, чтобы повторно взвесить наблюдения в каждой итерации изучения.

  • Если Method 'bag', затем 'Resample' должен быть 'on'. Программное обеспечение передискретизирует часть учебных наблюдений (см. FResample) с или без замены (см. Replace).

Если вы задаете, чтобы передискретизировать использование Resample, затем это - хорошая практика, чтобы передискретизировать к целому набору данных. Таким образом, используйте настройку по умолчанию 1 для FResample.

Опции метода LSBoost

свернуть все

Скорость обучения для уменьшения в виде разделенной запятой пары, состоящей из 'LearnRate' и числовой скаляр в интервале (0,1].

Чтобы обучить ансамбль, использующий уменьшение, установите LearnRate к значению меньше, чем 1, например, 0.1 популярный выбор. Обучение ансамбль, использующий уменьшение, требует большего количества итераций изучения, но часто достигает лучшей точности.

Пример: 'LearnRate',0.1

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

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

свернуть все

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

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

  • 'auto' — Используйте {'Method','NumLearningCycles','LearnRate'} наряду с параметрами по умолчанию для заданного Learners:

    • Learners = 'tree' (значение по умолчанию) — {'MinLeafSize'}

    Примечание

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

  • 'all' — Оптимизируйте все имеющие право параметры.

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

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

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

Примечание

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

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

  • Method — Имеющими право методами является 'Bag' или 'LSBoost'.

  • NumLearningCyclesfitrensemble поисковые запросы среди положительных целых чисел, по умолчанию масштабируемых журналом с областью значений [10,500].

  • LearnRatefitrensemble поисковые запросы среди положительных реалов, по умолчанию масштабируемых журналом с областью значений [1e-3,1].

  • MinLeafSizefitrensemble поисковые запросы среди целых чисел, масштабируемых журналом в области значений [1,max(2,floor(NumObservations/2))].

  • MaxNumSplitsfitrensemble поисковые запросы среди целых чисел, масштабируемых журналом в области значений [1,max(2,NumObservations-1)].

  • NumVariablesToSamplefitrensemble поисковые запросы среди целых чисел в области значений [1,max(2,NumPredictors)].

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

load carsmall
params = hyperparameters('fitrensemble',[Horsepower,Weight],MPG,'Tree');
params(4).Range = [1,20];

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

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

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

Пример: 'OptimizeHyperparameters',{'Method','NumLearningCycles','LearnRate','MinLeafSize','MaxNumSplits'}

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

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

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

  • 'randomsearch' — Поиск наугад среди MaxObjectiveEvaluations 'points'.

'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'), затем это поле также строит лучшее предполагаемое значение целевой функции. Лучшие наблюдаемые значения целевой функции и лучше всего оцененные значения целевой функции соответствуют значениям в BestSoFar (observed) и BestSoFar (estim.) столбцы итеративного отображения, соответственно. Можно найти эти значения в свойствах ObjectiveMinimumTrace и EstimatedObjectiveMinimumTrace из Mdl.HyperparameterOptimizationResults. Если проблема включает один или два параметра оптимизации для Байесовой оптимизации, то 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
Используйте не больше, чем одну из следующих трех опций.
CVPartitioncvpartition объект, как создано cvpartition'Kfold',5 если вы не задаете поле перекрестной проверки
HoldoutСкаляр в области значений (0,1) представление части затяжки
KfoldЦелое число, больше, чем 1

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

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

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

свернуть все

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

Объект моделиЗадать какие-либо опции перекрестной проверки?Method УстановкаResample Установка
RegressionBaggedEnsembleНет'Bag''on'
RegressionEnsembleНет'LSBoost''off'
RegressionPartitionedEnsembleДа'LSBoost' или 'Bag''off' или 'on'

Аргументы пары "имя-значение", что перекрестной проверкой управления является CrossVal, Holdout, KFold, Leaveout, и CVPartition.

К ссылочным свойствам Mdl, используйте запись через точку. Например, чтобы получить доступ или отобразить вектор ячейки из слабых объектов модели ученика для ансамбля, который не был перекрестный подтвержден, введите Mdl.Trained в командной строке.

Советы

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

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

  • Если вы задаете, чтобы передискретизировать использование Resample, затем это - хорошая практика, чтобы передискретизировать к целому набору данных. Таким образом, используйте настройку по умолчанию 1 для FResample.

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

Алгоритмы

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

  • Если вы задаете 'Method','LSBoost', затем программное обеспечение выращивает мелкие деревья решений по умолчанию. Можно настроить древовидную глубину путем определения MaxNumSplits, MinLeafSize, и MinParentSize использование аргументов пары "имя-значение" templateTree.

  • Для двухъядерных систем и выше, fitrensemble параллелизирует использование обучения Поточная обработка базовых блоков (TBB) Intel. Для получения дополнительной информации на Intel TBB, см. https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onetbb.html.

Ссылки

[1] Бреимен, L. “Укладывание в мешки Предикторов”. Машинное обучение. Издание 26, стр 123–140, 1996.

[2] Бреимен, L. “Случайные Леса”. Машинное обучение. Издание 45, стр 5–32, 2001.

[3] Freund, Y. и Р. Э. Шапайр. “Теоретическое Решением Обобщение Дистанционного обучения и Приложения к Повышению”. J. Компьютерных и Системных Наук, Издания 55, стр 119–139, 1997.

[4] Фридман, J. “Жадное приближение функций: машина повышения градиента”. Летопись Статистики, Издания 29, № 5, стр 1189–1232, 2001.

[5] Hastie, T., Р. Тибширэни и Дж. Фридман. Выпуск раздела Elements of Statistical Learning, Спрингер, Нью-Йорк, 2008.

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

Введенный в R2017b
Для просмотра документации необходимо авторизоваться на сайте