Подбор ансамбля обучающихся для классификации
возвращает обучаемый объект модели ансамбля классификации (Mdl = fitcensemble(Tbl,ResponseVarName)Mdl), который содержит результаты повышения 100 деревьев классификации и данные предиктора и ответа в таблице Tbl. ResponseVarName - имя переменной ответа в Tbl. По умолчанию fitcensemble использует LogitBoost для двоичной классификации и AdaBoostM2 для мультиклассовой классификации.
применяется Mdl = fitcensemble(Tbl,formula)formula подгонка модели к предиктору и данным ответа в таблице Tbl. formula является пояснительной моделью ответа и подмножеством переменных предиктора в Tbl используется для подгонки Mdl. Например, 'Y~X1+X2+X3' подходит под переменную ответа Tbl.Y как функция переменных предиктора Tbl.X1, Tbl.X2, и Tbl.X3.
использует дополнительные параметры, указанные одним или несколькими Mdl = fitcensemble(___,Name,Value)Name,Value пары аргументов и любого из входных аргументов в предыдущих синтаксисах. Например, можно указать количество циклов обучения, метод агрегирования ансамбля или выполнить 10-кратную перекрестную проверку.
Создайте ансамбль предиктивной классификации с использованием всех доступных переменных предиктора в данных. Затем тренируйте другой ансамбль, используя меньше предикторов. Сравните предиктивные точности в выборке ансамблей.
Загрузить census1994 набор данных.
load census1994Обучение ансамбля классификационных моделей с использованием всего набора данных и опций по умолчанию.
Mdl1 = fitcensemble(adultdata,'salary')Mdl1 =
ClassificationEnsemble
PredictorNames: {1x14 cell}
ResponseName: 'salary'
CategoricalPredictors: [2 4 6 7 8 9 10 14]
ClassNames: [<=50K >50K]
ScoreTransform: 'none'
NumObservations: 32561
NumTrained: 100
Method: 'LogitBoost'
LearnerNames: {'Tree'}
ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
FitInfo: [100x1 double]
FitInfoDescription: {2x1 cell}
Properties, Methods
Mdl является ClassificationEnsemble модель. Некоторые заметные характеристики Mdl являются:
Поскольку в данных представлены два класса, LogitBoost является алгоритмом агрегации ансамблей.
Поскольку метод агрегации ансамблей является алгоритмом повышения, деревья классификации, допускающие максимум 10 расщеплений, составляют ансамбль.
Сто деревьев составляют ансамбль.
Используйте классификационный ансамбль для прогнозирования меток случайного набора из пяти наблюдений из данных. Сравните прогнозируемые метки с их истинными значениями.
rng(1) % For reproducibility [pX,pIdx] = datasample(adultdata,5); label = predict(Mdl1,pX); table(label,adultdata.salary(pIdx),'VariableNames',{'Predicted','Truth'})
ans=5×2 table
Predicted Truth
_________ _____
<=50K <=50K
<=50K <=50K
<=50K <=50K
<=50K <=50K
<=50K <=50K
Обучение нового ансамбля с помощью age и education только.
Mdl2 = fitcensemble(adultdata,'salary ~ age + education');Сравните потери от повторного замещения между Mdl1 и Mdl2.
rsLoss1 = resubLoss(Mdl1)
rsLoss1 = 0.1058
rsLoss2 = resubLoss(Mdl2)
rsLoss2 = 0.2037
Частота неправильной классификации в выборке для ансамбля, который использует все предикторы, ниже.
Обучение ансамбля усиленных деревьев классификации с помощью fitcensemble. Сократите время обучения, указав 'NumBins' аргумент пары имя-значение для числовых предикторов bin. Этот аргумент допустим только в том случае, если fitcensemble использует учащегося дерева. После обучения вы можете воспроизвести связанные данные предиктора с помощью BinEdges свойство обучаемой модели и discretize функция.
Создайте образец набора данных.
rng('default') % For reproducibility N = 1e6; X = [mvnrnd([-1 -1],eye(2),N); mvnrnd([1 1],eye(2),N)]; y = [zeros(N,1); ones(N,1)];
Визуализация набора данных.
figure scatter(X(1:N,1),X(1:N,2),'Marker','.','MarkerEdgeAlpha',0.01) hold on scatter(X(N+1:2*N,1),X(N+1:2*N,2),'Marker','.','MarkerEdgeAlpha',0.01)

Обучить ансамбль усиленных деревьев классификации с помощью адаптивной логистической регрессии (LogitBoost, значение по умолчанию для двоичной классификации). Время функции для сравнения.
tic Mdl1 = fitcensemble(X,y); toc
Elapsed time is 478.988422 seconds.
Ускорьте обучение с помощью 'NumBins' аргумент пары имя-значение. При указании 'NumBins' значение в виде положительного целочисленного скаляра, затем программное обеспечение складывает каждый числовой предиктор в заданное количество четких ячеек, а затем выращивает деревья на индексах ячеек вместо исходных данных. Программное обеспечение не содержит категориальных предикторов.
tic
Mdl2 = fitcensemble(X,y,'NumBins',50);
tocElapsed time is 165.598434 seconds.
Процесс примерно в три раза быстрее при использовании привязанных данных вместо исходных. Обратите внимание, что прошедшее время может варьироваться в зависимости от операционной системы.
Сравните ошибки классификации по повторному представлению.
rsLoss1 = resubLoss(Mdl1)
rsLoss1 = 0.0788
rsLoss2 = resubLoss(Mdl2)
rsLoss2 = 0.0788
В этом примере значения предиктора биннинга сокращают время тренировки без потери точности. Как правило, при наличии большого набора данных, подобного тому, который приведен в этом примере, использование опции 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.
Оценить погрешность обобщения ансамбля усиленных деревьев классификации.
Загрузить ionosphere набор данных.
load ionosphereПерекрестная проверка совокупности деревьев классификации с использованием AdaBoostM1 и 10-кратной перекрестной проверки. Укажите, что каждое дерево должно быть разделено максимум пять раз с помощью шаблона дерева решений.
rng(5); % For reproducibility t = templateTree('MaxNumSplits',5); Mdl = fitcensemble(X,Y,'Method','AdaBoostM1','Learners',t,'CrossVal','on');
Mdl является ClassificationPartitionedEnsemble модель.
Постройте график кумулятивной 10-кратной перекрестной проверки ошибочной классификации. Отображение расчетной ошибки обобщения ансамбля.
kflc = kfoldLoss(Mdl,'Mode','cumulative'); figure; plot(kflc); ylabel('10-fold Misclassification rate'); xlabel('Learning cycle');

