Подгонка ансамбля учащихся для регрессии
возвращает обученный объект модели ансамбля регрессии (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 ®, можно получить тот же результат путем ввода
Mdl1 = fitrensemble(Tbl,MPG);
Используйте обученный регрессионный ансамбль, чтобы предсказать расход топлива для четырехцилиндрового автомобиля с 200-кубическим водоизмещением, 150 лошадиных сил и весом 3000 фунтов.
pMPG = predict(Mdl1,[4 200 150 3000])
pMPG = 25.6467
Обучите новый ансамбль, используя все предикторы в Tbl кроме Displacement.
formula = 'MPG ~ Cylinders + Horsepower + Weight';
Mdl2 = fitrensemble(Tbl,formula);Сравните MSE реституции между 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
В этом примере значения предиктора раскладывания сокращают время обучения без значительной потери точности. В целом, когда у вас есть большой набор данных, такой как в этом примере, использование опции binning ускоряет обучение, но вызывает потенциальное снижение точности. Если необходимо дополнительно сократить время обучения, укажите меньшее количество интервалов.
Воспроизведите привязанные данные предиктора при помощи 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 значения NaNс.
Оцените ошибку обобщения ансамбля усиленных регрессионых деревьев.
Загрузите 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 = 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 | 11.445 | 2.9726 | 2.9726 | Bag | 413 | - | 1 | | 2 | Accept | 6.2619 | 1.9956 | 2.9726 | 3.6133 | LSBoost | 57 | 0.0016067 | 6 | | 3 | Accept | 2.9975 | 0.92413 | 2.9726 | 2.9852 | Bag | 32 | - | 2 | | 4 | Accept | 4.1897 | 1.4237 | 2.9726 | 2.972 | Bag | 55 | - | 40 | | 5 | Accept | 6.3321 | 1.7526 | 2.9726 | 2.9715 | LSBoost | 55 | 0.001005 | 2 | | 6 | Best | 2.9714 | 1.1579 | 2.9714 | 2.9715 | Bag | 39 | - | 1 | | 7 | Best | 2.9615 | 1.5733 | 2.9615 | 2.9681 | Bag | 55 | - | 1 | | 8 | Accept | 3.0499 | 0.32211 | 2.9615 | 2.9873 | Bag | 10 | - | 1 | | 9 | Accept | 2.9855 | 12.596 | 2.9615 | 2.9633 | Bag | 500 | - | 1 | | 10 | Best | 2.928 | 7.6517 | 2.928 | 2.9317 | Bag | 282 | - | 2 | | 11 | Accept | 2.9362 | 8.0622 | 2.928 | 2.9336 | Bag | 304 | - | 2 | | 12 | Accept | 2.9316 | 6.9208 | 2.928 | 2.9327 | Bag | 247 | - | 2 | | 13 | Best | 2.9215 | 6.9252 | 2.9215 | 2.9299 | Bag | 242 | - | 2 | | 14 | Accept | 4.1882 | 14.861 | 2.9215 | 2.9298 | LSBoost | 498 | 0.011265 | 50 | | 15 | Accept | 4.1881 | 14.99 | 2.9215 | 2.9297 | LSBoost | 497 | 0.075987 | 50 | | 16 | Accept | 3.6293 | 1.0081 | 2.9215 | 2.9297 | LSBoost | 24 | 0.95396 | 1 | | 17 | Accept | 4.1881 | 2.9224 | 2.9215 | 2.9296 | LSBoost | 92 | 0.95228 | 49 | | 18 | Accept | 3.3804 | 0.53025 | 2.9215 | 2.9296 | LSBoost | 12 | 0.16163 | 1 | | 19 | Accept | 3.5064 | 14.503 | 2.9215 | 2.9296 | LSBoost | 473 | 0.043212 | 1 | | 20 | Accept | 3.5342 | 14.337 | 2.9215 | 2.9296 | LSBoost | 487 | 0.24602 | 1 | |===================================================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | Method | NumLearningC-| LearnRate | MinLeafSize | | | result | log(1+loss) | runtime | (observed) | (estim.) | | ycles | | | |===================================================================================================================================| | 21 | Accept | 2.9413 | 6.02 | 2.9215 | 2.9319 | Bag | 222 | - | 2 | | 22 | Accept | 2.9313 | 12.732 | 2.9215 | 2.931 | Bag | 500 | - | 2 | | 23 | Accept | 2.9496 | 10.56 | 2.9215 | 2.9332 | Bag | 395 | - | 2 | | 24 | Accept | 6.2871 | 0.46442 | 2.9215 | 2.9333 | LSBoost | 10 | 0.0077899 | 1 | | 25 | Accept | 3.5075 | 15.129 | 2.9215 | 2.9333 | LSBoost | 488 | 0.092689 | 1 | | 26 | Accept | 3.1057 | 0.57019 | 2.9215 | 2.9332 | LSBoost | 11 | 0.37151 | 6 | | 27 | Accept | 3.3708 | 0.46133 | 2.9215 | 2.9332 | LSBoost | 10 | 0.18122 | 6 | | 28 | Accept | 3.3523 | 0.49273 | 2.9215 | 2.9333 | LSBoost | 10 | 0.40692 | 2 | | 29 | Accept | 3.6144 | 15.255 | 2.9215 | 2.9331 | LSBoost | 497 | 0.44774 | 7 | | 30 | Accept | 3.2239 | 0.50452 | 2.9215 | 2.9331 | LSBoost | 10 | 0.31373 | 36 |

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 234.2022 seconds
Total objective function evaluation time: 188.0911
Best observed feasible point:
Method NumLearningCycles LearnRate MinLeafSize
______ _________________ _________ ___________
Bag 242 NaN 2
Observed objective function value = 2.9215
Estimated objective function value = 2.9329
Function evaluation time = 6.9252
Best estimated feasible point (according to models):
Method NumLearningCycles LearnRate MinLeafSize
______ _________________ _________ ___________
Bag 282 NaN 2
Estimated objective function value = 2.9331
Estimated function evaluation time = 7.7082
Mdl =
RegressionBaggedEnsemble
ResponseName: 'Y'
CategoricalPredictors: []
ResponseTransform: 'none'
NumObservations: 94
HyperparameterOptimizationResults: [1x1 BayesianOptimization]
NumTrained: 282
Method: 'Bag'
LearnerNames: {'Tree'}
ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
FitInfo: []
FitInfoDescription: 'None'
Regularization: []
FResample: 1
Replace: 1
UseObsForLearner: [94x282 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 = 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.332 | 3.3955 | 3.3955 | 26 | 0.072054 | 3 | | 2 | Accept | 6.0976 | 6.9885 | 3.3955 | 3.5549 | 170 | 0.0010295 | 70 | | 3 | Best | 3.2914 | 10.751 | 3.2914 | 3.2917 | 273 | 0.61026 | 6 | | 4 | Accept | 6.1839 | 3.4531 | 3.2914 | 3.2915 | 80 | 0.0016871 | 1 | | 5 | Best | 3.0379 | 1.7951 | 3.0379 | 3.0384 | 18 | 0.21288 | 31 | | 6 | Accept | 3.052 | 1.1116 | 3.0379 | 3.0401 | 28 | 0.18021 | 13 | | 7 | Best | 2.9642 | 2.2063 | 2.9642 | 2.9701 | 32 | 0.24179 | 5 | | 8 | Best | 2.9446 | 1.2017 | 2.9446 | 2.9413 | 21 | 0.25944 | 1 | | 9 | Best | 2.9387 | 0.73108 | 2.9387 | 2.94 | 18 | 0.26309 | 1 | | 10 | Accept | 3.0469 | 0.87257 | 2.9387 | 2.9414 | 10 | 0.25476 | 1 | | 11 | Accept | 3.0784 | 0.77319 | 2.9387 | 2.9408 | 11 | 0.9742 | 2 | | 12 | Best | 2.9367 | 1.6773 | 2.9367 | 2.942 | 25 | 0.47913 | 1 | | 13 | Best | 2.8952 | 1.2261 | 2.8952 | 2.9033 | 28 | 0.3572 | 1 | | 14 | Accept | 2.9054 | 0.94135 | 2.8952 | 2.9041 | 29 | 0.3393 | 1 | | 15 | Best | 2.8928 | 1.4597 | 2.8928 | 2.9007 | 28 | 0.355 | 1 | | 16 | Accept | 2.9008 | 1.3572 | 2.8928 | 2.9006 | 31 | 0.34654 | 1 | | 17 | Accept | 2.8939 | 1.5636 | 2.8928 | 2.8991 | 26 | 0.35626 | 1 | | 18 | Accept | 2.9109 | 0.95378 | 2.8928 | 2.8999 | 22 | 0.35898 | 1 | | 19 | Accept | 2.9078 | 1.1717 | 2.8928 | 2.901 | 31 | 0.3438 | 1 | | 20 | Accept | 2.9139 | 1.7969 | 2.8928 | 2.9018 | 33 | 0.32636 | 1 | |====================================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | NumLearningC-| LearnRate | MaxNumSplits | | | result | log(1+loss) | runtime | (observed) | (estim.) | ycles | | | |====================================================================================================================| | 21 | Accept | 2.901 | 0.97123 | 2.8928 | 2.9016 | 24 | 0.36235 | 1 | | 22 | Accept | 6.4217 | 0.45103 | 2.8928 | 2.902 | 10 | 0.0010438 | 2 | | 23 | Accept | 6.232 | 0.81571 | 2.8928 | 2.9007 | 10 | 0.010918 | 1 | | 24 | Accept | 2.9491 | 0.70086 | 2.8928 | 2.9004 | 10 | 0.45635 | 2 | | 25 | Accept | 2.8951 | 15.429 | 2.8928 | 2.9005 | 406 | 0.093798 | 1 | | 26 | Accept | 2.9079 | 14.399 | 2.8928 | 2.9007 | 478 | 0.1292 | 1 | | 27 | Best | 2.8923 | 9.3649 | 2.8923 | 2.9008 | 221 | 0.11307 | 1 | | 28 | Accept | 3.1867 | 13.217 | 2.8923 | 2.9021 | 309 | 0.10879 | 83 | | 29 | Accept | 3.1689 | 0.48561 | 2.8923 | 2.9021 | 11 | 0.5454 | 98 | | 30 | Accept | 2.9006 | 3.8922 | 2.8923 | 2.9016 | 102 | 0.20979 | 1 |

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 152.6867 seconds
Total objective function evaluation time: 103.0901
Best observed feasible point:
NumLearningCycles LearnRate MaxNumSplits
_________________ _________ ____________
221 0.11307 1
Observed objective function value = 2.8923
Estimated objective function value = 2.8927
Function evaluation time = 9.3649
Best estimated feasible point (according to models):
NumLearningCycles LearnRate MaxNumSplits
_________________ _________ ____________
29 0.3393 1
Estimated objective function value = 2.9016
Estimated function evaluation time = 1.4054
mdl =
RegressionEnsemble
PredictorNames: {1x4 cell}
ResponseName: 'MPG'
CategoricalPredictors: []
ResponseTransform: 'none'
NumObservations: 94
HyperparameterOptimizationResults: [1x1 BayesianOptimization]
NumTrained: 29
Method: 'LSBoost'
LearnerNames: {'Tree'}
ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
FitInfo: [29x1 double]
FitInfoDescription: {2x1 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 - Объяснительная модель переменной отклика и подмножества переменных предиктораОбъяснительная модель переменной отклика и подмножества переменных предиктора, заданная в виде вектора символов или строкового скаляра в форме 'Y~x1+x2+x3'. В этой форме Y представляет переменную отклика, и x1, x2, и x3 представляют переменные предиктора.
Чтобы задать подмножество переменных в Tbl в качестве предикторов для настройки модели используйте формулу. Если вы задаете формулу, то программное обеспечение не использует никаких переменных в Tbl которые не появляются в formula.
Имена переменных в формуле должны быть обоими именами переменных в Tbl (Tbl.Properties.VariableNames) и действительный MATLAB® идентификаторы. Можно проверить имена переменных в Tbl при помощи isvarname функция. Если имена переменных недопустимы, можно преобразовать их, используя matlab.lang.makeValidName функция.
Типы данных: char | string
X - Данные предиктораДанные предиктора, заданные как числовая матрица.
Каждая строка соответствует одному наблюдению, и каждый столбец соответствует одной переменной предиктора.
Длина Y и количество строк X должно быть равным.
Чтобы задать имена предикторов в порядке их внешнего вида в X, используйте PredictorNames аргумент пары "имя-значение".
Типы данных: single | double
Задайте необязательные разделенные разделенными запятой парами 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'Метод агрегации ансамбля, заданный как разделенная разделенными запятой парами, состоящая из 'Method' и 'LSBoost' или 'Bag'.
| Значение | Метод | Примечания |
|---|---|---|
'LSBoost' | Ускорение методом наименьших квадратов (LSBoost) | Можно задать скорость обучения для усадки при помощи 'LearnRate' аргумент пары "имя-значение". |
'Bag' | Агрегация Bootstrap (упаковка, например, случайного леса [2]) | fitrensemble использует упаковку в мешки со случайными выборами предиктора при каждом разделении (случайный лес) по умолчанию. Чтобы использовать пакетирование без случайных выборок, используйте учеников дерева, чья 'NumVariablesToSample' значение 'all'. |
Для получения дополнительной информации об алгоритмах агрегации ансамбля и примерах смотрите Алгоритмы, Алгоритмы ансамбля и Выбор применимого метода агрегации ансамбля.
Пример: '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.
Чтобы получить воспроизводимые результаты, необходимо задать 'Reproducible' Аргумент пары "имя-значение" из templateTree как true если 'NumVariablesToSample' не 'all'.
Для получения дополнительной информации о количестве учащихся для обучения смотрите NumLearningCycles и советы.
Пример: 'Learners',templateTree('MaxNumSplits',5)
'NPrint' - Частота распечатки'off' (по умолчанию) | положительное целое числоЧастота распечатки, заданная как разделенная разделенными запятой парами, состоящая из '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' и положительный целочисленный скаляр.
Если на 'NumBins' значение пустое (по умолчанию), тогда fitrensemble не содержит предикторов.
Если вы задаете 'NumBins' значение как положительный целочисленный скаляр (numBins), затем fitrensemble помещает каждый числовой предиктор в самое большее numBins equiprobable bins, а затем выращивает деревья на индексах интервал вместо исходных данных.
Количество интервалов может быть меньше numBins если предиктор имеет меньше numBins уникальные значения.
fitrensemble не содержит категориальные предикторы.
Когда вы используете большой набор обучающих данных, эта опция binning ускоряет обучение, но может привести к потенциальному снижению точности. Можно попробовать 'NumBins',50 сначала, а затем измените значение в зависимости от точности и скорости обучения.
Обученная модель сохраняет границы интервала в BinEdges свойство.
Пример: 'NumBins',50
Типы данных: single | double
'CategoricalPredictors' - Категориальный список предикторов'all'Категориальный список предикторов, заданный как одно из значений в этой таблице.
| Значение | Описание |
|---|---|
| Вектор положительных целых чисел |
Каждая запись в векторе является индексом значением, соответствующим столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся между 1 и Если |
| Логический вектор |
A |
| Матрица символов | Каждая строка матрицы является именем переменной. Имена должны совпадать с записями в PredictorNames. Дополните имена дополнительными пробелами, чтобы каждая строка матрицы символов имела одинаковую длину. |
| Строковые массивы или массив ячеек векторов символов | Каждый элемент массива является именем переменной. Имена должны совпадать с записями в PredictorNames. |
'all' | Все предикторы категоричны. |
По умолчанию, если данные предиктора находятся в таблице (Tbl), fitrensemble принимает, что переменная категориальна, если это логический вектор, неупорядоченный категориальный вектор, символьный массив, строковые массивы или массив ячеек из векторов символов. Если данные предиктора являются матрицей (X), fitrensemble принимает, что все предикторы непрерывны. Чтобы идентифицировать любые другие предикторы как категориальные предикторы, задайте их с помощью 'CategoricalPredictors' аргумент имя-значение.
Пример: 'CategoricalPredictors','all'
Типы данных: single | double | logical | char | string | cell
'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' (по умолчанию) | символьный вектор | строковый скалярИмя переменной отклика, заданное как вектор символов или строковый скаляр.
Если вы поставляете Y, тогда можно использовать 'ResponseName' чтобы задать имя для переменной отклика.
Если вы поставляете ResponseVarName или formula, тогда вы не можете использовать 'ResponseName'.
Пример: 'ResponseName','response'
Типы данных: char | string
'ResponseTransform' - Преобразование отклика'none' (по умолчанию) | указатель на функциюПреобразование отклика, заданное как 'none' или указатель на функцию. Значение по умолчанию является 'none', что означает @(y)y, или без преобразования. Для функции MATLAB или функции, которую вы задаете, используйте указатель на функцию для преобразования отклика. Указатель на функцию должен принять вектор (исходные значения отклика) и вернуть вектор того же размера (преобразованные значения отклика).
Пример: Предположим, что вы создаете указатель на функцию, который применяет экспоненциальное преобразование к вектору входа при помощи myfunction = @(y)exp(y). Затем можно задать преобразование отклика следующим 'ResponseTransform',myfunction.
Типы данных: char | string | function_handle
'Options' - Опции для параллельных вычислений и установки случайных чиселОпции для параллельных вычислений и установки случайных чисел, заданные как структура. Создайте Options структура с statset.
Примечание
Вам нужно Parallel Computing Toolbox™, чтобы вычислить параллельно.
В этой таблице перечислены поля опций и их значения.
| Имя поля | Значение | Дефолт |
|---|---|---|
UseParallel | Установите это значение равным | false |
UseSubstreams | Установите это значение равным Чтобы вычислить воспроизводимо, установите | false |
Streams | Задайте это значение как RandStream объект или массив ячеек таких объектов. Используйте один объект, кроме тех случаев, когда UseParallel значение true и UseSubstreams значение false. В этом случае используйте массив ячеек, размер которого совпадает с размером параллельного пула. | Если вы не задаете Streams, затем fitrensemble использует поток по умолчанию или потоки. |
Для примера, использующего воспроизводимое параллельное обучение, смотрите Train Classification Ensemble in Parallel.
Для двухъядерных систем и выше, fitrensemble параллелизирует обучение с помощью Intel® Многопоточные базовые блоки (TBB). Поэтому установка UseParallel опция как true может не обеспечить значительную скорость на одном компьютере. Для получения дополнительной информации о Intel TBB смотрите https://software.intel.com/en-us/intel-tbb.
Пример: 'Options',statset('UseParallel',true)
Типы данных: struct
'CrossVal' - флаг перекрестной валидации'off' (по умолчанию) | 'on' Флаг перекрестной проверки, заданный как разделенная разделенными запятой парами, состоящая из 'Crossval' и 'on' или 'off'.
Если вы задаете 'on'затем программное обеспечение реализует 10-кратную перекрестную валидацию.
Чтобы переопределить этот параметр перекрестной проверки, используйте один из следующих аргументов пары "имя-значение": CVPartition, Holdout, KFold, или Leaveout. Чтобы создать перекрестно проверенную модель, можно использовать один аргумент пары "имя-значение" перекрестной валидации только за раз.
Другой способ - выполнить перекрестную проверку позже путем передачи Mdl на crossval или crossval.
Пример: 'Crossval','on'
'CVPartition' - Раздел перекрестной проверки[] (по умолчанию) | cvpartition Объект разделаРаздел перекрестной проверки, заданный как cvpartition объект раздела, созданный cvpartition. Объект раздела задает тип перекрестной валидации и индексацию для наборов обучения и валидации.
Чтобы создать перекрестно проверенную модель, можно задать только один из следующих четырех аргументов в виде имя-значение: CVPartition, Holdout, KFold, или Leaveout.
Пример: Предположим, что вы создаете случайный разбиение для 5-кратной перекрестной валидации при 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5). Затем можно задать перекрестно проверенную модель при помощи 'CVPartition',cvp.
'Holdout' - Доля данных для валидации отключенияДоля данных, используемых для валидации удержания, заданная в виде скалярного значения в области значений (0,1). Если вы задаете 'Holdout',p, затем программное обеспечение завершает следующие шаги:
Случайный выбор и резервирование p*100% данных в качестве данных валидации и train модели с использованием остальных данных.
Сохраните компактную, обученную модель в Trained свойство перекрестно проверенной модели.
Чтобы создать перекрестно проверенную модель, можно задать только один из следующих четырех аргументов в виде имя-значение: CVPartition, Holdout, KFold, или Leaveout.
Пример: 'Holdout',0.1
Типы данных: double | single
'KFold' - Количество складок10 (по умолчанию) | положительное целое значение, больше 1Количество складок для использования в перекрестно проверенной модели, заданное как положительное целое значение, больше 1. Если вы задаете 'KFold',k, затем программное обеспечение завершает следующие шаги:
Случайным образом разделите данные на k наборы.
Для каждого набора зарезервируйте набор как данные валидации и обучите модель, используя другой k - 1 комплект.
Сохраните k компактные, обученные модели в k-by-1 вектор камеры в Trained свойство перекрестно проверенной модели.
Чтобы создать перекрестно проверенную модель, можно задать только один из следующих четырех аргументов в виде имя-значение: CVPartition, Holdout, KFold, или Leaveout.
Пример: 'KFold',5
Типы данных: single | double
'Leaveout' - Оставьте один из флагов перекрестной проверки'off' (по умолчанию) | 'on'Выходной флаг перекрестной проверки, заданный как 'on' или 'off'. Если вы задаете 'Leaveout','on', затем для каждого из n наблюдений (где n - количество наблюдений, исключая недостающие наблюдения, заданное в NumObservations свойство модели), программное обеспечение завершает следующие шаги:
Зарезервируйте одно наблюдение как данные валидации и обучите модель с помощью другого n - 1 наблюдений.
Сохраните n компактные обученные модели в векторе камеры n-на-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 в сумму до 1.
По умолчанию Weights это таковые , где (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
'Replace' - Флаг, указывающий на выборку с заменой'on' (по умолчанию) | 'off'Флаг, указывающий выборку с заменой, задается как разделенная разделенными запятой парами, состоящая из 'Replace' и 'off' или 'on'.
Для 'on'программное обеспечение производит выборку обучающих наблюдений с заменой.
Для 'off'программное обеспечение производит выборку обучающих наблюдений без замены. Если вы задаете Resample на 'on'затем программное обеспечение дискретизирует обучающие наблюдения, принимая равномерные веса. Если вы также задаете метод бустинга, то программное обеспечение повышает путем перевешивания наблюдений.
Если вы не задаете Method на 'bag' или установите Resample на 'on', Replace не имеет эффекта.
Пример: 'Replace','off'
'Resample' - Флаг, указывающий на повторную выборку'off' | 'on'Флаг, указывающий на повторную выборку, заданный как разделенная разделенными запятой парами, состоящая из 'Resample' и 'off' или 'on'.
Если Method является методом бустинга, тогда:
'Resample','on' задает для выборки обучающие наблюдения, использующие обновленные веса в качестве вероятностей полиномиальной выборки.
'Resample','off'(по умолчанию) задает изменение веса наблюдений на каждой итерации обучения.
Если Method является 'bag', затем 'Resample' должен быть 'on'. Программа пересчитывает часть обучающих наблюдений (см FResample) с заменой или без (см. Replace).
Если вы задаете, чтобы выполнить повторную выборку с помощью Resample, тогда это хорошая практика, чтобы переопределить на целом наборе данных. То есть используйте настройку по умолчанию 1 для FResample.
'LearnRate' - Скорость обучения для усадки1 (по умолчанию) | числовой скаляр в (0,1]Скорость обучения для усадки, заданный как разделенная разделенными запятой парами, состоящая из 'LearnRate' и числовой скаляр в интервале (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 должен быть единственным аргументом, а не строковыми массивами или массивом ячеек.
'all' - Оптимизируйте все подходящие параметры.
Строковые массивы или массив ячеек из допустимых имен параметров
Вектор 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)].
Установите параметры nondefault путем передачи вектора optimizableVariable объекты, которые имеют значения nondefault. Для примера,
load carsmall params = hyperparameters('fitrensemble',[Horsepower,Weight],MPG,'Tree'); params(4).Range = [1,20];
Передайте params как значение OptimizeHyperparameters.
По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков целевой функцией является журнал ( 1 + потери перекрестной валидации) для регрессии и коэффициент неправильной классификации для классификации. Чтобы управлять итеративным отображением, установите Verbose поле 'HyperparameterOptimizationOptions' аргумент пары "имя-значение". Чтобы управлять графиками, установите ShowPlots поле 'HyperparameterOptimizationOptions' аргумент пары "имя-значение".
Для получения примера смотрите Optimize Regression Ensemble.
Пример: '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 | A 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™. Для получения дополнительной информации смотрите Введение в генерацию кода .
Для получения дополнительной информации об алгоритмах агрегации ансамблей смотрите Ensemble Algorithms.
Если вы задаете 'Method','LSBoost', затем программное обеспечение по умолчанию растёт мелкими деревьями решений. Можно настроить глубину дерева, задав MaxNumSplits, MinLeafSize, и MinParentSize Аргументы пары "имя-значение" с использованием templateTree.
Для двухъядерных систем и выше, fitrensemble параллелизирует обучение с использованием Intel Threading Building Blocks (TBB). Для получения дополнительной информации о Intel TBB смотрите https://software.intel.com/en-us/intel-tbb.
[1] Breiman, L. «Bagging Predictors». Машинное обучение. Том 26, стр. 123-140, 1996.
[2] Breiman, L. «Random Forests». Машинное обучение. Том 45, стр. 5-32, 2001.
[3] Freund, Y. and R. E. Schapire. Теоретически решающее обобщение онлайн-обучения и приложение к бустингу. J. Computer and System Sciences, Vol. 55, pp. 119-139, 1997.
[4] Фридман, Дж. «Жадное приближение функций: градиентная бустерная машина». Анналы статистики, том 29, № 5, стр. 1189 - 1232, 2001.
[5] Хасти, Т., Р. Тибширани и Дж. Фридман. Раздел «Элементы статистического обучения», Спрингер, Нью-Йорк, 2008 год.
fitrensemble поддерживает параллельное обучение с использованием 'Options' аргумент имя-значение. Создайте опции используя statset, таких как options = statset('UseParallel',true). Параллельные тренировки ансамбля требуют, чтобы вы установили 'Method' аргумент имя-значение в 'Bag'. Параллельное обучение доступно только для учащихся-древовидников, тип по умолчанию для 'Bag'.
Чтобы выполнить параллельную оптимизацию гипероптимизации параметров управления, используйте 'HyperparameterOptimizationOptions', struct('UseParallel',true) аргумент имя-значение в вызове этой функции.
Для получения дополнительной информации об оптимизации параллельной гипероптимизации параметров управления смотрите Parallel Bayesian Optimization.
Общие сведения о параллельных вычислениях см. в разделе Запуск функций MATLAB с поддержкой автоматических параллелей (Parallel Computing Toolbox).
predict | RegressionBaggedEnsemble | RegressionEnsemble | RegressionPartitionedEnsemble | templateTree
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.