Подходящий ансамбль учеников для регрессии
Mdl = fitrensemble(Tbl,ResponseVarName)Mdl = fitrensemble(Tbl,formula)Mdl = fitrensemble(Tbl,Y)Mdl = fitrensemble(X,Y)Mdl = fitrensemble(___,Name,Value) возвращает обученный объект модели ансамбля регрессии (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(___,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);
tocElapsed 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 содержит NaN s, то соответствующими значениями Xbinned является NaN s.
Оцените ошибку обобщения ансамбля повышенных деревьев регрессии.
Загрузите набор данных 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');

estGenError = kflc(end)
estGenError = 24.8521
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 | | runtime | (observed) | (estim.) | | ycles | | |
|===================================================================================================================================|
| 1 | Best | 2.9743 | 9.9614 | 2.9743 | 2.9743 | Bag | 413 | - | 1 |
| 2 | Accept | 6.2619 | 1.5009 | 2.9743 | 3.6147 | LSBoost | 57 | 0.0016067 | 6 |
| 3 | Best | 2.9562 | 0.77935 | 2.9562 | 2.9654 | Bag | 32 | - | 2 |
| 4 | Accept | 4.1884 | 1.2819 | 2.9562 | 2.9573 | Bag | 55 | - | 40 |
| 5 | Accept | 4.1881 | 6.0891 | 2.9562 | 2.957 | LSBoost | 258 | 0.096683 | 50 |
| 6 | Accept | 3.1479 | 1.8558 | 2.9562 | 2.9569 | LSBoost | 75 | 0.092525 | 6 |
| 7 | Accept | 3.7831 | 0.4946 | 2.9562 | 2.9568 | LSBoost | 17 | 0.08882 | 1 |
| 8 | Accept | 4.2759 | 0.38923 | 2.9562 | 2.9564 | LSBoost | 12 | 0.094908 | 1 |
| 9 | Accept | 3.124 | 4.3066 | 2.9562 | 2.9564 | LSBoost | 157 | 0.083222 | 8 |
| 10 | Accept | 3.6349 | 12.142 | 2.9562 | 2.991 | LSBoost | 494 | 0.070612 | 2 |
| 11 | Accept | 3.0526 | 0.26891 | 2.9562 | 2.9615 | Bag | 10 | - | 1 |
| 12 | Accept | 3.1469 | 1.7301 | 2.9562 | 2.9627 | LSBoost | 62 | 0.08423 | 4 |
| 13 | Accept | 4.7629 | 0.50284 | 2.9562 | 2.9629 | LSBoost | 21 | 0.055294 | 48 |
| 14 | Accept | 4.1881 | 4.5671 | 2.9562 | 2.9629 | LSBoost | 213 | 0.99467 | 46 |
| 15 | Accept | 3.5337 | 1.597 | 2.9562 | 3.0164 | LSBoost | 63 | 0.73987 | 1 |
| 16 | Accept | 3.2481 | 1.3843 | 2.9562 | 2.9689 | LSBoost | 59 | 0.2363 | 6 |
| 17 | Accept | 2.9732 | 1.7983 | 2.9562 | 3.0016 | Bag | 83 | - | 1 |
| 18 | Best | 2.9361 | 10.498 | 2.9361 | 2.9648 | Bag | 498 | - | 2 |
| 19 | Accept | 3.5859 | 2.9294 | 2.9361 | 2.9987 | LSBoost | 123 | 0.1522 | 2 |
| 20 | Accept | 2.9406 | 10.689 | 2.9361 | 2.9559 | Bag | 496 | - | 2 |
|===================================================================================================================================|
| Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | Method | NumLearningC-| LearnRate | MinLeafSize |
| | result | | runtime | (observed) | (estim.) | | ycles | | |
|===================================================================================================================================|
| 21 | Accept | 2.9419 | 10.833 | 2.9361 | 2.9517 | Bag | 491 | - | 2 |
| 22 | Accept | 5.7918 | 1.0162 | 2.9361 | 2.9525 | LSBoost | 35 | 0.0094806 | 1 |
| 23 | Accept | 5.9584 | 5.718 | 2.9361 | 2.9533 | LSBoost | 272 | 0.0010255 | 50 |
| 24 | Accept | 6.4218 | 0.29731 | 2.9361 | 2.9538 | LSBoost | 10 | 0.0010003 | 1 |
| 25 | Accept | 4.7662 | 4.7116 | 2.9361 | 2.9531 | LSBoost | 202 | 0.0058776 | 50 |
| 26 | Accept | 3.4231 | 4.8838 | 2.9361 | 2.9537 | LSBoost | 208 | 0.99319 | 6 |
| 27 | Accept | 5.6829 | 0.34583 | 2.9361 | 2.954 | LSBoost | 13 | 0.02954 | 1 |
| 28 | Accept | 4.7428 | 1.5779 | 2.9361 | 2.954 | LSBoost | 72 | 0.01677 | 50 |
| 29 | Accept | 5.9554 | 1.8831 | 2.9361 | 2.9544 | LSBoost | 78 | 0.0031809 | 1 |
| 30 | Accept | 4.1881 | 1.4461 | 2.9361 | 2.9547 | LSBoost | 62 | 0.35508 | 50 |
__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 167.549 seconds.
Total objective function evaluation time: 107.4784
Best observed feasible point:
Method NumLearningCycles LearnRate MinLeafSize
______ _________________ _________ ___________
Bag 498 NaN 2
Observed objective function value = 2.9361
Estimated objective function value = 2.9547
Function evaluation time = 10.4983
Best estimated feasible point (according to models):
Method NumLearningCycles LearnRate MinLeafSize
______ _________________ _________ ___________
Bag 491 NaN 2
Estimated objective function value = 2.9547
Estimated function evaluation time = 10.8111
Mdl =
classreg.learning.regr.RegressionBaggedEnsemble
ResponseName: 'Y'
CategoricalPredictors: []
ResponseTransform: 'none'
NumObservations: 94
HyperparameterOptimizationResults: [1×1 BayesianOptimization]
NumTrained: 491
Method: 'Bag'
LearnerNames: {'Tree'}
ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
FitInfo: []
FitInfoDescription: 'None'
Regularization: []
FResample: 1
Replace: 1
UseObsForLearner: [94×491 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
Искать оптимальный уровень древовидной сложности:
Перекрестный подтвердите набор ансамблей. Экспоненциально увеличьте уровень древовидной сложности для последующих ансамблей от пня решения (одно разделение) к в большей части n - 1 разделение. n является объемом выборки. Кроме того, отличайтесь темп обучения для каждого ансамбля между 0,1 к 1.
Оцените перекрестную подтвержденную среднеквадратическую ошибку (MSE) для каждого ансамбля.
Для уровня древовидной сложности , , сравните совокупный, перекрестный подтвержденный MSE ансамблей путем графического вывода их против количества изучения циклов. Постройте отдельные кривые для каждого темпа обучения на той же фигуре.
Выберите кривую, которая достигает минимального 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-кратной перекрестной проверки. Используя древовидный шаблон:
Отличайтесь максимальное количество разделений с помощью значений в последовательности . m таков что не больше, чем 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;

Каждая кривая содержит минимум перекрестный подтвержденный MSE, происходящий в оптимальном количестве деревьев в ансамбле.
Идентифицируйте максимальное количество разделений, количество деревьев и темп обучения, который приводит к самому низкому MSE в целом.
[minErr,minErrIdxLin] = min(error(:));
[idxNumTrees,idxMNS,idxLR] = ind2sub(size(error),minErrIdxLin);
fprintf('\nMin. MSE = %0.5f',minErr)Min. MSE = 17.01148
fprintf('\nOptimal Parameter Values:\nNum. Trees = %d',idxNumTrees);Optimal Parameter Values: Num. Trees = 38
fprintf('\nMaxNumSplits = %d\nLearning Rate = %0.2f\n',... maxNumSplits(idxMNS),learnRate(idxLR))
MaxNumSplits = 4 Learning Rate = 0.10
Создайте прогнозирующий ансамбль на основе оптимальных гиперпараметров и целого набора обучающих данных.
tFinal = templateTree('MaxNumSplits',maxNumSplits(idxMNS),'Surrogate','on'); MdlFinal = fitrensemble(Tbl,'MPG','NumLearningCycles',idxNumTrees, ... 'Learners',tFinal,'LearnRate',learnRate(idxLR))
MdlFinal =
classreg.learning.regr.RegressionEnsemble
PredictorNames: {'Cylinders' 'Displacement' 'Horsepower' 'Weight'}
ResponseName: 'MPG'
CategoricalPredictors: []
ResponseTransform: 'none'
NumObservations: 94
NumTrained: 38
Method: 'LSBoost'
LearnerNames: {'Tree'}
ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
FitInfo: [38×1 double]
FitInfoDescription: {2×1 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 | | runtime | (observed) | (estim.) | ycles | | |
|====================================================================================================================|
| 1 | Best | 3.3989 | 0.702 | 3.3989 | 3.3989 | 26 | 0.072054 | 3 |
| 2 | Accept | 6.0978 | 4.5175 | 3.3989 | 3.5582 | 170 | 0.0010295 | 70 |
| 3 | Best | 3.2848 | 7.3601 | 3.2848 | 3.285 | 273 | 0.61026 | 6 |
| 4 | Accept | 6.1839 | 1.9371 | 3.2848 | 3.2849 | 80 | 0.0016871 | 1 |
| 5 | Best | 3.0154 | 0.33314 | 3.0154 | 3.016 | 12 | 0.21457 | 2 |
| 6 | Accept | 3.3146 | 0.32962 | 3.0154 | 3.16 | 10 | 0.18164 | 8 |
| 7 | Accept | 3.0512 | 0.31776 | 3.0154 | 3.1213 | 10 | 0.26719 | 16 |
| 8 | Best | 3.0013 | 0.29751 | 3.0013 | 3.0891 | 10 | 0.27408 | 1 |
| 9 | Best | 2.9797 | 0.31657 | 2.9797 | 2.9876 | 10 | 0.28184 | 2 |
| 10 | Accept | 3.0646 | 0.59906 | 2.9797 | 3.0285 | 23 | 0.9922 | 1 |
| 11 | Accept | 2.9825 | 0.31056 | 2.9797 | 2.978 | 10 | 0.54187 | 1 |
| 12 | Best | 2.9526 | 0.31189 | 2.9526 | 2.9509 | 10 | 0.49116 | 1 |
| 13 | Best | 2.9281 | 0.98544 | 2.9281 | 2.9539 | 38 | 0.30709 | 1 |
| 14 | Accept | 2.944 | 0.60449 | 2.9281 | 2.9305 | 20 | 0.40583 | 1 |
| 15 | Best | 2.9128 | 0.50753 | 2.9128 | 2.9237 | 20 | 0.39672 | 1 |
| 16 | Best | 2.9077 | 0.58614 | 2.9077 | 2.919 | 21 | 0.38157 | 1 |
| 17 | Accept | 3.3932 | 0.36691 | 2.9077 | 2.919 | 10 | 0.97862 | 99 |
| 18 | Accept | 6.2938 | 0.33318 | 2.9077 | 2.9204 | 10 | 0.0074886 | 95 |
| 19 | Accept | 3.0049 | 0.4842 | 2.9077 | 2.9114 | 15 | 0.45073 | 9 |
| 20 | Best | 2.9072 | 2.2091 | 2.9072 | 2.9111 | 87 | 0.152 | 1 |
|====================================================================================================================|
| Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | NumLearningC-| LearnRate | MaxNumSplits |
| | result | | runtime | (observed) | (estim.) | ycles | | |
|====================================================================================================================|
| 21 | Accept | 2.9217 | 0.53329 | 2.9072 | 2.9154 | 21 | 0.31845 | 1 |
| 22 | Best | 2.8994 | 4.8548 | 2.8994 | 2.917 | 189 | 0.098534 | 1 |
| 23 | Accept | 2.9055 | 7.6922 | 2.8994 | 2.9166 | 310 | 0.15505 | 1 |
| 24 | Accept | 2.9264 | 1.4456 | 2.8994 | 2.9012 | 61 | 0.23387 | 1 |
| 25 | Accept | 3.0869 | 0.34623 | 2.8994 | 2.9169 | 10 | 0.48674 | 27 |
| 26 | Best | 2.8942 | 7.7285 | 2.8942 | 2.8912 | 319 | 0.11093 | 1 |
| 27 | Accept | 3.0175 | 0.97891 | 2.8942 | 2.8889 | 38 | 0.32187 | 4 |
| 28 | Accept | 2.9049 | 3.4053 | 2.8942 | 2.8941 | 141 | 0.13325 | 1 |
| 29 | Accept | 3.0477 | 0.30373 | 2.8942 | 2.8939 | 10 | 0.28155 | 97 |
| 30 | Accept | 3.0563 | 0.3135 | 2.8942 | 2.894 | 10 | 0.53101 | 3 |
__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 91.847 seconds.
Total objective function evaluation time: 51.012
Best observed feasible point:
NumLearningCycles LearnRate MaxNumSplits
_________________ _________ ____________
319 0.11093 1
Observed objective function value = 2.8942
Estimated objective function value = 2.894
Function evaluation time = 7.7285
Best estimated feasible point (according to models):
NumLearningCycles LearnRate MaxNumSplits
_________________ _________ ____________
319 0.11093 1
Estimated objective function value = 2.894
Estimated function evaluation time = 7.9767
mdl =
classreg.learning.regr.RegressionEnsemble
PredictorNames: {'Cylinders' 'Displacement' 'Horsepower' 'Weight'}
ResponseName: 'MPG'
CategoricalPredictors: []
ResponseTransform: 'none'
NumObservations: 94
HyperparameterOptimizationResults: [1×1 BayesianOptimization]
NumTrained: 319
Method: 'LSBoost'
LearnerNames: {'Tree'}
ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
FitInfo: [319×1 double]
FitInfoDescription: {2×1 cell}
Regularization: []
Properties, Methods
Tbl Выборочные данныеВыборочные данные раньше обучали модель, заданную как таблица. Каждая строка Tbl соответствует одному наблюдению, и каждый столбец соответствует одной переменной прогноза. Tbl может содержать один дополнительный столбец для переменной отклика. Многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов не позволены.
Если Tbl содержит переменную отклика, и вы хотите использовать все остающиеся переменные в качестве предикторов, затем задать переменную отклика с помощью ResponseVarName.
Если Tbl содержит переменную отклика, и вы хотите использовать подмножество остающихся переменных только как предикторы, затем задать формулу с помощью formula.
Если Tbl не содержит переменную отклика, то задайте данные об ответе с помощью Y. Длина переменной отклика и количество строк Tbl должны быть равными.
Чтобы сохранить память и время выполнения, предоставьте X и Y вместо Tbl.
Типы данных: table
ResponseVarName — Имя переменной откликаTblИмя переменной отклика, заданное как имя переменной отклика в Tbl.
Необходимо задать ResponseVarName как вектор символов или представить скаляр в виде строки. Например, если Tbl.Y является переменной отклика, то задайте ResponseVarName как 'Y'. В противном случае fitrensemble обрабатывает все столбцы Tbl как переменные прогноза.
Типы данных: char | string
formula — Explanatory ответа и подмножество переменных прогнозаОбъяснительная модель ответа и подмножество переменных прогноза, заданных как вектор символов или скаляр строки в форме 'Y~X1+X2+X3'. В этой форме Y представляет переменную отклика, и X1, X2, и X3 представляет переменные прогноза. Переменные должны быть именами переменных в Tbl (Tbl.Properties.VariableNames).
Чтобы задать подмножество переменных в Tbl как предикторы для обучения модель, используйте формулу. Если вы задаете формулу, то программное обеспечение не использует переменных в Tbl, которые не появляются в formula.
Типы данных: char | string
X Данные о предиктореДанные о предикторе, заданные как числовая матрица.
Каждая строка соответствует одному наблюдению, и каждый столбец соответствует одной переменной прогноза.
Длина Y и количество строк X должны быть равными.
Чтобы задать имена предикторов в порядке их внешнего вида в X, используйте аргумент пары "имя-значение" PredictorNames.
Типы данных: single | double
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'NumLearningCycles',500,'Method','Bag','Learners',templateTree(),'CrossVal','on' перекрестный подтверждает ансамбль 500 сложенных в мешок деревьев регрессии с помощью 10-кратной перекрестной проверки.Вы не можете использовать аргумент пары "имя-значение" перекрестной проверки наряду с аргументом пары "имя-значение" 'OptimizeHyperparameters'. Можно изменить перекрестную проверку для 'OptimizeHyperparameters' только при помощи аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'.
'Method' — Метод агрегации ансамбля'LSBoost' (значение по умолчанию) | 'Bag'Метод агрегации ансамбля, заданный как пара, разделенная запятой, состоящая из 'Method' и 'LSBoost' или 'Bag'.
| Значение | Метод | Примечания |
|---|---|---|
'LSBoost' | Наименьшие квадраты, повышающие (LSBoost) | Можно задать темп обучения для уменьшения при помощи аргумента пары "имя-значение" 'LearnRate'. |
'Bag' | Загрузите агрегацию (укладывание в мешки, например, случайный лес [2]) | Использование fitrensemble, висящее как мешок со случайными выборами предиктора в каждом разделении (случайный лес) по умолчанию. Чтобы использовать укладывание в мешки без случайных выборов, используйте древовидных учеников, значением 'NumVariablesToSample' которых является 'all'. |
Для получения дополнительной информации об алгоритмах агрегации ансамбля и примерах, см. Алгоритмы, Алгоритмы Ансамбля, и Выберите Applicable Ensemble Aggregation Method.
Пример: 'Method','Bag'
'NumLearningCycles' — Количество ансамбля, изучающего циклы100 (значение по умолчанию) | положительное целое числоКоличество ансамбля, изучающего циклы, заданные как пара, разделенная запятой, состоящая из 'NumLearningCycles' и положительного целого числа. В каждом цикле изучения программное обеспечение обучает одного слабого ученика каждому объекту шаблона в Learners. Следовательно, программное обеспечение обучает учеников NumLearningCycles*numel(Learners).
Программное обеспечение составляет ансамбль, использующий всех обученных учеников, и хранит их в Mdl.Trained.
Для получения дополнительной информации смотрите Советы.
Пример: 'NumLearningCycles',500
Типы данных: single | double
'Learners' — Слабые ученики, чтобы использовать в ансамбле'tree' (значение по умолчанию) | древовидный объект шаблона | вектор ячейки древовидных объектов шаблонаСлабые ученики, чтобы использовать в ансамбле, заданном как пара, разделенная запятой, состоящая из 'Learners' и 'tree', древовидного объекта шаблона или вектора ячейки древовидных объектов шаблона.
'tree' (значение по умолчанию) — fitrensemble использует учеников дерева регрессии по умолчанию, который совпадает с использованием templateTree(). Значения по умолчанию templateTree() зависят от значения 'Method'.
Для сложенных в мешок деревьев решений максимальным количеством разделений решения ('MaxNumSplits') является n–1, где n является количеством наблюдений. Количество предикторов, чтобы выбрать наугад для каждого разделения ('NumVariablesToSample') является одной третью количества предикторов. Поэтому fitrensemble выращивает глубокие деревья решений. Можно вырастить более мелкие деревья, чтобы уменьшать сложность модели или время вычисления.
Для повышенных деревьев решений 'MaxNumSplits' равняется 10, и 'NumVariablesToSample' является 'all'. Поэтому fitrensemble выращивает мелкие деревья решений. Можно вырастить более глубокие деревья для лучшей точности.
Смотрите templateTree для настроек по умолчанию слабого ученика.
Древовидный объект шаблона — fitrensemble использует древовидный объект шаблона, созданный templateTree. Используйте аргументы пары "имя-значение" templateTree, чтобы задать настройки древовидных учеников.
Вектор ячейки объектов шаблона дерева m — fitrensemble выращивает деревья регрессии m на изучение цикла (см. NumLearningCycles). Например, для ансамбля, состоявшего из двух типов деревьев регрессии, предоставьте {t1 t2}, где t1 и t2 являются объектами шаблона дерева регрессии, возвращенными templateTree.
Для получения дополнительной информации на количестве учеников, чтобы обучаться, смотрите NumLearningCycles и Советы.
Пример: 'Learners',templateTree('MaxNumSplits',5)
'NPrint' — Частота распечатки'off' (значение по умолчанию) | положительное целое числоЧастота распечатки, заданная как пара, разделенная запятой, состоящая из 'NPrint' и положительного целого числа или 'off'.
Чтобы отследить количество слабых учеников или сгибов что fitrensemble, обученный до сих пор, задайте положительное целое число. Таким образом, если вы задаете положительный целочисленный m:
Также не задавая опции перекрестной проверки (например, CrossVal), затем fitrensemble отображает сообщение к командной строке каждый раз, когда это завершает учебный m слабые ученики.
И опция перекрестной проверки, затем fitrensemble отображает сообщение к командной строке каждый раз, когда это закончило учебные сгибы m.
Если вы задаете 'off', то fitrensemble не отображает сообщение, когда это завершает учебных слабых учеников.
Когда обучение ансамбль многих слабых учеников на большом наборе данных, задайте положительное целое число для NPrint.
Пример: 'NPrint',5
Типы данных: single | double | char | string
NumBins Количество интервалов для числовых предикторов[] (пустое) (значение по умолчанию) | положительный целочисленный скалярКоличество интервалов для числовых предикторов, заданных как пара, разделенная запятой, состоящая из 'NumBins' и положительного целочисленного скаляра.
Если значение 'NumBins' пусто (значение по умолчанию), то программное обеспечение не делает интервала никакие предикторы.
Если вы задаете значение 'NumBins' как положительный целочисленный скаляр, то интервалы программного обеспечения каждый числовой предиктор в конкретное количество равновероятных интервалов, и затем выращивает деревья на индексах интервала вместо исходных данных.
Если значение 'NumBins' превышает номер (u) уникальных значений для предиктора, то интервалы fitrensemble предиктор в интервалы u.
fitrensemble не делает интервала категориальные предикторы.
Когда вы используете большой обучающий набор данных, эта опция раскладывания ускоряет обучение, но вызывает потенциальное уменьшение в точности. Можно попробовать 'NumBins',50 сначала, и затем изменить значение 'NumBins' в зависимости от точности и учебной скорости.
Обученная модель хранит ребра интервала в свойстве BinEdges.
Пример: 'NumBins',50
Типы данных: single | double
'CategoricalPredictors' — Категориальный список предикторов'all'Категориальный список предикторов, заданный как пара, разделенная запятой, состоящая из 'CategoricalPredictors' и одно из значений в этой таблице.
| Значение | Описание |
|---|---|
| Вектор положительных целых чисел | Запись в векторе является индексным значением, соответствующим столбцу данных о предикторе (X или Tbl), который содержит категориальную переменную. |
| Логический вектор | Запись true означает, что соответствующий столбец данных о предикторе (X или Tbl) является категориальной переменной. |
| Символьная матрица | Каждая строка матрицы является именем переменной прогноза. Имена должны совпадать с записями в PredictorNames. Заполните имена дополнительными пробелами, таким образом, каждая строка символьной матрицы имеет ту же длину. |
| Массив строк или массив ячеек из символьных векторов | Каждый элемент в массиве является именем переменной прогноза. Имена должны совпадать с записями в PredictorNames. |
| все | Все предикторы являются категориальными. |
По умолчанию, если данные о предикторе находятся в таблице (Tbl), fitrensemble принимает, что переменная является категориальной, если это содержит логические значения, категориальные значения, массив строк или массив ячеек из символьных векторов. Если данные о предикторе являются матрицей (X), fitrensemble принимает, что все предикторы непрерывны. Чтобы идентифицировать любые категориальные предикторы, когда данные будут матрицей, используйте аргумент пары "имя-значение" 'CategoricalPredictors'.
Пример: 'CategoricalPredictors','all'
Типы данных: single | double | logical | char | string | cell
'PredictorNames' — Имена переменной прогнозаИмена переменной прогноза, заданные как пара, разделенная запятой, состоящая из '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', чтобы выбрать который переменные прогноза использовать в обучении. Таким образом, fitrensemble использует только переменные прогноза в PredictorNames и переменную отклика в обучении.
PredictorNames должен быть подмножеством Tbl.Properties.VariableNames и не может включать имя переменной отклика.
По умолчанию PredictorNames содержит имена всех переменных прогноза.
Это - хорошая практика, чтобы задать предикторы для обучения с помощью или 'PredictorNames' или formula только.
Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}
Типы данных: string | cell
'ResponseName' — Имя переменной отклика'Y' (значение по умолчанию) | вектор символов | представляет скаляр в виде строкиИмя переменной отклика, заданное как пара, разделенная запятой, состоящая из 'ResponseName' и вектора символов или скаляра строки.
Если вы предоставляете Y, то можно использовать 'ResponseName', чтобы задать имя для переменной отклика.
Если вы предоставляете ResponseVarName или formula, то вы не можете использовать 'ResponseName'.
Пример: 'ResponseName','response'
Типы данных: char | string
'ResponseTransform' — Преобразование ответа'none' (значение по умолчанию) | указатель на функциюПреобразование ответа, заданное как пара, разделенная запятой, состоящая из 'ResponseTransform' и или 'none' или указатель на функцию. Значением по умолчанию является 'none', что означает @(y)y или никакое преобразование. Для функции MATLAB® или функции вы задаете, используете ее указатель на функцию. Указатель на функцию должен принять вектор (исходные значения ответа) и возвратить вектор, одного размера (преобразованные значения ответа).
Пример: Предположим, что вы создаете указатель на функцию, который применяет экспоненциальное преобразование к входному вектору при помощи myfunction = @(y)exp(y). Затем можно задать преобразование ответа как 'ResponseTransform',myfunction.
Типы данных: char | string | function_handle
'CrossVal' — Флаг перекрестной проверки'off' (значение по умолчанию) | 'on' Флаг перекрестной проверки, заданный как пара, разделенная запятой, состоящая из 'Crossval' и 'on' или 'off'.
Если вы задаете 'on', то программное обеспечение реализует 10-кратную перекрестную проверку.
Чтобы заменить эту установку перекрестной проверки, используйте один из этих аргументов пары "имя-значение": CVPartition, Holdout, KFold или Leaveout. Чтобы создать перекрестную подтвержденную модель, можно использовать один аргумент пары "имя-значение" перекрестной проверки за один раз только.
Также перекрестный подтвердите позже путем передачи Mdl crossval или crossval.
Пример: 'Crossval','on'
'CVPartition' — Раздел перекрестной проверки[] (значение по умолчанию) | объект раздела cvpartitionРаздел перекрестной проверки, заданный как пара, разделенная запятой, состоящая из 'CVPartition' и объекта раздела cvpartition, создается cvpartition. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold или Leaveout.
Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5). Затем можно задать перекрестную подтвержденную модель при помощи 'CVPartition',cvp.
'Holdout' — Часть данных для валидации затяжкиЧасть данных используется для валидации затяжки, заданной как пара, разделенная запятой, состоящая из 'Holdout' и скалярного значения в области значений (0,1). Если вы задаете 'Holdout',p, то программное обеспечение завершает эти шаги:
Случайным образом выберите и зарезервируйте % p*100 данных как данные о валидации и обучите модель с помощью остальной части данных.
Сохраните компактную, обученную модель в свойстве Trained перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold или Leaveout.
Пример: 'Holdout',0.1
Типы данных: double | single
'KFold' — Количество сгибов10 (значение по умолчанию) | положительное целочисленное значение, больше, чем 1Количество сгибов, чтобы использовать в перекрестной подтвержденной модели, заданной как пара, разделенная запятой, состоящая из 'KFold' и положительного целочисленного значения, больше, чем 1. Если вы задаете 'KFold',k, то программное обеспечение завершает эти шаги:
Случайным образом разделите данные в наборы k.
Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью другого k – 1 набор.
Сохраните k компактные, обученные модели в ячейках k-by-1 вектор ячейки в свойстве Trained перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold или Leaveout.
Пример: 'KFold',5
Типы данных: single | double
'Leaveout' — Флаг перекрестной проверки "Пропускает один"'off' (значение по умолчанию) | 'on'Флаг перекрестной проверки "Пропускает один", заданный как пара, разделенная запятой, состоящая из 'Leaveout' и 'on' или 'off'. Если вы задаете 'Leaveout','on', то, для каждого из наблюдений n (где n является количеством наблюдений, исключая недостающие наблюдения, заданные в свойстве NumObservations модели), программное обеспечение завершает эти шаги:
Зарезервируйте наблюдение как данные о валидации и обучите модель с помощью другого n – 1 наблюдение.
Сохраните n компактные, обученные модели в ячейках n-by-1 вектор ячейки в свойстве Trained перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold или Leaveout.
Пример: 'Leaveout','on'
'Weights' — Веса наблюденияTblВеса наблюдения, заданные как пара, разделенная запятой, состоящая из 'Weights' и числовой вектор положительных значений или имя переменной в Tbl. Программное обеспечение взвешивает наблюдения в каждой строке X или Tbl с соответствующим значением в Weights. Размер Weights должен равняться количеству строк X или Tbl.
Если вы задаете входные данные как таблицу Tbl, то Weights может быть именем переменной в Tbl, который содержит числовой вектор. В этом случае необходимо задать Weights как вектор символов или представить скаляр в виде строки. Например, если вектор весов, W хранится как Tbl.W, то задают его как 'W'. В противном случае программное обеспечение обрабатывает все столбцы Tbl, включая W, как предикторы или ответ когда обучение модель.
Программное обеспечение нормирует Weights, чтобы суммировать до значения априорной вероятности в соответствующем классе.
По умолчанию Weights является , где ones(n,1)n является количеством наблюдений в X или Tbl.
Типы данных: double | single | char | string
'FResample' — Часть набора обучающих данных, чтобы передискретизировать1 (значение по умолчанию) | положительная скалярная величина в (0,1]Часть набора обучающих данных, чтобы передискретизировать для каждого слабого ученика, заданного как пара, разделенная запятой, состоящая из 'FResample' и положительной скалярной величины в (0,1].
Чтобы использовать 'FResample', задайте 'bag' для Method или установите Resample на 'on'.
Пример: 'FResample',0.75
Типы данных: single | double
замена Отметьте указание к выборке с заменой'on' (значение по умолчанию) | 'off'Отметьте указание на выборку с помощью замены, заданной как пара, разделенная запятой, состоящая из 'Replace' и 'off' или 'on'.
Для 'on' программное обеспечение выбирает учебные наблюдения с заменой.
Для 'off' программное обеспечение выбирает учебные наблюдения без замены. Если вы устанавливаете Resample на 'on', то наблюдения обучения выборкам программного обеспечения, принимающие универсальные веса. Если вы также задаете повышающий метод, то программное обеспечение повышает путем перевзвешивания наблюдений.
Если вы не устанавливаете Method на 'bag' или устанавливаете Resample на 'on', Replace не имеет никакого эффекта.
Пример: 'Replace','off'
передискретизация Отметьте указание, чтобы передискретизировать'off' | 'on'Отметьте указание, чтобы передискретизировать, заданный как пара, разделенная запятой, состоящая из 'Resample' и 'off' или 'on'.
Если Method является повышающим методом, то:
'Resample','on' задает к демонстрационным учебным наблюдениям с помощью обновленных весов в качестве вероятностей выборки многочлена.
'Resample','off' (значение по умолчанию) задает, чтобы повторно взвесить наблюдения в каждой итерации изучения.
Если Method является 'bag', то 'Resample' должен быть 'on'. Программное обеспечение передискретизирует часть учебных наблюдений (см. FResample) с или без замены (см. Replace).
Если вы задаете, чтобы передискретизировать использование Resample, то это - хорошая практика, чтобы передискретизировать к целому набору данных. Таким образом, используйте настройку по умолчанию 1 для FResample.
'LearnRate' — Темп обучения для уменьшения1 (значение по умолчанию) | числовой скаляр в (0,1]Темп обучения для уменьшения, заданного как пара, разделенная запятой, состоящая из числового скаляра в интервале (0,1].
Чтобы обучить ансамбль, использующий уменьшение, установите LearnRate на значение меньше, чем 1, например, 0.1 является популярным выбором. Обучение ансамбль, использующий уменьшение, требует большего количества итераций изучения, но часто достигает лучшей точности.
Пример: 'LearnRate',0.1
Типы данных: single | double
'OptimizeHyperparameters' — Параметры, чтобы оптимизировать'none' (значение по умолчанию) | 'auto' | 'all' | массив строк или массив ячеек имеющих право названий параметра | вектор объектов optimizableVariableПараметры, чтобы оптимизировать, заданный как пара, разделенная запятой, состоящая из 'OptimizeHyperparameters' и одно из следующего:
'none' Не оптимизировать.
'auto' Используйте {'Method','NumLearningCycles','LearnRate'} наряду с параметрами по умолчанию для заданного Learners:
Learners = 'tree' (значение по умолчанию) — {'MinLeafSize'}
Для гипероптимизации параметров управления Learners должен быть отдельным аргументом, не массивом строк или массивом ячеек.
все Оптимизируйте все имеющие право параметры.
Массив строк или массив ячеек имеющих право названий параметра
Вектор объектов optimizableVariable, обычно вывод hyperparameters
Оптимизация пытается минимизировать потерю перекрестной проверки (ошибка) для fitrensemble путем варьирования параметров. Чтобы управлять типом перекрестной проверки и другими аспектами оптимизации, используйте пару "имя-значение" HyperparameterOptimizationOptions.
Значения 'OptimizeHyperparameters' заменяют любые значения, вы устанавливаете использование других аргументов пары "имя-значение". Например, установка 'OptimizeHyperparameters' к 'auto' заставляет значения 'auto' применяться.
Имеющие право параметры для fitrensemble:
Method — Имеющими право методами является 'Bag' или 'LSBoost'.
NumLearningCycles — fitrensemble ищет среди положительных целых чисел, по умолчанию масштабируемых журналом с областью значений [10,500].
LearnRate — fitrensemble ищет среди положительных реалов, по умолчанию масштабируемых журналом с областью значений [1e-3,1].
MinLeafSize — fitrensemble ищет среди целых чисел, масштабируемых журналом в области значений [1,max(2,floor(NumObservations/2))].
MaxNumSplits — fitrensemble ищет среди целых чисел, масштабируемых журналом в области значений [1,max(2,NumObservations-1)].
NumVariablesToSample — fitrensemble ищет среди целых чисел в области значений [1,max(2,NumPredictors)].
Установите параметры не по умолчанию путем передачи вектора объектов optimizableVariable, которые имеют значения не по умолчанию. Например,
load carsmall params = hyperparameters('fitrensemble',[Horsepower,Weight],MPG,'Tree'); params(4).Range = [1,20];
Передайте params как значение OptimizeHyperparameters.
По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков, целевая функция является журналом (1 + потеря перекрестной проверки) для регрессии и misclassification уровня для классификации. Чтобы управлять итеративным отображением, установите поле Verbose аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'. Чтобы управлять графиками, установите поле ShowPlots аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'.
Для примера смотрите, Оптимизируют Ансамбль Регрессии.
Пример: 'OptimizeHyperparameters',{'Method','NumLearningCycles','LearnRate','MinLeafSize','MaxNumSplits'}
'HyperparameterOptimizationOptions' — Опции для оптимизацииОпции для оптимизации, заданной как пара, разделенная запятой, состоящая из 'HyperparameterOptimizationOptions' и структуры. Этот аргумент изменяет эффект аргумента пары "имя-значение" OptimizeHyperparameters. Все поля в структуре являются дополнительными.
| Имя поля | Значения | Значение по умолчанию |
|---|---|---|
Optimizer |
| 'bayesopt' |
AcquisitionFunctionName |
Приобретение функционирует, чьи имена включают | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | Максимальное количество оценок целевой функции. | 30 для 'bayesopt' или 'randomsearch' и целой сетки для 'gridsearch' |
MaxTime | Ограничение по времени, заданное как положительное действительное. Ограничение по времени находится в секундах, как измерено | Inf |
NumGridDivisions | Для 'gridsearch', количества значений в каждой размерности. Значение может быть вектором положительных целых чисел, дающих количество значений для каждой размерности или скаляр, который применяется ко всем размерностям. Это поле проигнорировано для категориальных переменных. | 10 |
ShowPlots | Логическое значение, указывающее, показать ли графики. Если true, это поле строит лучшее значение целевой функции против номера итерации. Если существуют один или два параметра оптимизации, и если Optimizer является 'bayesopt', то ShowPlots также строит модель целевой функции против параметров. | true |
SaveIntermediateResults | Логическое значение, указывающее, сохранить ли результаты, когда Optimizer является 'bayesopt'. Если true, это поле перезаписывает переменную рабочей области под названием 'BayesoptResults' в каждой итерации. Переменная является объектом BayesianOptimization. | false |
Verbose | Отобразитесь к командной строке.
Для получения дополнительной информации смотрите
аргумент пары "имя-значение" | 1 |
UseParallel | Логическое значение, указывающее, запустить ли Байесовую оптимизацию параллельно, которая требует Parallel Computing Toolbox™. Для получения дополнительной информации смотрите Параллельную Байесовую Оптимизацию. | false |
Repartition | Логическое значение, указывающее, повторно разделить ли перекрестную проверку в каждой итерации. Если
| false |
| Используйте не больше, чем одни из следующих трех имен полей. | ||
CVPartition | Объект cvpartition, как создано cvpartition. | 'Kfold',5, если вы не задаете поля перекрестной проверки |
Holdout | Скаляр в области значений (0,1), представляющий часть затяжки. | |
Kfold | Целое число, больше, чем 1. | |
Пример: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)
Типы данных: struct
Mdl — Обученная модель ансамбля регрессииRegressionBaggedEnsemble | объект модели RegressionEnsemble | RegressionPartitionedEnsemble перекрестный подтвержденный объект моделиОбученная модель ансамбля, возвращенная как один из объектов модели в этой таблице.
| Объект модели | Задать какие-либо опции перекрестной проверки? | Установка 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 параллелизирует обучение с помощью Intel® Threading Building Blocks (TBB). Для получения дополнительной информации на Intel TBB, см. https://software.intel.com/en-us/intel-tbb.
[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.
Чтобы запуститься параллельно, установите опцию 'UseParallel' на true.
Чтобы выполнить параллельную гипероптимизацию параметров управления, используйте аргумент пары "имя-значение" 'HyperparameterOptions', struct('UseParallel',true) в вызове этой функции.
Для получения дополнительной информации о параллельной гипероптимизации параметров управления смотрите Параллельную Байесовую Оптимизацию.
Для более общей информации о параллельных вычислениях смотрите функции MATLAB Выполнения с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
RegressionBaggedEnsemble | RegressionEnsemble | RegressionPartitionedEnsemble | predict | templateTree
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.