estGenError = kflc(end)
estGenError = 0.0769
kfoldLoss возвращает ошибку обобщения по умолчанию. Однако построение графика кумулятивных потерь позволяет отслеживать, как меняется потеря по мере накопления слабых учеников в ансамбле.
Ансамбль достигает коэффициента неправильной классификации около 0,06 после накопления около 50 слабых учеников. Затем степень неправильной классификации немного возрастает по мере поступления в ансамбль более слабых учеников.
Если вы удовлетворены ошибкой обобщения ансамбля, то для создания прогностической модели заново тренируйте ансамбль, используя все настройки, кроме перекрестной проверки. Однако рекомендуется настраивать гиперпараметры, такие как максимальное количество разделений решений на дерево и количество циклов обучения.
Автоматическая оптимизация гиперпараметров с помощью fitcensemble.
Загрузить ionosphere набор данных.
load ionosphereМожно найти гиперпараметры, которые минимизируют пятикратные потери при перекрестной проверке, используя автоматическую оптимизацию гиперпараметров.
Mdl = fitcensemble(X,Y,'OptimizeHyperparameters','auto')
В этом примере для воспроизводимости задайте случайное начальное число и используйте 'expected-improvement-plus' функция приобретения. Также для воспроизводимости алгоритма случайного леса укажите 'Reproducible' аргумент пары имя-значение как true для обучающихся на деревьях.
rng('default') t = templateTree('Reproducible',true); Mdl = fitcensemble(X,Y,'OptimizeHyperparameters','auto','Learners',t, ... 'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName','expected-improvement-plus'))
|===================================================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | Method | NumLearningC-| LearnRate | MinLeafSize | | | result | | runtime | (observed) | (estim.) | | ycles | | | |===================================================================================================================================| | 1 | Best | 0.10256 | 1.6978 | 0.10256 | 0.10256 | RUSBoost | 11 | 0.010199 | 17 |
| 2 | Best | 0.062678 | 9.4354 | 0.062678 | 0.064264 | LogitBoost | 206 | 0.96537 | 33 |
| 3 | Accept | 0.099715 | 7.614 | 0.062678 | 0.062688 | AdaBoostM1 | 130 | 0.0072814 | 2 |
| 4 | Accept | 0.068376 | 1.6045 | 0.062678 | 0.062681 | Bag | 25 | - | 5 |
| 5 | Accept | 0.065527 | 20.359 | 0.062678 | 0.062699 | LogitBoost | 447 | 0.5405 | 13 |
| 6 | Accept | 0.074074 | 7.1054 | 0.062678 | 0.0627 | GentleBoost | 157 | 0.60495 | 108 |
| 7 | Accept | 0.082621 | 0.9688 | 0.062678 | 0.064102 | GentleBoost | 19 | 0.0010515 | 42 |
| 8 | Accept | 0.17379 | 0.49564 | 0.062678 | 0.06268 | LogitBoost | 10 | 0.001079 | 149 |
| 9 | Accept | 0.076923 | 21.003 | 0.062678 | 0.062676 | GentleBoost | 468 | 0.035181 | 2 |
| 10 | Accept | 0.068376 | 13.575 | 0.062678 | 0.062676 | AdaBoostM1 | 221 | 0.99976 | 7 |
| 11 | Accept | 0.10541 | 3.6394 | 0.062678 | 0.062676 | RUSBoost | 59 | 0.99629 | 31 |
| 12 | Accept | 0.068376 | 3.3423 | 0.062678 | 0.062674 | AdaBoostM1 | 53 | 0.20568 | 26 |
| 13 | Accept | 0.096866 | 1.6005 | 0.062678 | 0.062672 | RUSBoost | 22 | 0.0010042 | 2 |
| 14 | Accept | 0.071225 | 1.201 | 0.062678 | 0.062688 | LogitBoost | 23 | 0.99624 | 1 |
| 15 | Accept | 0.082621 | 0.87944 | 0.062678 | 0.062687 | AdaBoostM1 | 11 | 0.95241 | 2 |
| 16 | Accept | 0.079772 | 29.788 | 0.062678 | 0.062679 | AdaBoostM1 | 486 | 0.23903 | 35 |
| 17 | Accept | 0.35897 | 23.651 | 0.062678 | 0.06267 | Bag | 499 | - | 169 |
| 18 | Accept | 0.074074 | 0.653 | 0.062678 | 0.062674 | Bag | 10 | - | 1 |
| 19 | Accept | 0.088319 | 32.811 | 0.062678 | 0.062674 | RUSBoost | 498 | 0.0010437 | 3 |
| 20 | Accept | 0.068376 | 6.1279 | 0.062678 | 0.062673 | GentleBoost | 130 | 0.0010021 | 3 |
|===================================================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | Method | NumLearningC-| LearnRate | MinLeafSize | | | result | | runtime | (observed) | (estim.) | | ycles | | | |===================================================================================================================================| | 21 | Accept | 0.17379 | 22.601 | 0.062678 | 0.06271 | LogitBoost | 496 | 0.0010096 | 146 |
| 22 | Accept | 0.071225 | 2.9727 | 0.062678 | 0.062713 | GentleBoost | 71 | 0.91141 | 9 |
| 23 | Accept | 0.64103 | 1.1288 | 0.062678 | 0.062706 | RUSBoost | 20 | 0.0012846 | 173 |
| 24 | Accept | 0.11111 | 1.537 | 0.062678 | 0.062697 | RUSBoost | 24 | 0.96694 | 6 |
| 25 | Accept | 0.17379 | 5.5632 | 0.062678 | 0.062686 | LogitBoost | 136 | 0.001 | 3 |
| 26 | Accept | 0.35897 | 8.0556 | 0.062678 | 0.062686 | AdaBoostM1 | 156 | 0.003243 | 174 |
| 27 | Accept | 0.065527 | 1.0791 | 0.062678 | 0.062686 | Bag | 21 | - | 2 |
| 28 | Accept | 0.17379 | 1.7562 | 0.062678 | 0.062689 | LogitBoost | 42 | 0.0010283 | 21 |
| 29 | Accept | 0.074074 | 4.3825 | 0.062678 | 0.062689 | GentleBoost | 108 | 0.0010055 | 173 |
| 30 | Accept | 0.065527 | 1.4893 | 0.062678 | 0.062689 | LogitBoost | 32 | 0.97832 | 4 |

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 278.5509 seconds.
Total objective function evaluation time: 238.1176
Best observed feasible point:
Method NumLearningCycles LearnRate MinLeafSize
__________ _________________ _________ ___________
LogitBoost 206 0.96537 33
Observed objective function value = 0.062678
Estimated objective function value = 0.062689
Function evaluation time = 9.4354
Best estimated feasible point (according to models):
Method NumLearningCycles LearnRate MinLeafSize
__________ _________________ _________ ___________
LogitBoost 206 0.96537 33
Estimated objective function value = 0.062689
Estimated function evaluation time = 9.4324
Mdl =
ClassificationEnsemble
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: {'b' 'g'}
ScoreTransform: 'none'
NumObservations: 351
HyperparameterOptimizationResults: [1×1 BayesianOptimization]
NumTrained: 206
Method: 'LogitBoost'
LearnerNames: {'Tree'}
ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
FitInfo: [206×1 double]
FitInfoDescription: {2×1 cell}
Properties, Methods
Оптимизация выполняла поиск по методам агрегации ансамблей для двоичной классификации, по NumLearningCycles, над LearnRate для применимых методов и над деревом учащихся MinLeafSize. Результатом является классификатор ансамбля с минимальными оценочными потерями перекрестной проверки.
Одним из способов создания совокупности усиленных деревьев классификации, которые имеют удовлетворительную прогностическую производительность, является настройка уровня сложности дерева решений с помощью перекрестной проверки. При поиске оптимального уровня сложности настройте скорость обучения, чтобы минимизировать количество циклов обучения.
Этот пример вручную находит оптимальные параметры с помощью опции перекрестной проверки ( 'KFold' аргумент пары имя-значение) и kfoldLoss функция. Кроме того, можно использовать 'OptimizeHyperparameters' аргумент пары имя-значение для автоматической оптимизации гиперпараметров. См. раздел Оптимизация классификационного ансамбля.
Загрузить ionosphere набор данных.
load ionosphereДля поиска оптимального уровня сложности дерева:
Перекрестная проверка набора ансамблей. Экспоненциально увеличить уровень сложности дерева для последующих ансамблей от пня решения (одно разделение) до максимум n-1 разбиений. n - размер выборки. Кроме того, варьируйте скорость обучения для каждого ансамбля между 0,1 и 1.
Оцените степень ошибочной классификации каждого ансамбля.
Для уровня сложности дерева , . J сравните кумулятивный, перекрестно проверенный коэффициент неправильной классификации ансамблей, построив их график с количеством циклов обучения. Постройте отдельные кривые для каждой скорости обучения на одном и том же рисунке.
Выберите кривую, которая достигает минимального коэффициента неправильной классификации, и запишите соответствующий цикл обучения и коэффициент обучения.
Выполните перекрестную проверку глубокого дерева классификации и культи. Эти деревья классификации служат ориентирами.
rng(1) % For reproducibility MdlDeep = fitctree(X,Y,'CrossVal','on','MergeLeaves','off', ... 'MinParentSize',1); MdlStump = fitctree(X,Y,'MaxNumSplits',1,'CrossVal','on');
Перекрестная проверка ансамбля 150 усиленных деревьев классификации с использованием пятикратной перекрестной проверки. Используя шаблон дерева, измените максимальное количество разбиений, используя значения в последовательности m}. m является таким, 3m не превышает n-1. Для каждого варианта скорректируйте скорость обучения, используя каждое значение в наборе {0.1, 0.25, 0.5, 1};
n = size(X,1); m = floor(log(n - 1)/log(3)); learnRate = [0.1 0.25 0.5 1]; numLR = numel(learnRate); maxNumSplits = 3.^(0:m); numMNS = numel(maxNumSplits); numTrees = 150; Mdl = cell(numMNS,numLR); for k = 1:numLR for j = 1:numMNS t = templateTree('MaxNumSplits',maxNumSplits(j)); Mdl{j,k} = fitcensemble(X,Y,'NumLearningCycles',numTrees,... 'Learners',t,'KFold',5,'LearnRate',learnRate(k)); end end
Оцените совокупный, перекрестно подтвержденный коэффициент неправильной классификации для каждого ансамбля и деревья классификации, служащие в качестве эталонов.
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);
Постройте график поведения перекрестно проверенной ошибочной классификации по мере увеличения числа деревьев в ансамбле. Постройте график кривых относительно скорости обучения на одном и том же графике и постройте график для различных уровней сложности дерева. Выберите подмножество уровней сложности дерева для печати.
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 = [0 0.2]; xlabel('Number of trees') ylabel('Cross-validated misclass. rate') title(sprintf('MaxNumSplits = %0.3g', maxNumSplits(mnsPlot(k)))) hold off end hL = legend([cellstr(num2str(learnRate','Learning Rate = %0.2f')); ... 'Deep Tree';'Stump';'Min. misclass. rate']); hL.Position(1) = 0.6;

Каждая кривая содержит минимальную степень ошибочной классификации с перекрестной проверкой, возникающую при оптимальном количестве деревьев в ансамбле.
Определите максимальное количество разбиений, число деревьев и скорость обучения, что дает наименьший коэффициент неправильной классификации в целом.
[minErr,minErrIdxLin] = min(error(:));
[idxNumTrees,idxMNS,idxLR] = ind2sub(size(error),minErrIdxLin);
fprintf('\nMin. misclass. rate = %0.5f',minErr)Min. misclass. rate = 0.05413
fprintf('\nOptimal Parameter Values:\nNum. Trees = %d',idxNumTrees);Optimal Parameter Values: Num. Trees = 47
fprintf('\nMaxNumSplits = %d\nLearning Rate = %0.2f\n',... maxNumSplits(idxMNS),learnRate(idxLR))
MaxNumSplits = 3 Learning Rate = 0.25
Создайте предиктивный ансамбль на основе оптимальных гиперпараметров и всего обучающего набора.
tFinal = templateTree('MaxNumSplits',maxNumSplits(idxMNS)); MdlFinal = fitcensemble(X,Y,'NumLearningCycles',idxNumTrees,... 'Learners',tFinal,'LearnRate',learnRate(idxLR))
MdlFinal =
ClassificationEnsemble
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: {'b' 'g'}
ScoreTransform: 'none'
NumObservations: 351
NumTrained: 47
Method: 'LogitBoost'
LearnerNames: {'Tree'}
ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
FitInfo: [47×1 double]
FitInfoDescription: {2×1 cell}
Properties, Methods
MdlFinal является ClassificationEnsemble. Чтобы предсказать, является ли радарный возврат хорошим с учетом данных предиктора, можно передать данные предиктора и MdlFinal кому predict.
Вместо поиска оптимальных значений вручную с помощью опции перекрестной проверки ('KFold') и kfoldLoss , вы можете использовать 'OptimizeHyperparameters' аргумент пары имя-значение. При указании 'OptimizeHyperparameters', программа автоматически находит оптимальные параметры, используя байесовскую оптимизацию. Оптимальные значения, полученные с помощью 'OptimizeHyperparameters' могут отличаться от полученных с помощью ручного поиска.
mdl = fitcensemble(X,Y,'OptimizeHyperparameters',{'NumLearningCycles','LearnRate','MaxNumSplits'})
|====================================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | NumLearningC-| LearnRate | MaxNumSplits | | | result | | runtime | (observed) | (estim.) | ycles | | | |====================================================================================================================| | 1 | Best | 0.17379 | 6.2592 | 0.17379 | 0.17379 | 137 | 0.001364 | 3 |
| 2 | Accept | 0.17379 | 0.79961 | 0.17379 | 0.17379 | 15 | 0.013089 | 144 |
| 3 | Best | 0.065527 | 1.4585 | 0.065527 | 0.065538 | 31 | 0.47201 | 2 |
| 4 | Accept | 0.074074 | 13.988 | 0.065527 | 0.065549 | 340 | 0.92167 | 7 |
| 5 | Accept | 0.088319 | 0.92718 | 0.065527 | 0.072102 | 22 | 0.2432 | 1 |
| 6 | Accept | 0.074074 | 0.44748 | 0.065527 | 0.071237 | 10 | 0.7177 | 48 |
| 7 | Accept | 0.08547 | 0.52207 | 0.065527 | 0.074847 | 10 | 0.57238 | 2 |
| 8 | Accept | 0.074074 | 0.59154 | 0.065527 | 0.065556 | 11 | 0.97207 | 3 |
| 9 | Best | 0.059829 | 1.6809 | 0.059829 | 0.059648 | 42 | 0.92135 | 343 |
| 10 | Best | 0.054131 | 2.2481 | 0.054131 | 0.054148 | 49 | 0.97807 | 37 |
| 11 | Accept | 0.065527 | 2.1686 | 0.054131 | 0.059479 | 48 | 0.9996 | 2 |
| 12 | Accept | 0.068376 | 2.5909 | 0.054131 | 0.061923 | 58 | 0.91401 | 323 |
| 13 | Accept | 0.17379 | 0.48621 | 0.054131 | 0.062113 | 10 | 0.0010045 | 4 |
| 14 | Accept | 0.17379 | 0.55949 | 0.054131 | 0.059231 | 10 | 0.059072 | 148 |
| 15 | Accept | 0.065527 | 1.9568 | 0.054131 | 0.062559 | 46 | 0.76657 | 19 |
| 16 | Accept | 0.065527 | 2.5692 | 0.054131 | 0.062807 | 57 | 0.64443 | 311 |
| 17 | Accept | 0.17379 | 0.55723 | 0.054131 | 0.062748 | 10 | 0.0035012 | 2 |
| 18 | Accept | 0.12821 | 1.9669 | 0.054131 | 0.062043 | 47 | 0.055757 | 197 |
| 19 | Accept | 0.05698 | 1.2814 | 0.054131 | 0.060837 | 27 | 0.98997 | 12 |
| 20 | Accept | 0.059829 | 1.1975 | 0.054131 | 0.060881 | 26 | 0.99112 | 13 |
|====================================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | NumLearningC-| LearnRate | MaxNumSplits | | | result | | runtime | (observed) | (estim.) | ycles | | | |====================================================================================================================| | 21 | Accept | 0.065527 | 1.2255 | 0.054131 | 0.061441 | 25 | 0.99183 | 9 |
| 22 | Accept | 0.17379 | 1.3748 | 0.054131 | 0.061461 | 29 | 0.0032434 | 344 |
| 23 | Accept | 0.068376 | 3.055 | 0.054131 | 0.061768 | 67 | 0.18672 | 11 |
| 24 | Accept | 0.059829 | 5.0035 | 0.054131 | 0.061785 | 119 | 0.3125 | 1 |
| 25 | Accept | 0.059829 | 7.6141 | 0.054131 | 0.061793 | 176 | 0.25401 | 304 |
| 26 | Accept | 0.059829 | 5.1133 | 0.054131 | 0.05988 | 115 | 0.34331 | 343 |
| 27 | Accept | 0.059829 | 7.4027 | 0.054131 | 0.059895 | 178 | 0.26684 | 13 |
| 28 | Accept | 0.059829 | 5.2506 | 0.054131 | 0.059872 | 118 | 0.32365 | 3 |
| 29 | Accept | 0.062678 | 10.523 | 0.054131 | 0.059871 | 238 | 0.22465 | 1 |
| 30 | Accept | 0.14815 | 0.57384 | 0.054131 | 0.059705 | 10 | 0.15205 | 2 |

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 122.7983 seconds.
Total objective function evaluation time: 91.3933
Best observed feasible point:
NumLearningCycles LearnRate MaxNumSplits
_________________ _________ ____________
49 0.97807 37
Observed objective function value = 0.054131
Estimated objective function value = 0.062545
Function evaluation time = 2.2481
Best estimated feasible point (according to models):
NumLearningCycles LearnRate MaxNumSplits
_________________ _________ ____________
119 0.3125 1
Estimated objective function value = 0.059705
Estimated function evaluation time = 5.1842
mdl =
ClassificationEnsemble
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: {'b' 'g'}
ScoreTransform: 'none'
NumObservations: 351
HyperparameterOptimizationResults: [1×1 BayesianOptimization]
NumTrained: 119
Method: 'LogitBoost'
LearnerNames: {'Tree'}
ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
FitInfo: [119×1 double]
FitInfoDescription: {2×1 cell}
Properties, Methods
Tbl - Образцы данныхОбразец данных, используемых для обучения модели, указанный как таблица. Каждая строка Tbl соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной. Tbl может содержать один дополнительный столбец для переменной ответа. Многозначные переменные и массивы ячеек, отличные от массивов ячеек символьных векторов, не допускаются.
Если Tbl содержит переменную ответа, и вы хотите использовать все оставшиеся переменные в качестве предикторов, а затем указать переменную ответа, используя ResponseVarName.
Если Tbl содержит переменную ответа, и требуется использовать подмножество остальных переменных только в качестве предикторов, затем указать формулу с помощью formula.
Если Tbl не содержит переменную ответа, затем укажите данные ответа с помощью Y. Длина переменной ответа и количество строк Tbl должно быть равным.
Примечание
Для экономии памяти и времени выполнения поставки X и Y вместо Tbl.
Типы данных: table
ResponseVarName - Имя переменной ответаTblИмя переменной ответа, указанное как имя переменной ответа в Tbl.
Необходимо указать ResponseVarName в виде вектора символов или строкового скаляра. Например, если Tbl.Y является переменной ответа, затем укажите ResponseVarName как 'Y'. В противном случае fitcensemble обрабатывает все столбцы Tbl в качестве переменных предиктора.
Переменная ответа должна быть категориальным, символьным или строковым массивом, логическим или числовым вектором или массивом ячеек символьных векторов. Если ответная переменная является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Для классификации можно указать порядок классов с помощью ClassNames аргумент пары имя-значение. В противном случае fitcensemble определяет порядок классов и сохраняет его в Mdl.ClassNames.
Типы данных: 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
Y - Данные ответаДанные ответа, указанные как категориальный, символьный или строковый массив, логический или числовой вектор или массив ячеек символьных векторов. Каждая запись в Y является ответом или меткой для наблюдения в соответствующей строке X или Tbl. Длина Y и количество строк X или Tbl должно быть равным. Если ответная переменная является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Порядок классов можно определить с помощью ClassNames аргумент пары имя-значение. В противном случае fitcensemble определяет порядок классов и сохраняет его в Mdl.ClassNames.
Типы данных: categorical | char | string | logical | single | double | cell
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'CrossVal','on','LearnRate',0.05 определяет реализацию 10-кратной перекрестной проверки и использование 0.05 как скорость обучения.Примечание
Нельзя использовать любой аргумент пары имя-значение перекрестной проверки вместе с 'OptimizeHyperparameters' аргумент пары имя-значение. Можно изменить перекрестную проверку для 'OptimizeHyperparameters' только с помощью 'HyperparameterOptimizationOptions' аргумент пары имя-значение.
'Method' - Метод агрегации ансамблей'Bag' | 'Subspace' | 'AdaBoostM1' | 'AdaBoostM2' | 'GentleBoost' | 'LogitBoost' | 'LPBoost' | 'RobustBoost' | 'RUSBoost' | 'TotalBoost'Метод агрегации ансамбля, определяемый как разделенная запятыми пара, состоящая из 'Method' и одно из следующих значений.
| Стоимость | Метод | Поддержка проблем классификации | Аргументы связанной пары «имя-значение» |
|---|---|---|---|
'Bag' | Агрегация начальной загрузки (пакетирование, например, случайного леса [2]) - если'Method' является 'Bag', то fitcensemble использует пакетирование со случайным выбором предиктора при каждом разделении (случайный лес) по умолчанию. Чтобы использовать пакетирование без случайного выбора, используйте древовидных учеников, чьи 'NumVariablesToSample' значение равно 'all' или использовать дискриминантный анализ учащихся. | Двоичный и мультиклассный | Н/Д |
'Subspace' | Случайное подпространство | Двоичный и мультиклассный | NPredToSample |
'AdaBoostM1' | Адаптивное повышение | Только двоичный | LearnRate |
'AdaBoostM2' | Адаптивное повышение | Только мультикласс | LearnRate |
'GentleBoost' | Мягкое адаптивное повышение | Только двоичный | LearnRate |
'LogitBoost' | Адаптивная логистическая регрессия | Только двоичный | LearnRate |
'LPBoost' | Ускорение линейного программирования - требует оптимизации Toolbox™ | Двоичный и мультиклассный | MarginPrecision |
'RobustBoost' | Надежное повышение - требуется панель инструментов оптимизации | Только двоичный | RobustErrorGoal, RobustMarginSigma, RobustMaxMargin |
'RUSBoost' | Случайная недостаточная выборка повышения | Двоичный и мультиклассный | LearnRate, RatioToSmallest |
'TotalBoost' | Полностью корректирующее повышение - требуется панель инструментов оптимизации | Двоичный и мультиклассный | MarginPrecision |
Можно задать опции выборки (FResample, Replace, Resample) для учебных данных при использовании фасовки в мешки ('Bag') или повышение ('TotalBoost', 'RUSBoost', 'AdaBoostM1', 'AdaBoostM2', 'GentleBoost', 'LogitBoost', 'RobustBoost', или 'LPBoost').
Значения по умолчанию:
'LogitBoost' для двоичных проблем и 'AdaBoostM2' для многоклассовых проблем, если 'Learners' включает только древовидных учеников
'AdaBoostM1' для двоичных проблем и 'AdaBoostM2' для многоклассовых проблем, если 'Learners' включает как древовидный, так и дискриминантный анализ учащихся
'Subspace' если 'Learners' не включает в себя обучающихся по деревьям
Дополнительные сведения о алгоритмах и примерах агрегирования ансамбля см. в разделах Алгоритмы, Советы, Алгоритмы ансамбля и Выбор применимого метода агрегирования ансамбля.
Пример: 'Method','Bag'
'NumLearningCycles' - Количество учебных циклов ансамбля100 (по умолчанию) | положительное целое число | 'AllPredictorCombinations'Количество циклов обучения ансамбля, указанное как разделенная запятыми пара, состоящая из 'NumLearningCycles' и положительное целое число или 'AllPredictorCombinations'.
Если указать положительное целое число, то при каждом цикле обучения программа обучает одного слабого ученика для каждого объекта шаблона в Learners. Следовательно, программное обеспечение проходит NumLearningCycles*numel(Learners) учащиеся.
При указании 'AllPredictorCombinations', затем установить Method кому 'Subspace' и укажите одного учащегося только для Learners. С помощью этих настроек программное обеспечение обучает учащихся всем возможным комбинациям принятых предикторов NPredToSample за раз. Следовательно, программное обеспечение проходит nchoosek(size(X,2),NPredToSample) учащиеся.
Программное обеспечение составляет ансамбль с использованием всех обученных учеников и сохраняет их в Mdl.Trained.
Дополнительные сведения см. в разделе Советы.
Пример: 'NumLearningCycles',500
Типы данных: single | double | char | string
'Learners' - Слабые ученики для использования в ансамбле'discriminant' | 'knn' | 'tree' | объект шаблона слабого учащегося | вектор ячеек объектов шаблона слабого учащегосяСлабые ученики для использования в ансамбле, определяемом как разделенная запятыми пара, состоящая из 'Learners' и имя слабого учащегося, объект шаблона слабого учащегося или вектор ячеек объектов шаблона слабого учащегося.
| Слабый ученик | Имя слабоучителя | Функция создания объекта шаблона | Method Настройка |
|---|---|---|---|
| Дискриминантный анализ | 'discriminant' | templateDiscriminant | Рекомендуется для 'Subspace' |
| k-ближайшие соседи | 'knn' | templateKNN | Для 'Subspace' только |
| Дерево решений | 'tree' | templateTree | Все методы, кроме 'Subspace' |
Имя слабоучителя ('discriminant', 'knn', или 'tree') — fitcensemble использует слабых учеников, созданных функцией создания объекта шаблона с настройками по умолчанию. Например, указание 'Learners','discriminant' совпадает с заданием 'Learners',templateDiscriminant(). Параметры по умолчанию для слабого учащегося см. на страницах функции создания объекта шаблона.
Объект шаблона слабого ученика - fitcensemble использует слабых учеников, созданных функцией создания объекта шаблона. Используйте аргументы пары имя-значение функции создания объекта шаблона, чтобы указать настройки слабых учеников.
Вектор ячейки m объектов шаблона слабого учащегося - fitcensemble растет число учащихся за цикл обучения (см. NumLearningCycles). Например, для ансамбля, состоящего из двух типов классификационных деревьев, поставка {t1 t2}, где t1 и t2 являются объектами шаблона дерева классификации, возвращенными templateTree.
Дефолт 'Learners' значение равно 'knn' если 'Method' является 'Subspace'.
Дефолт 'Learners' значение равно 'tree' если 'Method' является 'Bag' или любой метод повышения. Значения по умолчанию для templateTree() зависят от значения 'Method'.
Для пакетных деревьев решений максимальное количество разделений решений ('MaxNumSplits'является n–1, где n - количество наблюдений. Количество предикторов, выбираемых случайным образом для каждого разделения ('NumVariablesToSample') - квадратный корень из числа предикторов. Поэтому fitcensemble выращивает глубокие деревья принятия решений. Можно выращивать более мелкие деревья, чтобы уменьшить сложность модели или время вычислений.
Для усиленных деревьев принятия решений, 'MaxNumSplits' равно 10 и 'NumVariablesToSample' является 'all'. Поэтому fitcensemble произрастает неглубокие деревья принятия решений. Вы можете выращивать более глубокие деревья для лучшей точности.
Посмотрите templateTree для настроек по умолчанию слабого учащегося. Для получения воспроизводимых результатов необходимо указать 'Reproducible' аргумент пары имя-значение templateTree как true если 'NumVariablesToSample' не является 'all'.
Подробные сведения о количестве обучающихся см. в разделе NumLearningCycles и Советы.
Пример: 'Learners',templateTree('MaxNumSplits',5)
'NPrint' - Периодичность распечатки'off' (по умолчанию) | положительное целое числоЧастота печати, указанная как разделенная запятыми пара, состоящая из 'NPrint' и положительное целое число или 'off'.
Отслеживание количества слабых учеников или складок, которые fitcensemble обученный до сих пор, укажите положительное целое число. То есть, если указать положительное целое число m:
Без указания опции перекрестной проверки (например, CrossVal), то fitcensemble отображает сообщение в командной строке при каждом завершении обучения для слабых учеников.
И вариант перекрестной проверки, то fitcensemble отображает сообщение в командной строке каждый раз при завершении обучения m складок.
При указании 'off', то fitcensemble не отображает сообщение после завершения обучения слабых учеников.
Совет
Для быстрого обучения некоторых повышенных деревьев принятия решений, набор NPrint до значения по умолчанию 'off'. Этот совет сохраняется при классификации Method является 'AdaBoostM1', 'AdaBoostM2', 'GentleBoost', или 'LogitBoost'или когда регрессия Method является 'LSBoost'.
Пример: 'NPrint',5
Типы данных: single | double | char | string
'NumBins' - Количество ячеек для числовых предикторов[](пустое) (по умолчанию) | положительный целочисленный скалярКоличество ячеек для числовых предикторов, указанных как разделенная запятыми пара, состоящая из 'NumBins' и положительный целочисленный скаляр. Этот аргумент допустим только в том случае, если fitcensemble использует учащегося дерева, то есть 'Learners' является либо 'tree' или объект шаблона, созданный с помощью templateTree.
Если 'NumBins' значение пустое (по умолчанию), затем fitcensemble не содержит никаких предикторов.
При указании 'NumBins' значение в виде положительного целого скаляра (numBins), то fitcensemble помещает каждый числовой предиктор максимум в numBins equiprobable bins, а затем выращивает деревья по индексам bin вместо исходных данных.
Количество ячеек может быть меньше numBins если предиктор имеет менее numBins уникальные значения.
fitcensemble не содержит категориальных предикторов.
При использовании большого набора данных обучения этот параметр объединения ускоряет обучение, но может привести к потенциальному снижению точности. Вы можете попробовать 'NumBins',50 сначала, а затем изменить значение в зависимости от точности и скорости тренировки.
Обученная модель хранит кромки бункера в BinEdges собственность.
Пример: 'NumBins',50
Типы данных: single | double
'CategoricalPredictors' - Список категориальных предикторов'all'Список категориальных предикторов, указанный как одно из значений в этой таблице.
| Стоимость | Описание |
|---|---|
| Вектор положительных целых чисел |
Каждая запись в векторе представляет собой значение индекса, соответствующее столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся в диапазоне от 1 до Если |
| Логический вектор |
A |
| Символьная матрица | Каждая строка матрицы является именем предикторной переменной. Имена должны соответствовать записям в PredictorNames. Поместите имена с дополнительными пробелами, чтобы каждая строка символьной матрицы имела одинаковую длину. |
| Строковый массив или массив ячеек символьных векторов | Каждый элемент массива является именем переменной предиктора. Имена должны соответствовать записям в PredictorNames. |
'all' | Все предикторы категоричны. |
Спецификация 'CategoricalPredictors' подходит, если:
'Learners' Задает древовидных учеников.
'Learners' указывает k-ближайших учеников, где все предикторы категоричны.
Каждый ученик идентифицирует и обрабатывает категориальные предикторы таким же образом, как и аппроксимирующая функция, соответствующая ученику. Посмотрите 'CategoricalPredictors' из fitcknn для k-ближайших учащихся и 'CategoricalPredictors' из fitctree для обучающихся на деревьях.
Пример: '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 чтобы выбрать, какие переменные предиктора использовать в обучении. То есть fitcensemble использует только переменные предиктора в 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
'Options' - Варианты параллельного вычисления и задания случайных чиселОпции для параллельных вычислений и задания случайных чисел, заданные как структура. Создать Options структура с statset.
Примечание
Параллельные вычисления Toolbox™ необходимы для параллельного вычисления.
В этой таблице перечислены поля опций и их значения.
| Имя поля | Стоимость | Дефолт |
|---|---|---|
UseParallel | Задайте для этого значения значение | false |
UseSubstreams | Задайте для этого значения значение Для воспроизводимого вычисления установите | false |
Streams | Укажите это значение как RandStream объект или массив ячеек таких объектов. Использовать один объект, за исключением случаев, когда UseParallel значение равно true и UseSubstreams значение равно false. В этом случае используйте массив ячеек, размер которого совпадает с размером параллельного пула. | Если не указать Streams, то fitcensemble использует поток или потоки по умолчанию. |
Пример использования воспроизводимого параллельного обучения см. в разделе Ансамбль классификации поездов в параллельном режиме.
Для двухъядерных систем и выше, fitcensemble параллелизирует обучение с использованием стандартных блоков 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'
'ClassNames' - Названия классов, используемых для обученияИмена классов, используемых для обучения, указанные как категориальный, символьный или строковый массив; логический или числовой вектор; или массив ячеек символьных векторов. ClassNames должен иметь тот же тип данных, что и переменная ответа в Tbl или Y.
Если ClassNames является символьным массивом, то каждый элемент должен соответствовать одной строке массива.
Использовать ClassNames кому:
Укажите порядок занятий во время обучения.
Укажите порядок любого измерения входного или выходного аргумента, соответствующего порядку класса. Например, использовать ClassNames для указания порядка размеров Cost или порядок столбцов классификационных баллов, возвращенных predict.
Выберите подмножество классов для обучения. Например, предположим, что набор всех различных имен классов в Y является {'a','b','c'}. Обучение модели с использованием наблюдений из классов 'a' и 'c' только, укажите 'ClassNames',{'a','c'}.
Значение по умолчанию для ClassNames - набор всех различающихся имен классов в переменной ответа в Tbl или Y.
Пример: 'ClassNames',{'b','g'}
Типы данных: categorical | char | string | logical | single | double | cell
'Cost' - Расходы на неправильную классификациюСтоимость неправильной классификации, указанная как разделенная запятыми пара, состоящая из 'Cost' и квадратную матрицу или структуру. При указании:
Квадратная матрица Cost, то Cost(i,j) - стоимость классификации точки по классу j если его истинный класс i. То есть строки соответствуют истинному классу, а столбцы - прогнозируемому классу. Определение порядка классов для соответствующих строк и столбцов Cost, также укажите ClassNames аргумент пары имя-значение.
Структура S, то он должен иметь два поля:
S.ClassNames, который содержит имена классов в качестве переменной того же типа данных, что и Y
S.ClassificationCosts, которая содержит матрицу затрат со строками и столбцами, упорядоченными как в S.ClassNames
Значение по умолчанию: ones(, где K) - eye(K)K - количество различных классов.
Примечание
fitcensemble использование Cost для корректировки вероятностей предыдущего класса, указанных в Prior. Затем, fitcensemble использует скорректированные предыдущие вероятности для обучения и сбрасывает матрицу затрат до значения по умолчанию.
Пример: 'Cost',[0 1 2 ; 1 0 2; 2 2 0]
Типы данных: double | single | struct
'Prior' - Предварительные вероятности'empirical' (по умолчанию) | 'uniform' | числовой вектор | массив структурыПредыдущие вероятности для каждого класса, указанные как пара, разделенная запятыми, состоящая из 'Prior' и значение в этой таблице.
| Стоимость | Описание |
|---|---|
'empirical' | Предшествующие вероятности класса являются относительными частотами класса в Y. |
'uniform' | Все предшествующие вероятности классов равны 1/K, где K - число классов. |
| числовой вектор | Каждый элемент является классом предшествующей вероятности. Упорядочить элементы по Mdl.ClassNames или укажите порядок с помощью ClassNames аргумент пары имя-значение. Программное обеспечение нормализует элементы таким образом, что они суммируются с 1. |
| структурный массив | Структура
|
fitcensemble нормализует предыдущие вероятности в Prior для суммирования в 1.
Пример: struct('ClassNames',{{'setosa','versicolor','virginica'}},'ClassProbs',1:3)
Типы данных: char | string | double | single | struct
'ScoreTransform' - Преобразование баллов'none' (по умолчанию) | 'doublelogit' | 'invlogit' | 'ismax' | 'logit' | дескриптор функции |...Преобразование оценки, указанное как вектор символа, скаляр строки или дескриптор функции.
В этой таблице представлены доступные векторы символов и строковые скаляры.
| Стоимость | Описание |
|---|---|
'doublelogit' | 1/( 1 + e-2x) |
'invlogit' | log (x/( 1 - x)) |
'ismax' | Устанавливает балл для класса с наибольшим баллом в 1 и устанавливает балл для всех остальных классов в 0 |
'logit' | 1/( 1 + e-x) |
'none' или 'identity' | x (без преобразования) |
'sign' | -1 для x < 0 0 для x = 0 1 для x > 0 |
'symmetric' | 2x – 1 |
'symmetricismax' | Устанавливает балл для класса с наибольшим баллом в 1 и устанавливает балл для всех остальных классов в -1 |
'symmetriclogit' | 2/( 1 + e-x) - 1 |
Для функции MATLAB или определяемой функции используйте ее дескриптор функции для преобразования оценки. Дескриптор функции должен принимать матрицу (исходные баллы) и возвращать матрицу того же размера (преобразованные баллы).
Пример: 'ScoreTransform','logit'
Типы данных: char | string | function_handle
'Weights' - Наблюдательные весаTblВеса наблюдения, указанные как разделенная запятыми пара, состоящая из 'Weights' и числовой вектор положительных значений или имя переменной в Tbl. Программное обеспечение взвешивает наблюдения в каждой строке X или Tbl с соответствующим значением в Weights. Размер Weights должно равняться количеству строк X или Tbl.
Если входные данные указаны как таблица Tbl, то Weights может быть именем переменной в Tbl содержит числовой вектор. В этом случае необходимо указать Weights в виде вектора символов или строкового скаляра. Например, если вектор весов W хранится как Tbl.W, затем укажите его как 'W'. В противном случае программа обрабатывает все столбцы Tbl, в том числе W, в качестве предикторов или реакции при обучении модели.
Программное обеспечение нормализуется Weights для суммирования значения предшествующей вероятности в соответствующем классе.
По умолчанию Weights является ones(, где n,1)n - количество наблюдений в X или Tbl.
Типы данных: double | single | char | string
'FResample' - Доля обучающего комплекта, подлежащего повторному отбору1 (по умолчанию) | положительный скаляр в (0,1]Доля обучающего набора для повторной выборки для каждого слабого учащегося, определяемая как разделенная запятыми пара, состоящая из 'FResample' и положительный скаляр в (0,1].
Использовать 'FResample', указать 'bag' для Method или набор Resample кому 'on'.
Пример: 'FResample',0.75
Типы данных: single | double
'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
'LearnRate' - Коэффициент усадки1 (по умолчанию) | числовой скаляр в (0,1]Скорость обучения для усадки, определяемая как разделенная запятыми пара, состоящая из 'LearnRate' и числовой скаляр в интервале (0,1].
Для обучения ансамбля с использованием усадки, установка LearnRate до значения, меньшего, чем 1, например, 0.1 является популярным выбором. Обучение ансамбля с использованием усадки требует большего количества итераций обучения, но часто достигает лучшей точности.
Пример: 'LearnRate',0.1
Типы данных: single | double
'RatioToSmallest' - Пропорция выборки по отношению к самому низко представленному классуПропорция выборки по отношению к самому низко представленному классу, указанному как пара, разделенная запятыми, состоящая из: 'RatioToSmallest' и числовой скалярный или числовой вектор положительных значений с длиной, равной количеству отдельных классов в обучающих данных.
Предположим, что есть K классы в данных обучения и самый низко представленный класс m наблюдения в данных обучения.
Если указан положительный числовой скаляр s, то fitcensemble образцы наблюдения из каждого класса, то есть он использует одну и ту же пропорцию выборки для каждого класса. Дополнительные сведения см. в разделе Алгоритмы.s*m
Если указан числовой вектор [, то s1,s2,...,sK]fitcensemble образцы наблюдения из класса si*mi, i = 1..., K. Элементы RatioToSmallest соответствуют порядку имен классов, указанных с помощью ClassNames (см. Советы).
Значение по умолчанию: ones(, который определяет образец K,1)m наблюдения из каждого класса.
Пример: 'RatioToSmallest',[2,1]
Типы данных: single | double
'MarginPrecision' - Точность запаса для управления скоростью сходимости0.1 (по умолчанию) | числовой скаляр в [0,1]Точность запаса для управления скоростью сходимости, заданная как пара, разделенная запятыми, состоящая из 'MarginPrecision' и числовой скаляр в интервале [0,1]. MarginPrecision влияет на количество повышающих итераций, необходимых для сходимости.
Совет
Чтобы обучить ансамбль с использованием нескольких учеников, укажите небольшое значение для MarginPrecision. Для обучения с использованием нескольких учеников укажите большое значение.
Пример: 'MarginPrecision',0.5
Типы данных: single | double
'RobustErrorGoal' - Ошибка классификации цели0.1 (по умолчанию) | неотрицательный числовой скалярОшибка классификации цели, указанная как пара, разделенная запятыми, состоящая из 'RobustErrorGoal' и неотрицательный числовой скаляр. Верхняя граница возможных значений зависит от значений RobustMarginSigma и RobustMaxMargin. Однако верхняя граница не может превышать 1.
Совет
Для конкретного обучающего набора обычно существует оптимальный диапазон для RobustErrorGoal. Если установить его слишком низким или слишком высоким, то программа может создать модель с низкой точностью классификации. Попробуйте выполнить перекрестную проверку для поиска соответствующего значения.
Пример: 'RobustErrorGoal',0.05
Типы данных: single | double
'RobustMarginSigma' - Распределение маржи классификации0.1 (по умолчанию) | положительный числовой скалярРаспределение маржи классификации по данным обучения, указанное как пара, разделенная запятыми, состоящая из 'RobustMarginSigma' и положительный числовой скаляр. Перед указанием RobustMarginSigma, обратитесь к литературе по RobustBoost, например, [19].
Пример: 'RobustMarginSigma',0.5
Типы данных: single | double
'RobustMaxMargin' - Максимальный запас классификации0 (по умолчанию) | неотрицательный числовой скалярМаксимальный предел классификации в данных обучения, указанный как пара, разделенная запятыми, состоящая из 'RobustMaxMargin' и неотрицательный числовой скаляр. Программное обеспечение минимизирует количество наблюдений в учебных данных, имеющих ниже границы классификации RobustMaxMargin.
Пример: 'RobustMaxMargin',1
Типы данных: single | double
'NPredToSample' - Количество предикторов для выборки1 (по умолчанию) | положительное целое числоКоличество предикторов для выборки для каждого случайного учащегося подпространства, указанного как пара, разделенная запятыми, состоящая из 'NPredToSample' и положительное целое число в интервале 1,..., p, где p - число переменных предиктора (size(X,2) или size(Tbl,2)).
Типы данных: single | double
'OptimizeHyperparameters' - Параметры для оптимизации'none' (по умолчанию) | 'auto' | 'all' | строковый массив или массив ячеек допустимых имен параметров | вектор optimizableVariable объектыПараметры для оптимизации, указанные как пара, разделенная запятыми, состоящая из 'OptimizeHyperparameters' и одно из следующих:
'none' - Не оптимизировать.
'auto' - Использование {'Method','NumLearningCycles','LearnRate'} вместе с параметрами по умолчанию для указанного Learners:
Learners = 'tree' (по умолчанию) - {'MinLeafSize'}
Learners = 'discriminant' — {'Delta','Gamma'}
Learners = 'knn' — {'Distance','NumNeighbors'}
Примечание
Для оптимизации гиперпараметров, Learners должен быть единственным аргументом, а не строковым массивом или массивом ячеек.
'all' - Оптимизируйте все подходящие параметры.
Строковый массив или массив ячеек допустимых имен параметров
Вектор optimizableVariable объекты, обычно выходные данные hyperparameters
Оптимизация пытается минимизировать потери при перекрестной проверке (ошибка) для fitcensemble путем изменения параметров. Сведения о потере при перекрестной проверке (хотя и в другом контексте) см. в разделе Потеря классификации. Для управления типом перекрестной проверки и другими аспектами оптимизации используйте HyperparameterOptimizationOptions пара имя-значение.
Примечание
'OptimizeHyperparameters' значения переопределяют любые значения, заданные с помощью других аргументов пары «имя-значение». Например, настройка 'OptimizeHyperparameters' кому 'auto' вызывает 'auto' значения для применения.
Подходящие параметры для fitcensemble являются:
Method - Зависит от количества классов.
Два класса - Подходящие методы: 'Bag', 'GentleBoost', 'LogitBoost', 'AdaBoostM1', и 'RUSBoost'.
Три или более классов - Подходящие методы: 'Bag', 'AdaBoostM2', и 'RUSBoost'.
NumLearningCycles — fitcensemble поиск среди положительных целых чисел, по умолчанию log-scaled с диапазоном [10,500].
LearnRate — fitcensemble поиск среди положительных реалов, по умолчанию с логарифмическим масштабированием с диапазоном [1e-3,1].
Подходящие гиперпараметры для выбранного Learners:
| Ученики | Подходящие гиперпараметры Bold = Используется по умолчанию | Диапазон по умолчанию |
|---|---|---|
'discriminant' | Delta | Масштаб журнала в диапазоне [1e-6,1e3] |
DiscrimType | 'linear', 'quadratic', 'diagLinear', 'diagQuadratic', 'pseudoLinear', и 'pseudoQuadratic' | |
Gamma | Реальные значения в [0,1] | |
'knn' | Distance | 'cityblock', 'chebychev', 'correlation', 'cosine', 'euclidean', 'hamming', 'jaccard', 'mahalanobis', 'minkowski', 'seuclidean', и 'spearman' |
DistanceWeight | 'equal', 'inverse', и 'squaredinverse' | |
Exponent | Положительные значения в [0.5,3] | |
NumNeighbors | Логарифмированные положительные целочисленные значения в диапазоне [1, max(2,round(NumObservations/2))] | |
Standardize | 'true' и 'false' | |
'tree' | MaxNumSplits | Целые числа, масштабированные в диапазоне [1,max(2,NumObservations-1)] |
MinLeafSize | Целые числа, масштабированные в диапазоне [1,max(2,floor(NumObservations/2))] | |
NumVariablesToSample | Целые числа в диапазоне [1,max(2,NumPredictors)] | |
SplitCriterion | 'gdi', 'deviance', и 'twoing' |
В качестве альтернативы можно использовать hyperparameters с выбранным вами Learners. Обратите внимание, что необходимо указать данные предиктора и ответ при создании optimizableVariable объект.
load fisheriris params = hyperparameters('fitcensemble',meas,species,'Tree');
Чтобы увидеть подходящие гиперпараметры и гиперпараметры по умолчанию, проверьте params.
Установка параметров, не используемых по умолчанию, путем передачи вектора optimizableVariable объекты, не имеющие значений по умолчанию. Например,
load fisheriris params = hyperparameters('fitcensemble',meas,species,'Tree'); params(4).Range = [1,30];
Проход 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 - Модель обучаемого классификационного ансамбляClassificationBaggedEnsemble объект модели | ClassificationEnsemble объект модели | ClassificationPartitionedEnsemble объект модели с перекрестной проверкойОбучаемая модель ансамбля, возвращенная в качестве одного из объектов модели в этой таблице.
| Объект модели | Указать какие-либо параметры перекрестной проверки? | Method Настройка | Resample Настройка |
|---|---|---|---|
ClassificationBaggedEnsemble | Нет | 'Bag' | 'on' |
ClassificationEnsemble | Нет | Любой метод агрегации ансамблей для классификации | 'off' |
ClassificationPartitionedEnsemble | Да | Любой метод агрегации ансамблей для классификации | 'off' или 'on' |
Аргументы пары имя-значение, управляющие перекрестной проверкой: CrossVal, Holdout, KFold, Leaveout, и CVPartition.
Для ссылки на свойства Mdl, используйте точечную нотацию. Например, для доступа или отображения вектора ячейки слабых объектов модели учащегося для ансамбля, не прошедшего перекрестную проверку, введите Mdl.Trained в командной строке.
NumLearningCycles может варьироваться от нескольких десятков до нескольких тысяч. Обычно ансамбль с хорошей прогностической силой требует от нескольких сотен до нескольких тысяч слабых учеников. Однако тренировать ансамбль для такого количества циклов сразу не приходится. Вы можете начать с выращивания нескольких десятков учеников, осмотреть выступление ансамбля, а затем, при необходимости, обучить более слабых учеников, используя resume для проблем классификации.
Выступление ансамбля зависит от настроек ансамбля и настроек слабых учеников. То есть, если указать слабых учеников с параметрами по умолчанию, то ансамбль может выступать плохо. Поэтому, как и настройки ансамбля, рекомендуется корректировать параметры слабых учеников с помощью шаблонов и выбирать значения, которые минимизируют ошибку обобщения.
При указании повторной выборки с помощью Resample, в этом случае рекомендуется выполнить повторную выборку всего набора данных. То есть используйте настройку по умолчанию 1 для FResample.
Если метод агрегации ансамбля (Methodявляется 'bag' и:
Стоимость неправильной классификации (Cost) сильно разбалансирован, тогда для образцов в мешках программное обеспечение избыточно дискретизирует уникальные наблюдения из класса, который имеет большой штраф.
Предшествующие вероятности класса (Prior) сильно искажены, программное обеспечение избыточно дискретизирует уникальные наблюдения из класса, который имеет большую предварительную вероятность.
Для меньших размеров выборки эти комбинации могут привести к низкой относительной частоте наблюдений вне мешка из класса, который имеет большой штраф или предыдущую вероятность. Следовательно, оценочная ошибка вне пакета является очень переменной, и ее может быть трудно интерпретировать. Чтобы избежать больших предполагаемых отклонений ошибок вне пакета, особенно для небольших размеров выборки, установите более сбалансированную матрицу затрат на неправильную классификацию с помощью Cost или менее искаженный предшествующий вектор вероятности с использованием Prior.
Поскольку порядок некоторых входных и выходных аргументов соответствует различным классам в данных обучения, рекомендуется указывать порядок классов с помощью ClassNames аргумент пары имя-значение.
Чтобы быстро определить порядок классов, удалите все наблюдения из данных обучения, которые не классифицированы (то есть имеют отсутствующую метку), получите и отобразите массив всех отдельных классов, а затем укажите массив для ClassNames. Например, предположим, что переменная ответа (Y) - массив ячеек меток. Этот код определяет порядок классов в переменной classNames.
Ycat = categorical(Y); classNames = categories(Ycat)
categorical назначает <undefined> к неклассифицированным наблюдениям и categories исключает <undefined> с его выхода. Поэтому при использовании этого кода для массивов ячеек меток или аналогичного кода для категориальных массивов для получения списка отдельных классов не требуется удалять наблюдения с отсутствующими метками.Чтобы указать, что порядок классов от самой нижней представленной метки к самой представленной, быстро определите порядок классов (как в предыдущем маркере), но упорядочьте классы в списке по частоте перед передачей списка в ClassNames. Следуя предыдущему примеру, этот код определяет порядок классов от нижнего до наиболее представленного в classNamesLH.
Ycat = categorical(Y); classNames = categories(Ycat); freq = countcats(Ycat); [~,idx] = sort(freq); classNamesLH = classNames(idx);
После обучения модели можно создать код C/C + +, который предсказывает метки для новых данных. Для создания кода C/C + + требуется Coder™ MATLAB. Дополнительные сведения см. в разделе Введение в создание кода .
Подробные сведения о алгоритмах агрегации ансамбля см. в разделе Алгоритмы ансамбля.
Если установить Method быть алгоритмом повышения и Learners чтобы быть деревьями принятия решений, программное обеспечение по умолчанию вырастает неглубокими деревьями принятия решений. Можно скорректировать глубину дерева, указав MaxNumSplits, MinLeafSize, и MinParentSize аргументы пары имя-значение с использованием templateTree.
Для фасовки в мешки ('Method','Bag'), fitcensemble генерирует образцы в мешке путем избыточной выборки классов с большими затратами на неправильную классификацию и недостаточной выборки классов с небольшими затратами на неправильную классификацию. Следовательно, образцы вне мешка имеют меньше наблюдений из классов с большими затратами на неправильную классификацию и больше наблюдений из классов с небольшими затратами на неправильную классификацию. Если вы обучаете классификационный ансамбль, используя небольшой набор данных и сильно искаженную матрицу затрат, то количество наблюдений вне пакета на класс может быть низким. Следовательно, оценочная ошибка вне пакета может иметь большую дисперсию и может быть трудно интерпретировать. Такое же явление может иметь место для классов с большими предшествующими вероятностями.
Для метода агрегации ансамблей RUSBoost ('Method','RUSBoost'), аргумент пары имя-значение RatioToSmallest задает пропорцию выборки для каждого класса по отношению к самому низко представленному классу. Например, предположим, что в данных обучения есть два класса: A и B. A имеет 100 наблюдений и B имеет 10 наблюдений. Предположим также, что класс с самым низким представлением имеет m наблюдения в данных обучения.
Если установить 'RatioToSmallest',2, то = s*m2*10 = 20. Следовательно, fitcensemble обучает каждого учащегося с использованием 20 наблюдений из класса A и 20 наблюдений из класса B. Если установить 'RatioToSmallest',[2 2], тогда вы получите тот же результат.
Если установить 'RatioToSmallest',[2,1], то = s1*m2*10 = 20 и = s2*m1*10 = 10. Следовательно, fitcensemble обучает каждого учащегося, используя 20 наблюдений из класса А и 10 наблюдений из класса В.
Для двухъядерных систем и выше, fitcensemble параллелизует обучение с использованием 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] Фрейнд, Y. «Более надежный алгоритм повышения». arXiv:0905.2138v1, 2009.
[4] Фрейнд, Ю. и Р. Э. Шапайр. «Теоретическое обобщение онлайн-обучения и приложения для повышения». J. of Computer and System Sciences, Vol. 55, pp. 119-139, 1997.
[5] Фридман, Дж. «Приближение жадной функции: градиентная повышающая машина». Летописи статистики, том 29, № 5, стр. 1189 - 1232, 2001.
[6] Фридман, Дж., Т. Хасти и Р. Тибширани. «Аддитивная логистическая регрессия: статистическое представление повышения». Летописи статистики, том 28, № 2, стр. 337 - 407, 2000.
[7] Хасти, Т., Р. Тибширани и Дж. Фридман. издание раздела Элементы статистического обучения, Спрингер, Нью-Йорк, 2008 год.
[8] Хо, Т. К. «Метод случайного подпространства для построения решающих лесов». IEEE Transactions on Pattern Analysis and Machine Intelligence, том 20, № 8, стр. 832-844, 1998.
[9] Шапайр, Р. Э., Я. Фройнд, П. Бартлетт и В. С. Ли. «Повышение маржи: новое объяснение эффективности методов голосования». Летописи статистики, т. 26, № 5, стр. 1651 - 1686, 1998.
[10] Зайфферт, К., Т. Хошгофтаар, Ж. Хульсе и А. Наполитано. 19-я Международная конференция по распознаванию образов, стр. 1-4, 2008.
[11] Вармут, М., Дж. Ляо и Г. Ратш. «Полностью корректирующие алгоритмы повышения, которые максимизируют запас». Proc. 23-я Int 'l. Conf. on Machine Learning, ACM, Нью-Йорк, стр. 1001-1008, 2006.
fitcensemble поддерживает параллельное обучение с использованием 'Options' аргумент «имя-значение». Создание параметров с помощью statset, такие как options = statset('UseParallel',true). Обучение параллельному ансамблю требует установки 'Method' аргумент «имя-значение» для 'Bag'. Параллельное обучение доступно только для обучающихся по дереву, тип по умолчанию для 'Bag'.
Чтобы выполнить параллельную оптимизацию гиперпараметров, используйте 'HyperparameterOptimizationOptions', struct('UseParallel',true) аргумент name-value в вызове этой функции.
Дополнительные сведения об оптимизации параллельных гиперпараметров см. в разделе Параллельная байесовская оптимизация.
Общие сведения о параллельных вычислениях см. в разделе Запуск функций MATLAB с автоматической параллельной поддержкой (панель инструментов параллельных вычислений).
ClassificationBaggedEnsemble | ClassificationEnsemble | ClassificationPartitionedEnsemble | predict | templateDiscriminant | templateKNN | templateTree
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.