Подходящий ансамбль учеников для классификации
возвращает обученный объект модели ансамбля классификации (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 = classreg.learning.classif.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
misclassification уровень в выборке для ансамбля, который использует все предикторы, ниже.
Обучите ансамбль повышенных деревьев классификации при помощи fitcensemble
. Уменьшайте учебное время путем определения 'NumBins'
аргумент пары "имя-значение" интервалу числовые предикторы. Этот аргумент допустим только когда 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);
toc
Elapsed time is 165.598434 seconds.
Процесс приблизительно в три раза быстрее, когда вы используете сгруппированные данные вместо исходных данных. Обратите внимание на то, что прошедшее время может варьироваться в зависимости от вашей операционной системы.
Сравните ошибки классификации перезаменой.
rsLoss1 = resubLoss(Mdl1)
rsLoss1 = 0.0788
rsLoss2 = resubLoss(Mdl2)
rsLoss2 = 0.0788
В этом примере значения предиктора раскладывания уменьшают учебное время без потери точности. В общем случае, когда у вас есть большой набор данных как тот в этом примере, использование опции раскладывания ускоряет обучение, но вызывает потенциальное уменьшение в точности. Если вы хотите уменьшать учебное время далее, задайте меньшее число интервалов.
Воспроизведите сгруппированные данные о предикторе при помощи BinEdges
свойство обученной модели и discretize
функция.
X = Mdl2.X; % Predictor data Xbinned = zeros(size(X)); edges = Mdl2.BinEdges; % Find indices of binned predictors. idxNumeric = find(~cellfun(@isempty,edges)); if iscolumn(idxNumeric) idxNumeric = idxNumeric'; end for j = idxNumeric x = X(:,j); % Convert x to array if x is a table. if istable(x) x = table2array(x); end % Group x into bins by using the discretize function. xbinned = discretize(x,[-inf; edges{j}; inf]); Xbinned(:,j) = xbinned; end
Xbinned
содержит индексы интервала, в пределах от 1 к количеству интервалов, для числовых предикторов. Xbinned
значениями является 0
для категориальных предикторов. Если X
содержит NaN
s, затем соответствующий Xbinned
значениями является NaN
s.
Оцените ошибку обобщения ансамбля повышенных деревьев классификации.
Загрузите 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-кратное, misclassification уровень. Отобразите предполагаемую ошибку обобщения ансамбля.
kflc = kfoldLoss(Mdl,'Mode','cumulative'); figure; plot(kflc); ylabel('10-fold Misclassification rate'); xlabel('Learning cycle');
estGenError = kflc(end)
estGenError = 0.0712
kfoldLoss
возвращает ошибку обобщения по умолчанию. Однако графический вывод совокупной потери позволяет вам контролировать, как потеря изменяется, когда слабые ученики накапливаются в ансамбле.
Ансамбль достигает misclassification уровня приблизительно 0,06 после накопления приблизительно 50 слабых учеников. Затем misclassification повышение ставки немного как более слабые ученики вводит ансамбль.
Если вы удовлетворены ошибкой обобщения ансамбля, то, чтобы создать прогнозную модель, обучают ансамбль, снова использующий все настройки кроме перекрестной проверки. Однако это - хорошая практика, чтобы настроить гиперпараметры, такие как максимальное количество разделений решения на дерево и количество изучения циклов.
Оптимизируйте гиперпараметры автоматически с помощью fitcensemble
.
Загрузите ionosphere
набор данных.
load ionosphere
Можно найти гиперпараметры, которые минимизируют пятикратную потерю перекрестной проверки при помощи автоматической гипероптимизации параметров управления.
Mdl = fitcensemble(X,Y,'OptimizeHyperparameters','auto')
В этом примере, для воспроизводимости, устанавливает случайный seed и используют '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 | 3.3624 | 0.10256 | 0.10256 | RUSBoost | 11 | 0.010199 | 17 | | 2 | Best | 0.062678 | 9.6203 | 0.062678 | 0.064264 | LogitBoost | 206 | 0.96537 | 33 | | 3 | Accept | 0.099715 | 8.0898 | 0.062678 | 0.062688 | AdaBoostM1 | 130 | 0.0072814 | 2 | | 4 | Accept | 0.065527 | 1.6408 | 0.062678 | 0.062681 | Bag | 25 | - | 5 | | 5 | Accept | 0.065527 | 7.7597 | 0.062678 | 0.062695 | LogitBoost | 178 | 0.52008 | 40 | | 6 | Accept | 0.068376 | 5.9989 | 0.062678 | 0.062693 | GentleBoost | 146 | 0.46233 | 8 | | 7 | Accept | 0.076923 | 18.779 | 0.062678 | 0.063613 | GentleBoost | 456 | 0.0018323 | 3 | | 8 | Accept | 0.068376 | 22.404 | 0.062678 | 0.063878 | LogitBoost | 479 | 0.036176 | 7 | | 9 | Accept | 0.068376 | 11.182 | 0.062678 | 0.065468 | LogitBoost | 277 | 0.99964 | 42 | | 10 | Accept | 0.17379 | 0.56157 | 0.062678 | 0.064692 | LogitBoost | 11 | 0.0012008 | 1 | | 11 | Accept | 0.065527 | 5.5375 | 0.062678 | 0.064854 | Bag | 100 | - | 1 | | 12 | Accept | 0.076923 | 1.0801 | 0.062678 | 0.062571 | GentleBoost | 23 | 0.0096328 | 2 | | 13 | Accept | 0.082621 | 0.80043 | 0.062678 | 0.064919 | GentleBoost | 18 | 0.0078878 | 61 | | 14 | Accept | 0.065527 | 27.031 | 0.062678 | 0.06557 | Bag | 499 | - | 7 | | 15 | Accept | 0.079772 | 15.974 | 0.062678 | 0.064962 | GentleBoost | 359 | 0.080649 | 1 | | 16 | Accept | 0.35897 | 0.59864 | 0.062678 | 0.062491 | Bag | 10 | - | 171 | | 17 | Accept | 0.35897 | 0.76429 | 0.062678 | 0.062483 | AdaBoostM1 | 14 | 0.0029975 | 174 | | 18 | Accept | 0.10826 | 33.38 | 0.062678 | 0.062484 | RUSBoost | 498 | 0.35355 | 1 | | 19 | Accept | 0.64103 | 1.3341 | 0.062678 | 0.062469 | RUSBoost | 20 | 0.11564 | 175 | | 20 | Accept | 0.091168 | 12.13 | 0.062678 | 0.062474 | RUSBoost | 187 | 0.0010337 | 5 | |===================================================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | Method | NumLearningC-| LearnRate | MinLeafSize | | | result | | runtime | (observed) | (estim.) | | ycles | | | |===================================================================================================================================| | 21 | Accept | 0.076923 | 14.191 | 0.062678 | 0.062473 | GentleBoost | 322 | 0.020651 | 174 | | 22 | Accept | 0.065527 | 3.9125 | 0.062678 | 0.062473 | AdaBoostM1 | 63 | 0.94968 | 1 | | 23 | Accept | 0.17379 | 7.1762 | 0.062678 | 0.062356 | LogitBoost | 166 | 0.0011034 | 175 | | 24 | Accept | 0.17379 | 0.93764 | 0.062678 | 0.062611 | LogitBoost | 20 | 0.0011381 | 15 | | 25 | Accept | 0.062678 | 5.5353 | 0.062678 | 0.062619 | LogitBoost | 125 | 0.9709 | 4 | | 26 | Accept | 0.11681 | 0.7908 | 0.062678 | 0.062621 | RUSBoost | 10 | 0.93628 | 6 | | 27 | Accept | 0.082621 | 1.0245 | 0.062678 | 0.062716 | GentleBoost | 19 | 0.94744 | 75 | | 28 | Accept | 0.065527 | 6.1532 | 0.062678 | 0.064168 | LogitBoost | 131 | 0.99024 | 9 | | 29 | Accept | 0.068376 | 26.654 | 0.062678 | 0.064254 | Bag | 489 | - | 2 | | 30 | Accept | 0.076923 | 19.52 | 0.062678 | 0.063851 | GentleBoost | 458 | 0.0010094 | 16 | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 319.7864 seconds. Total objective function evaluation time: 273.9233 Best observed feasible point: Method NumLearningCycles LearnRate MinLeafSize __________ _________________ _________ ___________ LogitBoost 206 0.96537 33 Observed objective function value = 0.062678 Estimated objective function value = 0.063851 Function evaluation time = 9.6203 Best estimated feasible point (according to models): Method NumLearningCycles LearnRate MinLeafSize __________ _________________ _________ ___________ LogitBoost 277 0.99964 42 Estimated objective function value = 0.063851 Estimated function evaluation time = 11.6541
Mdl = classreg.learning.classif.ClassificationEnsemble ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 HyperparameterOptimizationResults: [1×1 BayesianOptimization] NumTrained: 277 Method: 'LogitBoost' LearnerNames: {'Tree'} ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.' FitInfo: [277×1 double] FitInfoDescription: {2×1 cell} Properties, Methods
Оптимизация, искавшая по методам агрегации ансамбля бинарную классификацию, по NumLearningCycles
, по LearnRate
для применимых методов, и по древовидному ученику MinLeafSize
. Выход является классификатором ансамбля с минимальной предполагаемой потерей перекрестной проверки.
Один способ создать ансамбль повышенных деревьев классификации, который имеет удовлетворительную прогнозирующую производительность, путем настройки уровня сложности дерева решений с помощью перекрестной проверки. При поиске оптимального уровня сложности настройте темп обучения, чтобы минимизировать количество изучения циклов.
Этот пример вручную находит оптимальные параметры при помощи опции перекрестной проверки ('KFold'
аргумент пары "имя-значение") и kfoldLoss
функция. В качестве альтернативы можно использовать 'OptimizeHyperparameters'
аргумент пары "имя-значение", чтобы оптимизировать гиперпараметры автоматически. Смотрите Оптимизируют Ансамбль Классификации.
Загрузите ionosphere
набор данных.
load ionosphere
Искать оптимальный уровень древовидной сложности:
Перекрестный подтвердите набор ансамблей. Экспоненциально увеличьте уровень древовидной сложности для последующих ансамблей от пня решения (одно разделение) к в большей части n - 1 разделение. n является объемом выборки. Кроме того, варьируйтесь темп обучения для каждого ансамбля между 0,1 к 1.
Оцените перекрестный подтвержденный misclassification уровень каждого ансамбля.
Для уровня древовидной сложности , , сравните совокупный, перекрестный подтвержденный misclassification уровень ансамблей путем графического вывода их против количества изучения циклов. Постройте отдельные кривые для каждого темпа обучения на той же фигуре.
Выберите кривую, которая достигает минимального misclassification уровня, и отметьте соответствующий цикл изучения и темп обучения.
Перекрестный подтвердите глубокое дерево классификации и пень. Эти деревья классификации служат сравнительными тестами.
rng(1) % For reproducibility MdlDeep = fitctree(X,Y,'CrossVal','on','MergeLeaves','off', ... 'MinParentSize',1); MdlStump = fitctree(X,Y,'MaxNumSplits',1,'CrossVal','on');
Перекрестный подтвердите ансамбль 150 повышенных деревьев классификации с помощью 5-кратной перекрестной проверки. Используя древовидный шаблон, варьируйтесь максимальное количество разделений с помощью значений в последовательности . m таков что не больше, чем 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
Оцените совокупный, перекрестный подтвержденный misclassification уровень для каждого ансамбля и деревьев классификации, служащих сравнительными тестами.
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);
Постройте, как перекрестный подтвержденный misclassification уровень ведет себя как количество деревьев в увеличениях ансамбля. Постройте кривые относительно темпа обучения на том же графике и постройте отдельные графики для различных уровней древовидной сложности. Выберите подмножество древовидных уровней сложности, чтобы построить.
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;
Каждая кривая содержит минимум перекрестный подтвержденный misclassification уровень, происходящий в оптимальном количестве деревьев в ансамбле.
Идентифицируйте максимальное количество разделений, количество деревьев и темп обучения, который дает к самому низкому misclassification уровню в целом.
[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 = classreg.learning.classif.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.5879 | 0.17379 | 0.17379 | 137 | 0.001364 | 3 | | 2 | Accept | 0.17379 | 0.86125 | 0.17379 | 0.17379 | 15 | 0.013089 | 144 | | 3 | Best | 0.065527 | 1.5839 | 0.065527 | 0.065538 | 31 | 0.47201 | 2 | | 4 | Accept | 0.074074 | 16.044 | 0.065527 | 0.065549 | 340 | 0.92167 | 7 | | 5 | Accept | 0.088319 | 1.1615 | 0.065527 | 0.065562 | 20 | 0.24336 | 55 | | 6 | Accept | 0.076923 | 0.65064 | 0.065527 | 0.072693 | 11 | 0.64021 | 1 | | 7 | Accept | 0.071225 | 0.58602 | 0.065527 | 0.072095 | 10 | 0.99816 | 5 | | 8 | Accept | 0.076923 | 0.60015 | 0.065527 | 0.072986 | 10 | 0.75338 | 90 | | 9 | Accept | 0.096866 | 0.59733 | 0.065527 | 0.06506 | 10 | 0.42369 | 2 | | 10 | Best | 0.062678 | 1.8773 | 0.062678 | 0.062667 | 37 | 0.99202 | 63 | | 11 | Accept | 0.065527 | 1.0259 | 0.062678 | 0.062575 | 19 | 0.97944 | 1 | | 12 | Best | 0.059829 | 4.2008 | 0.059829 | 0.059766 | 86 | 0.40411 | 1 | | 13 | Best | 0.05698 | 3.0948 | 0.05698 | 0.057382 | 63 | 0.60537 | 1 | | 14 | Accept | 0.062678 | 3.2667 | 0.05698 | 0.059783 | 69 | 0.6167 | 4 | | 15 | Accept | 0.065527 | 3.5624 | 0.05698 | 0.060842 | 76 | 0.49778 | 2 | | 16 | Accept | 0.065527 | 2.1858 | 0.05698 | 0.061283 | 44 | 0.99938 | 4 | | 17 | Accept | 0.065527 | 2.6444 | 0.05698 | 0.062047 | 55 | 0.59384 | 46 | | 18 | Accept | 0.059829 | 6.0262 | 0.05698 | 0.061494 | 128 | 0.29635 | 48 | | 19 | Accept | 0.062678 | 8.417 | 0.05698 | 0.061481 | 182 | 0.25896 | 9 | | 20 | Accept | 0.062678 | 4.8812 | 0.05698 | 0.061248 | 107 | 0.38775 | 2 | |====================================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | NumLearningC-| LearnRate | MaxNumSplits | | | result | | runtime | (observed) | (estim.) | ycles | | | |====================================================================================================================| | 21 | Accept | 0.17379 | 0.53809 | 0.05698 | 0.0612 | 10 | 0.0010009 | 53 | | 22 | Accept | 0.17379 | 0.56404 | 0.05698 | 0.061382 | 10 | 0.051241 | 2 | | 23 | Best | 0.05698 | 4.1022 | 0.05698 | 0.060531 | 87 | 0.3124 | 1 | | 24 | Accept | 0.05698 | 4.1749 | 0.05698 | 0.058776 | 85 | 0.259 | 5 | | 25 | Accept | 0.065527 | 4.5086 | 0.05698 | 0.059405 | 93 | 0.20081 | 4 | | 26 | Accept | 0.17379 | 0.53874 | 0.05698 | 0.059578 | 10 | 0.0035026 | 2 | | 27 | Accept | 0.17379 | 1.4021 | 0.05698 | 0.059534 | 30 | 0.0036169 | 1 | | 28 | Accept | 0.151 | 1.9551 | 0.05698 | 0.059446 | 41 | 0.028937 | 1 | | 29 | Accept | 0.17379 | 1.4866 | 0.05698 | 0.059485 | 29 | 0.0010049 | 2 | | 30 | Accept | 0.1453 | 0.55298 | 0.05698 | 0.059371 | 10 | 0.13172 | 3 | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 122.1601 seconds. Total objective function evaluation time: 89.6783 Best observed feasible point: NumLearningCycles LearnRate MaxNumSplits _________________ _________ ____________ 87 0.3124 1 Observed objective function value = 0.05698 Estimated objective function value = 0.059371 Function evaluation time = 4.1022 Best estimated feasible point (according to models): NumLearningCycles LearnRate MaxNumSplits _________________ _________ ____________ 87 0.3124 1 Estimated objective function value = 0.059371 Estimated function evaluation time = 4.1152
mdl = classreg.learning.classif.ClassificationEnsemble ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 HyperparameterOptimizationResults: [1×1 BayesianOptimization] NumTrained: 87 Method: 'LogitBoost' LearnerNames: {'Tree'} ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.' FitInfo: [87×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
функция. Следующий код возвращает логический 1
TRUE
) для каждой переменной, которая имеет допустимое имя переменной.
cellfun(@isvarname,Tbl.Properties.VariableNames)
Tbl
не допустимы, затем преобразуют их при помощи matlab.lang.makeValidName
функция.Tbl.Properties.VariableNames = matlab.lang.makeValidName(Tbl.Properties.VariableNames);
Типы данных: 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' | Линейное повышение программирования — Требует Optimization Toolbox™ | Двоичный файл и мультикласс | MarginPrecision |
'RobustBoost' | Устойчивое повышение — Требует Optimization Toolbox | Двоичный файл только | RobustErrorGoal , RobustMarginSigma , RobustMaxMargin |
'RUSBoost' | Случайное повышение субдискретизации | Двоичный файл и мультикласс | LearnRate , RatioToSmallest |
'TotalBoost' | Полностью корректирующее повышение — Требует Optimization Toolbox | Двоичный файл и мультикласс | MarginPrecision |
Можно задать опции выборки (FResample
замена
передискретизация
) для обучающих данных, когда вы используете укладывание в мешки ('Bag'
) или повышение ('TotalBoost'
, 'RUSBoost'
, 'AdaBoostM1'
, 'AdaBoostM2'
, 'GentleBoost'
, 'LogitBoost'
, 'RobustBoost'
, или 'LPBoost'
).
Значения по умолчанию:
'LogitBoost'
для бинарных проблем и 'AdaBoostM2'
для проблем мультикласса, если 'Learners'
включает только древовидных учеников
'AdaBoostM1'
для бинарных проблем и 'AdaBoostM2'
для проблем мультикласса, если 'Learners'
включает и учеников древовидного и дискриминантного анализа
'Subspace'
если 'Learners'
не включает древовидных учеников
Для получения дополнительной информации об алгоритмах агрегации ансамбля и примерах, см. Алгоритмы, Советы, Алгоритмы Ансамбля, и Выберите Applicable Ensemble Aggregation Method.
Пример: 'Method','Bag'
'NumLearningCycles'
— Количество ансамбля, изучающего циклы
(значение по умолчанию) | положительное целое число | '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
использует слабых учеников, созданных функцией создания объекта шаблона с настройками по умолчанию. Например, определение 'Learner','discriminant'
совпадает с определением 'Learner',templateDiscriminant()
. Смотрите, что создание объекта шаблона функционирует страницы для настроек по умолчанию слабого ученика.
Объект шаблона слабого ученика — fitcensemble
использует слабых учеников, созданных функцией создания объекта шаблона. Используйте аргументы пары "имя-значение" функции создания объекта шаблона, чтобы задать настройки слабых учеников.
Вектор ячейки объектов шаблона слабого ученика m — fitcensemble
выращивает учеников m на изучение цикла (см. 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
выращивает мелкие деревья решений. Можно вырастить более глубокие деревья для лучшей точности.
Для получения дополнительной информации на количестве учеников, чтобы обучаться, смотрите NumLearningCycles
и Советы.
Пример: 'Learners',templateTree('MaxNumSplits',5)
'NPrint'
— Частота распечатки'off'
(значение по умолчанию) | положительное целое числоЧастота распечатки, заданная как разделенная запятой пара, состоящая из 'NPrint'
и положительное целое число или 'off'
.
Отслеживать количество слабых учеников или сгибов что fitcensemble
обученный до сих пор, задайте положительное целое число. Таким образом, если вы задаете положительный целочисленный m:
Также не задавая опции перекрестной проверки (например, CrossVal
), затем fitcensemble
отображает сообщение к командной строке каждый раз, когда она завершает учебный m слабые ученики.
И опция перекрестной проверки, затем fitcensemble
отображает сообщение к командной строке каждый раз, когда она закончила учебные сгибы m.
Если вы задаете 'off'
, затем fitcensemble
не отображает сообщение, когда оно завершает учебных слабых учеников.
Когда обучение ансамбль многих слабых учеников на большом наборе данных, задайте положительное целое число для NPrint
.
Пример: 'NPrint',5
Типы данных: single
| double
| char
| string
'NumBins'
— Количество интервалов для числовых предикторов[]
(пустое) (значение по умолчанию) | положительный целочисленный скалярКоличество интервалов для числовых предикторов, заданных как разделенная запятой пара, состоящая из 'NumBins'
и положительный целочисленный скаляр. Этот аргумент допустим только когда fitcensemble
использует древовидного ученика, то есть, 'Learner'
любой 'tree'
или объект шаблона создается при помощи templateTree
.
Если 'NumBins'
значение пусто (значение по умолчанию), затем программное обеспечение не делает интервала никакие предикторы.
Если вы задаете 'NumBins'
значение как положительный целочисленный скаляр, затем интервалы программного обеспечения каждый числовой предиктор в конкретное количество равновероятных интервалов, и затем выращивает деревья на индексах интервала вместо исходных данных.
Если 'NumBins'
значение превышает номер (u) уникальных значений для предиктора, затем fitcensemble
интервалы предиктор в интервалы u.
fitcensemble
не делает интервала категориальные предикторы.
Когда вы используете большой обучающий набор данных, эта опция раскладывания ускоряет обучение, но вызывает потенциальное уменьшение в точности. Можно попробовать 'NumBins',50
во-первых, и затем измените 'NumBins'
значение в зависимости от точности и учебной скорости.
Обученная модель хранит ребра интервала в BinEdges
свойство.
Пример: 'NumBins',50
Типы данных: single
| double
'CategoricalPredictors'
— Категориальный список предикторов'all'
Категориальный список предикторов, заданный как разделенная запятой пара, состоящая из 'CategoricalPredictors'
и одно из значений в этой таблице.
Значение | Описание |
---|---|
Вектор положительных целых чисел | Каждая запись в векторе является значением индекса, соответствующим столбцу данных о предикторе (X или Tbl ) это содержит категориальную переменную. |
Логический вектор | true запись означает что соответствующий столбец данных о предикторе (X или Tbl ) категориальная переменная. |
Символьная матрица | Каждая строка матрицы является именем переменного предиктора. Имена должны совпадать с записями в PredictorNames . Заполните имена дополнительными пробелами, таким образом, каждая строка символьной матрицы имеет ту же длину. |
Массив строк или массив ячеек из символьных векторов | Каждый элемент в массиве является именем переменного предиктора. Имена должны совпадать с записями в PredictorNames . |
все | Все предикторы являются категориальными. |
Спецификация 'CategoricalPredictors'
является соответствующим если:
'Learners'
задает древовидных учеников.
'Learners'
задает k - самые близкие ученики, где все предикторы являются категориальными.
Каждый ученик идентифицирует и обрабатывает категориальные предикторы таким же образом как подходящую функцию, соответствующую ученику. Смотрите 'CategoricalPredictors'
из fitcknn
для k - самые близкие ученики и 'CategoricalPredictors'
из fitctree
для древовидных учеников.
Пример: 'CategoricalPredictors','all'
Типы данных: single
| double
| logical
| char
| string
| cell
'PredictorNames'
— Имена переменного предиктораИмена переменного предиктора, заданные как разделенная запятой пара, состоящая из 'PredictorNames'
и массив строк уникальных имен или массив ячеек уникальных векторов символов. Функциональность 'PredictorNames'
зависит от способа, которым вы снабжаете обучающими данными.
Если вы предоставляете X
и Y
, затем можно использовать 'PredictorNames'
дать переменные предикторы в X
имена.
Порядок имен в PredictorNames
должен соответствовать порядку следования столбцов X
. Таким образом, PredictorNames{1}
имя X(:,1)
, PredictorNames{2}
имя X(:,2)
, и так далее. Кроме того, size(X,2)
и numel(PredictorNames)
должно быть равным.
По умолчанию, PredictorNames
{'x1','x2',...}
.
Если вы предоставляете Tbl
, затем можно использовать 'PredictorNames'
выбрать который переменные предикторы использовать в обучении. Таким образом, fitcensemble
использование только переменные предикторы в PredictorNames
и переменная отклика в обучении.
PredictorNames
должно быть подмножество Tbl.Properties.VariableNames
и не может включать имя переменной отклика.
По умолчанию, PredictorNames
содержит имена всех переменных предикторов.
Это - хорошая практика, чтобы задать предикторы для обучения с помощью любого 'PredictorNames'
или formula
только.
Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}
Типы данных: string
| cell
'ResponseName'
— Имя переменной отклика'Y'
(значение по умолчанию) | вектор символов | представляет скаляр в виде строкиИмя переменной отклика, заданное как разделенная запятой пара, состоящая из 'ResponseName'
и вектор символов или скаляр строки.
Если вы предоставляете Y
, затем можно использовать 'ResponseName'
задавать имя для переменной отклика.
Если вы предоставляете ResponseVarName
или formula
, затем вы не можете использовать 'ResponseName'
.
Пример: 'ResponseName','response'
Типы данных: char |
string
'CrossVal'
— Флаг перекрестной проверки'off'
(значение по умолчанию) | 'on'
Флаг перекрестной проверки, заданный как разделенная запятой пара, состоящая из 'Crossval'
и 'on'
или 'off'
.
Если вы задаете 'on'
, затем программное обеспечение реализует 10-кратную перекрестную проверку.
Чтобы заменить эту установку перекрестной проверки, используйте один из этих аргументов пары "имя-значение": CVPartition
, Holdout
, KFold
, или Leaveout
. Чтобы создать перекрестную подтвержденную модель, можно использовать один аргумент пары "имя-значение" перекрестной проверки за один раз только.
В качестве альтернативы перекрестный подтвердите позже путем передачи Mdl
к crossval
или crossval
.
Пример: 'Crossval','on'
'CVPartition'
— Раздел перекрестной проверки[]
(значение по умолчанию) | cvpartition
объект разделаРаздел перекрестной проверки, заданный как разделенная запятой пара, состоящая из 'CVPartition'
и cvpartition
объект раздела создается cvpartition
. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5)
. Затем можно задать перекрестную подтвержденную модель при помощи 'CVPartition',cvp
.
'Holdout'
— Часть данных для валидации затяжкиЧасть данных используется в валидации затяжки, заданной как разделенная запятой пара, состоящая из 'Holdout'
и скалярное значение в области значений (0,1). Если вы задаете 'Holdout',p
, затем программное обеспечение завершает эти шаги:
Случайным образом выберите и зарезервируйте p*100
% из данных как данные о валидации, и обучают модель с помощью остальной части данных.
Сохраните компактную, обученную модель в Trained
свойство перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'Holdout',0.1
Типы данных: double |
single
'KFold'
— Количество сгибов
(значение по умолчанию) | положительное целочисленное значение, больше, чем 1Количество сгибов, чтобы использовать в перекрестной подтвержденной модели, заданной как разделенная запятой пара, состоящая из 'KFold'
и положительное целочисленное значение, больше, чем 1. Если вы задаете 'KFold',k
, затем программное обеспечение завершает эти шаги:
Случайным образом разделите данные в k
наборы.
Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью другого k
– 1 набор.
Сохраните k
компактные, обученные модели в ячейках k
- 1 вектор ячейки в Trained
свойство перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'KFold',5
Типы данных: single
| double
'Leaveout'
— Флаг перекрестной проверки "Пропускает один"'off'
(значение по умолчанию) | 'on'
Флаг перекрестной проверки "Пропускает один", заданный как разделенная запятой пара, состоящая из 'Leaveout'
и 'on'
или 'off'
. Если вы задаете 'Leaveout','on'
, затем, для каждого из наблюдений n (где n является количеством наблюдений, исключая недостающие наблюдения, заданные в NumObservations
свойство модели), программное обеспечение завершает эти шаги:
Зарезервируйте наблюдение как данные о валидации и обучите модель с помощью другого n – 1 наблюдение.
Сохраните n компактные, обученные модели в ячейках n-by-1 вектор ячейки в Trained
свойство перекрестной подтвержденной модели.
Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition
, Holdout
, KFold
, или Leaveout
.
Пример: 'Leaveout','on'
'ClassNames'
— Имена классов, чтобы использовать в обученииИмена классов, чтобы использовать в обучении, заданном как разделенная запятой пара, состоящая из 'ClassNames'
и категориальное, символ, или массив строк, логический или числовой вектор или массив ячеек из символьных векторов. ClassNames
должен иметь совпадающий тип данных как Y
.
Если ClassNames
символьный массив, затем каждый элемент должен соответствовать одной строке массива.
Используйте ClassNames
к:
Закажите классы во время обучения.
Задайте порядок любой размерности аргумента ввода или вывода, которая соответствует порядку класса. Например, используйте ClassNames
задавать порядок размерностей Cost
или порядок следования столбцов баллов классификации, возвращенных predict
.
Выберите подмножество классов для обучения. Например, предположите что набор всех отличных имен классов в Y
{'a','b','c'}
. Обучать модель с помощью наблюдений от классов 'a'
и 'c'
только, задайте 'ClassNames',{'a','c'}
.
Значение по умолчанию для ClassNames
набор всех отличных имен классов в Y
.
Пример: 'ClassNames',{'b','g'}
Типы данных: categorical
| char
| string
| logical
| single
| double
| cell
'Cost'
— Misclassification стоитсяMisclassification стоят, заданный как разделенная запятой пара, состоящая из 'Cost'
и квадратная матрица или структура. Если вы задаете:
Квадратная матрица Cost
, затем Cost(i,j)
стоимость классификации точки в класс j
если его истинным классом является i
. Таким образом, строки соответствуют истинному классу, и столбцы соответствуют предсказанному классу. Чтобы задать класс заказывают для соответствующих строк и столбцов Cost
, также задайте ClassNames
аргумент пары "имя-значение".
Структура S
, затем это должно иметь два поля:
S.ClassNames
, который содержит имена классов как переменную совпадающего типа данных как Y
S.ClassificationCosts
, который содержит матрицу стоимости со строками и столбцами, упорядоченными как в S.ClassNames
Значением по умолчанию являются единицы (
, где K
) - глаз (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'
| указатель на функцию |...Выиграйте преобразование, заданное как разделенная запятой пара, состоящая из 'ScoreTransform'
и вектор символов, представьте в виде строки скаляр или указатель на функцию.
Эта таблица суммирует доступные векторы символов и скаляры строки.
Значение | Описание |
---|---|
'doublelogit' | 1/(1 + e –2x) |
'invlogit' | журнал (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
единицы (
, где n
,1)n
количество наблюдений в X
или Tbl
.
Типы данных: double |
single
| char
| string
'FResample'
— Часть набора обучающих данных, чтобы передискретизировать
(значение по умолчанию) | положительная скалярная величина в (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','off'
'Resample'
— Отметьте указание, чтобы передискретизировать'off'
| 'on'
Отметьте указание, чтобы передискретизировать, заданный как разделенная запятой пара, состоящая из 'Resample'
и 'off'
или 'on'
.
Если Method
повышающий метод, затем:
'Resample','on'
задает к демонстрационным учебным наблюдениям с помощью обновленных весов в качестве вероятностей выборки многочлена.
'Resample','off'
(значение по умолчанию) задает, чтобы повторно взвесить наблюдения в каждой итерации изучения.
Если Method
'bag'
, затем 'Resample'
должен быть 'on'
. Программное обеспечение передискретизирует часть учебных наблюдений (см. FResample
) с или без замены (см. Replace
).
Если вы задаете, чтобы передискретизировать использование Resample
, затем это - хорошая практика, чтобы передискретизировать к целому набору данных. Таким образом, используйте настройку по умолчанию 1 для FResample
.
'LearnRate'
— Темп обучения для уменьшения
(значение по умолчанию) | числовой скаляр в (0,1]Темп обучения для уменьшения, заданного как разделенная запятой пара, состоящая из числового скаляра в интервале (0,1].
Чтобы обучить ансамбль, использующий уменьшение, установите LearnRate
к значению меньше, чем 1
, например, 0.1
популярный выбор. Обучение ансамбль, использующий уменьшение, требует большего количества итераций изучения, но часто достигает лучшей точности.
Пример: 'LearnRate',0.1
Типы данных: single
| double
'LearnRate'
— Темп обучения для уменьшения
(значение по умолчанию) | числовой скаляр в (0,1]Темп обучения для уменьшения, заданного как разделенная запятой пара, состоящая из числового скаляра в интервале (0,1].
Чтобы обучить ансамбль, использующий уменьшение, установите LearnRate
к значению меньше, чем 1
, например, 0.1
популярный выбор. Обучение ансамбль, использующий уменьшение, требует большего количества итераций изучения, но часто достигает лучшей точности.
Пример: 'LearnRate',0.1
Типы данных: single
| double
'RatioToSmallest'
— Выборка пропорции относительно представленного самым низким образом классаВыборка пропорции относительно представленного самым низким образом класса, заданного как разделенная запятой пара, состоящая из 'RatioToSmallest'
и числовой скаляр или числовой вектор положительных значений с длиной равняются количеству отличных классов в обучающих данных.
Предположим, что существует K
классы в обучающих данных и представленный самым низким образом класс имеют m
наблюдения в обучающих данных.
Если вы задаете положительный числовой скаляр s
, затем fitcensemble
выборки
наблюдения от каждого класса, то есть, это использует ту же пропорцию выборки в каждом классе. Для получения дополнительной информации см. Алгоритмы.s
M
Если вы задаете числовой вектор [
, затем s1
S2
..., sK
]fitcensemble
выборки
наблюдения от класса si
M
i
i
= 1..., K. Элементы RatioToSmallest
соответствуйте порядку имен классов, заданных с помощью ClassNames
(см. Советы).
Значением по умолчанию являются единицы (
, который задает, чтобы произвести K
,1)m
наблюдения от каждого класса.
Пример: 'RatioToSmallest',[2,1]
Типы данных: single
| double
'MarginPrecision'
— Граничная точность, чтобы управлять быстротой сходимости
(значение по умолчанию) | числовой скаляр в [0,1]Граничная точность, чтобы управлять быстротой сходимости, заданной как разделенная запятой пара, состоящая из 'MarginPrecision'
и числовой скаляр в интервале [0,1]. MarginPrecision
влияет на количество повышения итераций, требуемых для сходимости.
Чтобы обучить ансамбль, использующий многих учеников, задайте маленькое значение для MarginPrecision
. Для обучения с помощью нескольких учеников задайте большое значение.
Пример: 'MarginPrecision',0.5
Типы данных: single
| double
'RobustErrorGoal'
— Целевая ошибка классификации
(значение по умолчанию) | неотрицательный числовой скалярЦелевая ошибка классификации, заданная как разделенная запятой пара, состоящая из 'RobustErrorGoal'
и неотрицательный числовой скаляр. Верхняя граница на возможных значениях зависит от значений RobustMarginSigma
и RobustMaxMargin
. Однако верхняя граница не может превысить 1
.
Для конкретного набора обучающих данных обычно существует оптимальная область значений для RobustErrorGoal
. Если вы устанавливаете его слишком низко или слишком высоко, то программное обеспечение может произвести модель с плохой точностью классификации. Попытайтесь перекрестный подтвердить, чтобы искать соответствующее значение.
Пример: 'RobustErrorGoal',0.05
Типы данных: single
| double
'RobustMarginSigma'
— Распространение распределения поля классификации
(значение по умолчанию) | положительный числовой скалярРаспределение поля классификации распространено по обучающим данным, заданным как разделенная запятой пара, состоящая из 'RobustMarginSigma'
и положительный числовой скаляр. Прежде, чем задать RobustMarginSigma
, консультируйтесь с литературой по RobustBoost
, например, [19].
Пример: 'RobustMarginSigma',0.5
Типы данных: single
| double
'RobustMaxMargin'
— Максимальное поле классификации
(значение по умолчанию) | неотрицательный числовой скалярМаксимальное поле классификации в обучающих данных, заданных как разделенная запятой пара, состоящая из 'RobustMaxMargin'
и неотрицательный числовой скаляр. Программное обеспечение минимизирует количество наблюдений в обучающих данных, имеющих поля классификации ниже RobustMaxMargin
.
Пример: 'RobustMaxMargin',1
Типы данных: single
| double
'NPredToSample'
— Количество предикторов к выборке
(значение по умолчанию) | положительное целое числоКоличество предикторов к выборке для каждого случайного ученика подпространства, заданного как разделенная запятой пара, состоящая из '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
поисковые запросы среди положительных целых чисел, по умолчанию масштабируемых журналом с областью значений [10,500]
.
LearnRate
— fitcensemble
поисковые запросы среди положительных реалов, по умолчанию масштабируемых журналом с областью значений [1e-3,1]
.
Имеющие право гиперпараметры для выбранного Learners
:
Ученики | Имеющие право гиперпараметры Полужирный = используемый по умолчанию | Область значений по умолчанию |
---|---|---|
'discriminant' | Delta | Масштабируемый журналом в области значений [1e-6,1e3] |
DiscrimType | 'linear' , 'quadratic' , 'diagLinear' , 'diagQuadratic' , 'pseudoLinear' , и 'pseudoQuadratic' | |
Gamma | Действительные значения в [0,1] | |
'knn' | Distance | 'cityblock' , 'chebychev' Корреляция , '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
.
По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков, целевая функция является журналом (1 + потеря перекрестной проверки) для регрессии и misclassification уровня для классификации. Чтобы управлять итеративным отображением, установите Verbose
поле 'HyperparameterOptimizationOptions'
аргумент пары "имя-значение". Чтобы управлять графиками, установите ShowPlots
поле 'HyperparameterOptimizationOptions'
аргумент пары "имя-значение".
Для примера смотрите, Оптимизируют Ансамбль Классификации.
Пример: 'OptimizeHyperparameters',{'Method','NumLearningCycles','LearnRate','MinLeafSize','MaxNumSplits'}
'HyperparameterOptimizationOptions'
— Опции для оптимизацииОпции для оптимизации, заданной как разделенная запятой пара, состоящая из 'HyperparameterOptimizationOptions'
и структура. Этот аргумент изменяет эффект OptimizeHyperparameters
аргумент пары "имя-значение". Все поля в структуре являются дополнительными.
Имя поля | Значения | Значение по умолчанию |
---|---|---|
Optimizer |
| 'bayesopt' |
AcquisitionFunctionName |
Приобретение функционирует, чьи имена включают | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | Максимальное количество оценок целевой функции. | 30 для 'bayesopt' или 'randomsearch' , и целая сетка для 'gridsearch' |
MaxTime | Ограничение по времени, заданное как положительное действительное. Ограничение по времени находится в секундах, как измерено | Inf |
NumGridDivisions | Для 'gridsearch' , количество значений в каждой размерности. Значение может быть вектором положительных целых чисел, дающих количество значений для каждой размерности или скаляр, который применяется ко всем размерностям. Это поле проигнорировано для категориальных переменных. | 10
|
ShowPlots | Логическое значение, указывающее, показать ли графики. Если true , это поле строит лучшее значение целевой функции против номера итерации. Если существуют один или два параметра оптимизации, и если Optimizer 'bayesopt' , затем ShowPlots также строит модель целевой функции против параметров. | true |
SaveIntermediateResults | Логическое значение, указывающее, сохранить ли результаты когда Optimizer 'bayesopt' . Если true , это поле перезаписывает переменную рабочей области под названием 'BayesoptResults' в каждой итерации. Переменной является BayesianOptimization объект. | false |
Verbose | Отобразитесь к командной строке.
Для получения дополнительной информации смотрите | 1
|
UseParallel | Логическое значение, указывающее, запустить ли Байесовую оптимизацию параллельно, которая требует Parallel Computing Toolbox™. Из-за невоспроизводимости синхронизации параллели, параллельная Байесова оптимизация не обязательно дает к восстанавливаемым результатам. Для получения дополнительной информации смотрите Параллельную Байесовую Оптимизацию. | false |
Repartition | Логическое значение, указывающее, повторно разделить ли перекрестную проверку в каждой итерации. Если
| false |
Используйте не больше, чем одни из следующих трех имен полей. | ||
CVPartition | cvpartition объект, как создано cvpartition . | 'Kfold',5 если вы не задаете поля перекрестной проверки |
Holdout | Скаляр в области значений (0,1) представление части затяжки. | |
Kfold | Целое число, больше, чем 1. |
Пример: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)
Типы данных: struct
Mdl
— Обученная модель ансамбля классификации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'
и:
Стоимость misclassification (Cost
) является очень неустойчивым, затем, для выборок в сумке, программное обеспечение сверхдискретизировало уникальные наблюдения от класса, который имеет большой штраф.
Априорные вероятности класса (Prior
) высоко скашиваются, программное обеспечение сверхдискретизировало уникальные наблюдения от класса, который имеет большую априорную вероятность.
Для меньших объемов выборки эти комбинации могут привести к низкой относительной частоте наблюдений из сумки от класса, который имеет большой штраф или априорную вероятность. Следовательно, предполагаемая ошибка из сумки является очень переменной, и она может затруднить, чтобы интерпретировать. Чтобы избежать больших предполагаемых ошибочных отклонений из сумки, особенно для размеров небольшой выборки, устанавливают более сбалансированную матрицу стоимости misclassification использование 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++ требует MATLAB Coder™. Для получения дополнительной информации смотрите Введение в Генерацию кода.
Для получения дополнительной информации алгоритмов агрегации ансамбля, см. Алгоритмы Ансамбля.
Если вы устанавливаете Method
быть повышающим алгоритмом и Learners
чтобы быть деревьями решений, затем программное обеспечение выращивает мелкие деревья решений по умолчанию. Можно настроить древовидную глубину путем определения MaxNumSplits
, MinLeafSize
, и MinParentSize
аргументы пары "имя-значение" с помощью templateTree
.
Для укладывания в мешки ('Method','Bag'
), fitcensemble
генерирует выборки в сумке путем сверхдискретизации классов с большими затратами misclassification и субдискретизации классов с маленькими затратами misclassification. Следовательно, выборки из сумки имеют меньше наблюдений от классов с большими затратами misclassification и больше наблюдений от классов с маленькими затратами misclassification. Если вы обучаете ансамбль классификации, использующий небольшой набор данных и очень скошенную матрицу стоимости, то количество наблюдений из сумки в классе может быть низким. Поэтому предполагаемая ошибка из сумки может иметь большое отклонение и может затруднить, чтобы интерпретировать. То же явление может произойти для классов с большими априорными вероятностями.
Для метода агрегации ансамбля RUSBoost ('Method','RUSBoost'
), аргумент пары "имя-значение" RatioToSmallest
задает пропорцию выборки для каждого класса относительно представленного самым низким образом класса. Например, предположите, что существует два класса в обучающих данных: A и B. A имеет 100 наблюдений, и B имеет 10 наблюдений. Предположим также, что представленный самым низким образом класс имеет m
наблюдения в обучающих данных.
Если вы устанавливаете 'RatioToSmallest',2
, затем
= 2*10 s
M
= 20
. Следовательно,
fitcensemble
обучает каждого ученика, использующего 20 наблюдений от класса A и 20 наблюдений от класса B. Если вы устанавливаете 'RatioToSmallest',[2 2]
, затем вы получаете тот же результат.
Если вы устанавливаете 'RatioToSmallest',[2,1]
, затем
= 2*10 s1
M
= 20
и
= 1*10 s2
M
= 10
. Следовательно,
fitcensemble
обучает каждого ученика, использующего 20 наблюдений от класса A и 10 наблюдений от класса B.
Для двухъядерных систем и выше, fitcensemble
параллелизирует обучение с помощью Intel® Threading Building Blocks (TBB). Для получения дополнительной информации на Intel TBB, см. https://software.intel.com/en-us/intel-tbb.
[1] Бреимен, L. “Укладывание в мешки Предикторов”. Машинное обучение. Издание 26, стр 123–140, 1996.
[2] Бреимен, L. “Случайные Леса”. Машинное обучение. Издание 45, стр 5–32, 2001.
[3] Freund, Y. “Более устойчивый повышающий алгоритм”. arXiv:0905.2138v1, 2009.
[4] Freund, Y. и Р. Э. Шапайр. “Теоретическое Решением Обобщение Дистанционного обучения и Приложения к Повышению”. J. Компьютерных и Системных Наук, Издания 55, стр 119–139, 1997.
[5] Фридман, J. “Жадное приближение функций: машина повышения градиента”. Летопись Статистики, Издания 29, № 5, стр 1189–1232, 2001.
[6] Фридман, J., Т. Хэсти и Р. Тибширэни. “Аддитивная логистическая регрессия: статистическое представление повышения”. Летопись Статистики, Издания 28, № 2, стр 337–407, 2000.
[7] Hastie, T., Р. Тибширэни и Дж. Фридман. Выпуск раздела Elements of Statistical Learning, Спрингер, Нью-Йорк, 2008.
[8] Хо, T. K. “Случайный метод подпространства для построения лесов решения”. Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту, Изданию 20, № 8, стр 832–844, 1998.
[9] Schapire, R. E. И. Фреунд, П. Бартлетт и В.С. Ли. “Повышение поля: новое объяснение эффективности голосующих методов”. Летопись Статистики, Издания 26, № 5, стр 1651–1686, 1998.
[10] Seiffert, C., Т. Хошгофтаар, Дж. Хулс и А. Наполитано. “RUSBoost: Улучшание производительности классификации, когда обучающие данные скашивается”. 19-я Международная конференция по вопросам Распознавания образов, стр 1–4, 2008.
[11] Warmuth, M., Цз. Ляо и Г. Рэч. “Полностью корректирующие повышающие алгоритмы, которые максимизируют поле”. Proc. 23-й Int’l. Конференция по Машинному обучению, ACM, Нью-Йорк, стр 1001–1008, 2006.
Чтобы запуститься параллельно, установите 'UseParallel'
опция к true
.
Чтобы выполнить параллельную гипероптимизацию параметров управления, используйте 'HyperparameterOptions', struct('UseParallel',true)
аргумент пары "имя-значение" в вызове этой функции.
Для получения дополнительной информации о параллельной гипероптимизации параметров управления смотрите Параллельную Байесовую Оптимизацию.
Для более общей информации о параллельных вычислениях смотрите функции MATLAB Запуска с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
ClassificationBaggedEnsemble
| ClassificationEnsemble
| ClassificationPartitionedEnsemble
| predict
| templateDiscriminant
| templateKNN
| templateTree
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.