Подгонка ансамбля учащихся для регрессии
возвращает обученный объект модели ансамбля регрессии (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);
toc
Elapsed 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
содержит NaN
s, затем соответствующее 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.