Подбор ансамбля учащихся для регрессии
возвращает обучаемый объект модели регрессионного ансамбля (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' аргумент пары имя-значение для числовых предикторов bin. После обучения вы можете воспроизвести связанные данные предиктора с помощью 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 значения NaNs.
Оцените ошибку обобщения ансамбля деревьев усиленной регрессии.
Загрузить carsmall набор данных. Выберите количество цилиндров, объем, смещенный цилиндрами, лошадиную силу и вес в качестве предикторов экономии топлива.
load carsmall
X = [Cylinders Displacement Horsepower Weight];Перекрестная проверка совокупности деревьев регрессии с использованием 10-кратной перекрестной проверки. С помощью шаблона дерева решений укажите, что каждое дерево должно быть разделено только один раз.
rng(1); % For reproducibility t = templateTree('MaxNumSplits',1); Mdl = fitrensemble(X,MPG,'Learners',t,'CrossVal','on');
Mdl является RegressionPartitionedEnsemble модель.
Постройте график кумулятивной 10-кратной кросс-проверенной среднеквадратичной ошибки (MSE). Отображение расчетной ошибки обобщения ансамбля.
kflc = kfoldLoss(Mdl,'Mode','cumulative'); figure; plot(kflc); ylabel('10-fold cross-validated MSE'); xlabel('Learning cycle');

estGenError = kflc(end)
estGenError = 26.2356
kfoldLoss возвращает ошибку обобщения по умолчанию. Однако построение графика кумулятивных потерь позволяет отслеживать, как меняется потеря по мере накопления слабых учеников в ансамбле.
Ансамбль достигает MSE около 23,5 после накопления около 30 слабых учеников.
Если вы удовлетворены ошибкой обобщения ансамбля, то для создания прогностической модели заново тренируйте ансамбль, используя все настройки, кроме перекрестной проверки. Однако рекомендуется настраивать гиперпараметры, такие как максимальное количество разделений решений на дерево и количество циклов обучения.
В этом примере показано, как оптимизировать гиперпараметры автоматически с помощью fitrensemble. В примере используется carsmall данные.
Загрузите данные.
load carsmallМожно найти гиперпараметры, которые минимизируют пятикратные потери при перекрестной проверке, используя автоматическую оптимизацию гиперпараметров.
Mdl = fitrensemble([Horsepower,Weight],MPG,'OptimizeHyperparameters','auto')
В этом примере для воспроизводимости задайте случайное начальное число и используйте '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) для каждого ансамбля.
Для уровня сложности дерева , . J сравните совокупные, перекрестно проверенные 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 усиленных деревьев регрессии с использованием пятикратной перекрестной проверки. Использование шаблона дерева:
Измените максимальное количество разбиений, используя значения в последовательности m}. m является таким, 2m не превышает n-1 .
Включите суррогатные расщепления.
Для каждого варианта настройте скорость обучения, используя каждое значение в наборе {0.1, 0.25, 0.5, 1}.
n = size(Tbl,1); m = floor(log2(n - 1)); learnRate = [0.1 0.25 0.5 1]; numLR = numel(learnRate); maxNumSplits = 2.^(0:m); numMNS = numel(maxNumSplits); numTrees = 150; Mdl = cell(numMNS,numLR); for k = 1:numLR for j = 1:numMNS t = templateTree('MaxNumSplits',maxNumSplits(j),'Surrogate','on'); Mdl{j,k} = fitrensemble(Tbl,'MPG','NumLearningCycles',numTrees, ... 'Learners',t,'KFold',5,'LearnRate',learnRate(k)); end end
Оценка совокупного, перекрестно подтвержденного MSE каждого ансамбля.
kflAll = @(x)kfoldLoss(x,'Mode','cumulative'); errorCell = cellfun(kflAll,Mdl,'Uniform',false); error = reshape(cell2mat(errorCell),[numTrees numel(maxNumSplits) numel(learnRate)]); errorDeep = kfoldLoss(MdlDeep); errorStump = kfoldLoss(MdlStump);
Постройте график поведения перекрестно проверенного MSE по мере увеличения числа деревьев в ансамбле. Постройте график кривых относительно скорости обучения на одном и том же графике и постройте график для различных уровней сложности дерева. Выберите подмножество уровней сложности дерева для печати.
mnsPlot = [1 round(numel(maxNumSplits)/2) numel(maxNumSplits)]; figure; for k = 1:3 subplot(2,2,k) plot(squeeze(error(:,mnsPlot(k),:)),'LineWidth',2) axis tight hold on h = gca; plot(h.XLim,[errorDeep errorDeep],'-.b','LineWidth',2) plot(h.XLim,[errorStump errorStump],'-.r','LineWidth',2) plot(h.XLim,min(min(error(:,mnsPlot(k),:))).*[1 1],'--k') h.YLim = [10 50]; xlabel('Number of trees') ylabel('Cross-validated MSE') title(sprintf('MaxNumSplits = %0.3g', maxNumSplits(mnsPlot(k)))) hold off end hL = legend([cellstr(num2str(learnRate','Learning Rate = %0.2f')); ... 'Deep Tree';'Stump';'Min. MSE']); hL.Position(1) = 0.6;

Каждая кривая содержит минимальный перекрестно проверенный 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' | Агрегация начальной загрузки (фасовка, например, случайного леса [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 выращивает м регрессионных деревьев за цикл обучения (см. NumLearningCycles). Например, для ансамбля, состоящего из двух типов регрессионных деревьев, поставка {t1 t2}, где t1 и t2 являются объектами шаблона дерева регрессии, возвращенными templateTree.
Для получения воспроизводимых результатов необходимо указать 'Reproducible' аргумент пары имя-значение templateTree как true если 'NumVariablesToSample' не является 'all'.
Подробные сведения о количестве обучающихся см. в разделе NumLearningCycles и Советы.
Пример: 'Learners',templateTree('MaxNumSplits',5)
'NPrint' - Периодичность распечатки'off' (по умолчанию) | положительное целое числоЧастота печати, указанная как разделенная запятыми пара, состоящая из 'NPrint' и положительное целое число или 'off'.
Отслеживание количества слабых учеников или складок, которые fitrensemble обученный до сих пор, укажите положительное целое число. То есть, если указать положительное целое число m:
Без указания опции перекрестной проверки (например, CrossVal), то fitrensemble отображает сообщение в командной строке при каждом завершении обучения для слабых учеников.
И вариант перекрестной проверки, то 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, а затем выращивает деревья по индексам bin вместо исходных данных.
Количество ячеек может быть меньше numBins если предиктор имеет менее numBins уникальные значения.
fitrensemble не содержит категориальных предикторов.
При использовании большого набора данных обучения этот параметр объединения ускоряет обучение, но может привести к потенциальному снижению точности. Вы можете попробовать '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.
Примечание
Параллельные вычисления Toolbox™ необходимы для параллельного вычисления.
В этой таблице перечислены поля опций и их значения.
| Имя поля | Стоимость | Дефолт |
|---|---|---|
UseParallel | Задайте для этого значения значение | false |
UseSubstreams | Задайте для этого значения значение Для воспроизводимого вычисления установите | false |
Streams | Укажите это значение как RandStream объект или массив ячеек таких объектов. Использовать один объект, за исключением случаев, когда UseParallel значение равно true и UseSubstreams значение равно false. В этом случае используйте массив ячеек, размер которого совпадает с размером параллельного пула. | Если не указать Streams, то fitrensemble использует поток или потоки по умолчанию. |
Пример использования воспроизводимого параллельного обучения см. в разделе Ансамбль классификации поездов в параллельном режиме.
Для двухъядерных систем и выше, fitrensemble параллелизирует обучение с использованием стандартных блоков Intel ® Threading Building Blocks (TBB). Поэтому указание UseParallel вариант как true может не обеспечить значительное ускорение на одном компьютере. Подробные сведения о TBB Intel см. в разделе 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.
Пример: Предположим, что вы создаете случайный раздел для пятикратной перекрестной проверки 500 наблюдений с помощью cvp = cvpartition(500,'KFold',5). Затем можно указать модель с перекрестной проверкой с помощью 'CVPartition',cvp.
'Holdout' - Доля данных для проверки отсутствияДоля данных, используемых для проверки удержания, заданная как скалярное значение в диапазоне (0,1). При указании 'Holdout',p, затем программное обеспечение выполняет следующие действия:
Случайный выбор и резервирование p*100% данных в качестве данных проверки и обучение модели с использованием остальных данных.
Храните компактную обучаемую модель в 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-by-1 в Trained свойства перекрестной проверенной модели.
Чтобы создать модель с перекрестной проверкой, можно указать только один из следующих четырех аргументов: CVPartition, Holdout, KFold, или Leaveout.
Пример: 'Leaveout','on'
'Weights' - Наблюдательные весаTblВеса наблюдения, указанные как разделенная запятыми пара, состоящая из 'Weights' и числовой вектор положительных значений или имя переменной в Tbl. Программное обеспечение взвешивает наблюдения в каждой строке X или Tbl с соответствующим значением в Weights. Размер Weights должно равняться количеству строк X или Tbl.
Если входные данные указаны как таблица Tbl, то Weights может быть именем переменной в Tbl содержит числовой вектор. В этом случае необходимо указать Weights в виде вектора символов или строкового скаляра. Например, если вектор весов W хранится как Tbl.W, затем укажите его как 'W'. В противном случае программа обрабатывает все столбцы Tbl, в том числе W, в качестве предикторов или реакции при обучении модели.
Программное обеспечение нормализует значения Weights для суммирования в 1.
По умолчанию Weights является ones(, где n,1)n - количество наблюдений в X или Tbl.
Типы данных: double | single | char | string
'FResample' - Доля обучающего комплекта, подлежащего повторному отбору1 (по умолчанию) | положительный скаляр в (0,1]Доля обучающего набора для повторной выборки для каждого слабого учащегося, определяемая как разделенная запятыми пара, состоящая из 'FResample' и положительный скаляр в (0,1].
Использовать 'FResample', указать 'bag' для Method или набор Resample кому 'on'.
Пример: 'FResample',0.75
Типы данных: single | double
'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 поиск среди положительных целых чисел, по умолчанию log-scaled с диапазоном [10,500].
LearnRate — fitrensemble поиск среди положительных реалов, по умолчанию с логарифмическим масштабированием с диапазоном [1e-3,1].
MinLeafSize — fitrensemble поиск среди целых чисел с логарифмическим масштабированием в диапазоне [1,max(2,floor(NumObservations/2))].
MaxNumSplits — fitrensemble поиск среди целых чисел с логарифмическим масштабированием в диапазоне [1,max(2,NumObservations-1)].
NumVariablesToSample — fitrensemble поиск среди целых чисел в диапазоне [1,max(2,NumPredictors)].
Установка параметров, не используемых по умолчанию, путем передачи вектора optimizableVariable объекты, не имеющие значений по умолчанию. Например,
load carsmall params = hyperparameters('fitrensemble',[Horsepower,Weight],MPG,'Tree'); params(4).Range = [1,20];
Проход params как значение OptimizeHyperparameters.
По умолчанию итеративное отображение отображается в командной строке, а графики отображаются в соответствии с количеством гиперпараметров в оптимизации. Для оптимизации и графиков целевой функцией является log ( 1 + потери при перекрестной проверке) для регрессии и коэффициент неправильной классификации для классификации. Для управления итеративным отображением установите Verbose области 'HyperparameterOptimizationOptions' аргумент пары имя-значение. Для управления графиками установите ShowPlots области 'HyperparameterOptimizationOptions' аргумент пары имя-значение.
Пример см. в разделе Оптимизация ансамбля регрессии.
Пример: 'OptimizeHyperparameters',{'Method','NumLearningCycles','LearnRate','MinLeafSize','MaxNumSplits'}
'HyperparameterOptimizationOptions' - Варианты оптимизацииОпции оптимизации, указанные как разделенная запятыми пара, состоящая из 'HyperparameterOptimizationOptions' и структура. Этот аргумент изменяет эффект OptimizeHyperparameters аргумент пары имя-значение. Все поля в структуре являются необязательными.
| Имя поля | Ценности | Дефолт |
|---|---|---|
Optimizer |
| 'bayesopt' |
AcquisitionFunctionName |
Функции приобретения, имена которых включают | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | Максимальное количество оценок целевой функции. | 30 для 'bayesopt' или 'randomsearch'и вся сетка для 'gridsearch' |
MaxTime | Ограничение по времени, указанное как положительный реал. Ограничение по времени в секундах, измеренное | Inf |
NumGridDivisions | Для 'gridsearch', количество значений в каждом измерении. Значение может быть вектором положительных целых чисел, дающим количество значений для каждого измерения, или скаляром, который применяется ко всем измерениям. Это поле игнорируется для категориальных переменных. | 10 |
ShowPlots | Логическое значение, указывающее, показывать ли графики. Если trueв этом поле отображается наилучшее значение целевой функции относительно номера итерации. Если имеется один или два параметра оптимизации, и если Optimizer является 'bayesopt', то ShowPlots также строит график модели целевой функции по параметрам. | true |
SaveIntermediateResults | Логическое значение, указывающее, сохранять ли результаты при Optimizer является 'bayesopt'. Если true, это поле перезаписывает переменную рабочей области с именем 'BayesoptResults' на каждой итерации. Переменная является BayesianOptimization объект. | false |
Verbose | Отображение в командной строке.
Для получения более подробной информации см. | 1 |
UseParallel | Логическое значение, указывающее, выполнять ли байесовскую оптимизацию параллельно, для чего требуется панель параллельных вычислений. Из-за непродуктивности параллельной синхронизации параллельная байесовская оптимизация не обязательно дает воспроизводимые результаты. Дополнительные сведения см. в разделе Параллельная байесовская оптимизация. | 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 + + требуется Coder™ MATLAB. Дополнительные сведения см. в разделе Введение в создание кода .
Подробные сведения о алгоритмах агрегации ансамбля см. в разделе Алгоритмы ансамбля.
При указании 'Method','LSBoost', то программное обеспечение растет неглубокие деревья принятия решений по умолчанию. Можно скорректировать глубину дерева, указав MaxNumSplits, MinLeafSize, и MinParentSize аргументы пары имя-значение с использованием templateTree.
Для двухъядерных систем и выше, fitrensemble параллелизует обучение с использованием Intel Threading Building Blocks (TBB). Подробные сведения о TBB Intel см. в разделе https://software.intel.com/en-us/intel-tbb.
[1] Брейман, Л. «Предикторы пакетирования». Машинное обучение. Том 26, стр. 123-140, 1996.
[2] Брейман, Л. «Случайные леса». Машинное обучение. Том 45, стр. 5-32, 2001.
[3] Фрейнд, Ю. и Р. Э. Шапайр. «Теоретическое обобщение онлайн-обучения и приложения для повышения». J. of 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) аргумент name-value в вызове этой функции.
Дополнительные сведения об оптимизации параллельных гиперпараметров см. в разделе Параллельная байесовская оптимизация.
Общие сведения о параллельных вычислениях см. в разделе Запуск функций MATLAB с автоматической параллельной поддержкой (панель инструментов параллельных вычислений).
predict | RegressionBaggedEnsemble | RegressionEnsemble | RegressionPartitionedEnsemble | templateTree
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.