fitcensemble

Подходящий ансамбль учеников для классификации

Синтаксис

Mdl = fitcensemble(Tbl,ResponseVarName)
Mdl = fitcensemble(Tbl,formula)
Mdl = fitcensemble(Tbl,Y)
Mdl = fitcensemble(X,Y)
Mdl = fitcensemble(___,Name,Value)

Описание

пример

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(Tbl,Y) обработки все переменные в таблице Tbl как переменные прогноза. Y является массивом меток класса, который не находится в Tbl.

пример

Mdl = fitcensemble(X,Y) использует данные о предикторе в матричном X и массиве меток класса в Y.

пример

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

Искать оптимальный уровень древовидной сложности:

  1. Перекрестный подтвердите набор ансамблей. Экспоненциально увеличьте уровень древовидной сложности для последующих ансамблей от пня решения (одно разделение) к в большей части n - 1 разделение. n является объемом выборки. Кроме того, отличайтесь темп обучения для каждого ансамбля между 0,1 к 1.

  2. Оцените перекрестный подтвержденный misclassification уровень каждого ансамбля.

  3. Для уровня древовидной сложности j, j=1...J, сравните совокупный, перекрестный подтвержденный misclassification уровень ансамблей путем графического вывода их против количества изучения циклов. Постройте отдельные кривые для каждого темпа обучения на той же фигуре.

  4. Выберите кривую, которая достигает минимального 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-кратной перекрестной проверки. Используя древовидный шаблон, отличайтесь максимальное количество разделений с помощью значений в последовательности {30,31,...,3m}. 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

Оцените совокупный, перекрестный подтвержденный 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 содержит переменную отклика, и вы хотите использовать все остающиеся переменные в качестве предикторов, затем задать переменную отклика с помощью ResponseVarName.

  • Если Tbl содержит переменную отклика, и вы хотите использовать подмножество остающихся переменных только как предикторы, затем задать формулу с помощью formula.

  • Если Tbl не содержит переменную отклика, то задайте данные об ответе с помощью Y. Длина переменной отклика и количество строк Tbl должны быть равными.

Примечание

Чтобы сохранить память и время выполнения, предоставьте X и Y вместо Tbl.

Типы данных: table

Имя переменной отклика, заданное как имя переменной отклика в Tbl.

Необходимо задать ResponseVarName как вектор символов или представить скаляр в виде строки. Например, если Tbl.Y является переменной отклика, то задайте ResponseVarName как 'Y'. В противном случае fitcensemble обрабатывает все столбцы Tbl как переменные прогноза.

Переменная отклика должна быть категориальным, символом, или массивом строк, логическим или числовым вектором или массивом ячеек из символьных векторов. Если переменная отклика является символьным массивом, то каждый элемент должен соответствовать одной строке массива.

Для классификации можно задать порядок классов с помощью аргумента пары "имя-значение" ClassNames. В противном случае fitcensemble определяет порядок класса и хранит его в Mdl.ClassNames.

Типы данных: char | string

Объяснительная модель ответа и подмножество переменных прогноза, заданных как вектор символов или скаляр строки в форме 'Y~X1+X2+X3'. В этой форме Y представляет переменную отклика, и X1, X2, и X3 представляет переменные прогноза. Переменные должны быть именами переменных в Tbl (Tbl.Properties.VariableNames).

Чтобы задать подмножество переменных в Tbl как предикторы для обучения модель, используйте формулу. Если вы задаете формулу, то программное обеспечение не использует переменных в Tbl, которые не появляются в formula.

Типы данных: char | string

Данные о предикторе, заданные как числовая матрица.

Каждая строка соответствует одному наблюдению, и каждый столбец соответствует одной переменной прогноза.

Длина Y и количество строк X должны быть равными.

Чтобы задать имена предикторов в порядке их внешнего вида в X, используйте аргумент пары "имя-значение" PredictorNames.

Типы данных: single | double

Данные об ответе, заданные как категориальное, символ, или массив строк, логический или числовой вектор или массив ячеек из символьных векторов. Каждая запись в Y является ответом на или меткой для наблюдения в соответствующей строке X или Tbl. Длина Y и количество строк X или Tbl должны быть равными. Если переменная отклика является символьным массивом, то каждый элемент должен соответствовать одной строке массива.

Можно задать порядок классов с помощью аргумента пары "имя-значение" ClassNames. В противном случае fitcensemble определяет порядок класса и хранит его в Mdl.ClassNames.

Типы данных: categorical | char | string | logical | single | double | cell

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'CrossVal','on','LearnRate',0.05 задает, чтобы реализовать 10-кратную перекрестную проверку и использовать 0.05 в качестве темпа обучения.

Примечание

Вы не можете использовать аргумент пары "имя-значение" перекрестной проверки наряду с аргументом пары "имя-значение" 'OptimizeHyperparameters'. Можно изменить перекрестную проверку для 'OptimizeHyperparameters' только при помощи аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'.

Общие опции ансамбля

свернуть все

Метод агрегации ансамбля, заданный как пара, разделенная запятой, состоящая из '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, Replace, Resample) для данных тренировки, когда вы используете висящий как мешок ('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'.

  • Если вы задаете положительное целое число, то в каждом цикле изучения программное обеспечение обучает одного слабого ученика каждому объекту шаблона в Learners. Следовательно, программное обеспечение обучает учеников NumLearningCycles*numel(Learners).

  • Если вы задаете 'AllPredictorCombinations', то установленный Method к 'Subspace' и задает одного ученика только для Learners. С этими настройками программное обеспечение обучает учеников всем возможным комбинациям предикторов взятый NPredToSample за один раз. Следовательно, программное обеспечение обучает nchoosek ученики (size(X,2),NPredToSample).

Программное обеспечение составляет ансамбль, использующий всех обученных учеников, и хранит их в Mdl.Trained.

Для получения дополнительной информации смотрите Советы.

Пример: 'NumLearningCycles',500

Типы данных: single | double | char | string

Слабые ученики, чтобы использовать в ансамбле, заданном как пара, разделенная запятой, состоящая из 'Learners' и имени слабого ученика, объекта шаблона слабого ученика или вектора ячейки объектов шаблона слабого ученика.

Слабый ученикИмя слабого ученикаФункция создания объекта шаблонаУстановка Method
Дискриминантный анализ'discriminant'templateDiscriminantРекомендуемый для 'Subspace'
k- соседи'knn'templateKNNДля 'Subspace' только
Дерево решений'tree'templateTreeВсе методы кроме 'Subspace'

  • Имя слабого ученика ('discriminant', 'knn' или 'tree') — fitcensemble использует слабых учеников, созданных функцией создания объекта шаблона с настройками по умолчанию. Например, определение 'Learner','discriminant' совпадает с определением 'Learner',templateDiscriminant(). Смотрите, что создание объекта шаблона функционирует страницы для настроек по умолчанию слабого ученика.

  • Объект шаблона слабого ученика — fitcensemble использует слабых учеников, созданных функцией создания объекта шаблона. Используйте аргументы пары "имя-значение" функции создания объекта шаблона, чтобы задать настройки слабых учеников.

  • Вектор ячейки объектов шаблона слабого ученика mfitcensemble выращивает учеников 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'.

Чтобы отследить количество слабых учеников или сгибов что fitcensemble, обученный до сих пор, задайте положительное целое число. Таким образом, если вы задаете положительный целочисленный m:

  • Также не задавая опции перекрестной проверки (например, CrossVal), затем fitcensemble отображает сообщение к командной строке каждый раз, когда это завершает учебный m слабые ученики.

  • И опция перекрестной проверки, затем fitcensemble отображает сообщение к командной строке каждый раз, когда это закончило учебные сгибы m.

Если вы задаете 'off', то fitcensemble не отображает сообщение, когда это завершает учебных слабых учеников.

Совет

Когда обучение ансамбль многих слабых учеников на большом наборе данных, задайте положительное целое число для NPrint.

Пример: 'NPrint',5

Типы данных: single | double | char | string

Количество интервалов для числовых предикторов, заданных как пара, разделенная запятой, состоящая из 'NumBins' и положительного целочисленного скаляра. Этот аргумент допустим только, когда fitcensemble использует древовидного ученика, то есть, 'Learner' является или 'tree' или объект шаблона, созданный при помощи templateTree.

  • Если значение 'NumBins' пусто (значение по умолчанию), то программное обеспечение не делает интервала никакие предикторы.

  • Если вы задаете значение 'NumBins' как положительный целочисленный скаляр, то интервалы программного обеспечения каждый числовой предиктор в конкретное количество равновероятных интервалов, и затем выращивает деревья на индексах интервала вместо исходных данных.

    • Если значение 'NumBins' превышает номер (u) уникальных значений для предиктора, то интервалы fitcensemble предиктор в интервалы u.

    • fitcensemble не делает интервала категориальные предикторы.

Когда вы используете большой обучающий набор данных, эта опция раскладывания ускоряет обучение, но вызывает потенциальное уменьшение в точности. Можно попробовать 'NumBins',50 сначала, и затем изменить значение 'NumBins' в зависимости от точности и учебной скорости.

Обученная модель хранит ребра интервала в свойстве BinEdges.

Пример: 'NumBins',50

Типы данных: single | double

Категориальный список предикторов, заданный как пара, разделенная запятой, состоящая из 'CategoricalPredictors' и одно из значений в этой таблице.

ЗначениеОписание
Вектор положительных целых чиселЗапись в векторе является индексным значением, соответствующим столбцу данных о предикторе (X или Tbl), который содержит категориальную переменную.
Логический векторЗапись true означает, что соответствующий столбец данных о предикторе (X или Tbl) является категориальной переменной.
Символьная матрицаКаждая строка матрицы является именем переменной прогноза. Имена должны совпадать с записями в PredictorNames. Заполните имена дополнительными пробелами, таким образом, каждая строка символьной матрицы имеет ту же длину.
Массив строк или массив ячеек из символьных векторовКаждый элемент в массиве является именем переменной прогноза. Имена должны совпадать с записями в PredictorNames.
всеВсе предикторы являются категориальными.

Спецификация CategoricalPredictors является соответствующей если:

  • 'Learners' является 'tree'.

  • 'Learners' является 'knn', когда все предикторы являются категориальными.

По умолчанию, если данные о предикторе находятся в таблице (Tbl), fitcensemble принимает, что переменная является категориальной, если это содержит логические значения, категориальные значения, массив строк или массив ячеек из символьных векторов. Если данные о предикторе являются матрицей (X), fitcensemble принимает, что все предикторы непрерывны. Чтобы идентифицировать любые категориальные предикторы, когда данные будут матрицей, используйте аргумент пары "имя-значение" 'CategoricalPredictors'.

Пример: 'CategoricalPredictors','all'

Типы данных: single | double | logical | char | string | cell

Имена переменной прогноза, заданные как пара, разделенная запятой, состоящая из 'PredictorNames' и массив строк уникальных имен или массив ячеек уникальных векторов символов. Функциональность 'PredictorNames' зависит от способа, которым вы снабжаете данными тренировки.

  • Если вы предоставляете X и Y, то можно использовать 'PredictorNames', чтобы дать переменные прогноза на имена X.

    • Порядок имен в PredictorNames должен соответствовать порядку следования столбцов X. Таким образом, PredictorNames{1} является именем X(:,1), PredictorNames{2} является именем X(:,2) и так далее. Кроме того, size(X,2) и numel(PredictorNames) должны быть равными.

    • По умолчанию PredictorNames является {'x1','x2',...}.

  • Если вы предоставляете Tbl, то можно использовать 'PredictorNames', чтобы выбрать который переменные прогноза использовать в обучении. Таким образом, fitcensemble использует только переменные прогноза в PredictorNames и переменную отклика в обучении.

    • PredictorNames должен быть подмножеством Tbl.Properties.VariableNames и не может включать имя переменной отклика.

    • По умолчанию PredictorNames содержит имена всех переменных прогноза.

    • Это - хорошая практика, чтобы задать предикторы для обучения с помощью или 'PredictorNames' или formula только.

Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}

Типы данных: string | cell

Имя переменной отклика, заданное как пара, разделенная запятой, состоящая из 'ResponseName' и вектора символов или скаляра строки.

  • Если вы предоставляете Y, то можно использовать 'ResponseName', чтобы задать имя для переменной отклика.

  • Если вы предоставляете ResponseVarName или formula, то вы не можете использовать 'ResponseName'.

Пример: 'ResponseName','response'

Типы данных: char | string

Опции перекрестной проверки

свернуть все

Флаг перекрестной проверки, заданный как пара, разделенная запятой, состоящая из 'Crossval' и 'on' или 'off'.

Если вы задаете 'on', то программное обеспечение реализует 10-кратную перекрестную проверку.

Чтобы заменить эту установку перекрестной проверки, используйте один из этих аргументов пары "имя-значение": CVPartition, Holdout, KFold или Leaveout. Чтобы создать перекрестную подтвержденную модель, можно использовать один аргумент пары "имя-значение" перекрестной проверки за один раз только.

Также перекрестный подтвердите позже путем передачи Mdl crossval или crossval.

Пример: 'Crossval','on'

Раздел перекрестной проверки, заданный как пара, разделенная запятой, состоящая из 'CVPartition' и объекта раздела cvpartition, создается cvpartition. Объект раздела задает тип перекрестной проверки и индексации для наборов обучения и валидации.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold или Leaveout.

Пример: Предположим, что вы создаете случайный раздел для 5-кратной перекрестной проверки на 500 наблюдениях при помощи cvp = cvpartition(500,'KFold',5). Затем можно задать перекрестную подтвержденную модель при помощи 'CVPartition',cvp.

Часть данных используется для валидации затяжки, заданной как пара, разделенная запятой, состоящая из 'Holdout' и скалярного значения в области значений (0,1). Если вы задаете 'Holdout',p, то программное обеспечение завершает эти шаги:

  1. Случайным образом выберите и зарезервируйте % p*100 данных как данные о валидации и обучите модель с помощью остальной части данных.

  2. Сохраните компактную, обученную модель в свойстве Trained перекрестной подтвержденной модели.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold или Leaveout.

Пример: 'Holdout',0.1

Типы данных: double | single

Количество сгибов, чтобы использовать в перекрестной подтвержденной модели, заданной как пара, разделенная запятой, состоящая из 'KFold' и положительного целочисленного значения, больше, чем 1. Если вы задаете 'KFold',k, то программное обеспечение завершает эти шаги:

  1. Случайным образом разделите данные в наборы k.

  2. Для каждого набора зарезервируйте набор как данные о валидации и обучите модель с помощью другого k – 1 набор.

  3. Сохраните k компактные, обученные модели в ячейках k-by-1 вектор ячейки в свойстве Trained перекрестной подтвержденной модели.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold или Leaveout.

Пример: 'KFold',5

Типы данных: single | double

Флаг перекрестной проверки "Пропускает один", заданный как пара, разделенная запятой, состоящая из 'Leaveout' и 'on' или 'off'. Если вы задаете 'Leaveout','on', то, для каждого из наблюдений n (где n является количеством наблюдений, исключая недостающие наблюдения, заданные в свойстве NumObservations модели), программное обеспечение завершает эти шаги:

  1. Зарезервируйте наблюдение как данные о валидации и обучите модель с помощью другого n – 1 наблюдение.

  2. Сохраните n компактные, обученные модели в ячейках n-by-1 вектор ячейки в свойстве Trained перекрестной подтвержденной модели.

Чтобы создать перекрестную подтвержденную модель, можно использовать один из этих четырех аргументов пары "имя-значение" только: CVPartition, Holdout, KFold или Leaveout.

Пример: 'Leaveout','on'

Другие опции классификации

свернуть все

Имена классов, чтобы использовать для обучения, заданного как пара, разделенная запятой, состоящая из '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

Misclassification стоят, заданный как пара, разделенная запятой, состоящая из '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'Априорные вероятности класса являются частотами родственника класса в Y.
'uniform'Все априорные вероятности класса равны 1/K, где K является количеством классов.
числовой векторКаждый элемент является априорной вероятностью класса. Закажите элементы согласно Mdl.ClassNames или задайте порядок с помощью аргумента пары "имя-значение" ClassNames. Программное обеспечение нормирует элементы, таким образом, что они суммируют к 1.
массив структур

Структура S с двумя полями:

  • S.ClassNames содержит имена классов как переменную того же типа как Y.

  • S.ClassProbs содержит вектор соответствующих априорных вероятностей. Программное обеспечение нормирует элементы, таким образом, что они суммируют к 1.

fitcensemble нормирует априорные вероятности в Prior, чтобы суммировать к 1.

Пример: struct('ClassNames',{{'setosa','versicolor','virginica'}},'ClassProbs',1:3)

Типы данных: char | string | double | single | struct

Выиграйте преобразование, заданное как пара, разделенная запятой, состоящая из '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. Программное обеспечение взвешивает наблюдения в каждой строке 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' и положительной скалярной величины в (0,1].

Чтобы использовать 'FResample', задайте 'bag' для Method или установите Resample на 'on'.

Пример: 'FResample',0.75

Типы данных: single | double

Отметьте указание на выборку с помощью замены, заданной как пара, разделенная запятой, состоящая из 'Replace' и 'off' или 'on'.

  • Для 'on' программное обеспечение выбирает учебные наблюдения с заменой.

  • Для 'off' программное обеспечение выбирает учебные наблюдения без замены. Если вы устанавливаете Resample на 'on', то наблюдения обучения выборкам программного обеспечения, принимающие универсальные веса. Если вы также задаете повышающий метод, то программное обеспечение повышает путем перевзвешивания наблюдений.

Если вы не устанавливаете Method на 'bag' или устанавливаете Resample на 'on', Replace не имеет никакого эффекта.

Пример: 'Replace','off'

Отметьте указание, чтобы передискретизировать, заданный как пара, разделенная запятой, состоящая из 'Resample' и 'off' или 'on'.

  • Если Method является повышающим методом, то:

    • 'Resample','on' задает к демонстрационным учебным наблюдениям с помощью обновленных весов в качестве вероятностей выборки многочлена.

    • 'Resample','off' (значение по умолчанию) задает, чтобы повторно взвесить наблюдения в каждой итерации изучения.

  • Если Method является 'bag', то 'Resample' должен быть 'on'. Программное обеспечение передискретизирует часть учебных наблюдений (см. FResample) с или без замены (см. Replace).

Если вы задаете, чтобы передискретизировать использование Resample, то это - хорошая практика, чтобы передискретизировать к целому набору данных. Таким образом, используйте настройку по умолчанию 1 для FResample.

AdaBoostM1, AdaBoostM2, LogitBoost и опции метода GentleBoost

свернуть все

Темп обучения для уменьшения, заданного как пара, разделенная запятой, состоящая из числового скаляра в интервале (0,1].

Чтобы обучить ансамбль, использующий уменьшение, установите LearnRate на значение меньше, чем 1, например, 0.1 является популярным выбором. Обучение ансамбль, использующий уменьшение, требует большего количества итераций изучения, но часто достигает лучшей точности.

Пример: 'LearnRate',0.1

Типы данных: single | double

Опции метода RUSBoost

свернуть все

Темп обучения для уменьшения, заданного как пара, разделенная запятой, состоящая из числового скаляра в интервале (0,1].

Чтобы обучить ансамбль, использующий уменьшение, установите LearnRate на значение меньше, чем 1, например, 0.1 является популярным выбором. Обучение ансамбль, использующий уменьшение, требует большего количества итераций изучения, но часто достигает лучшей точности.

Пример: 'LearnRate',0.1

Типы данных: single | double

При выборке пропорции относительно представленного самым низким образом класса заданного, когда, пара, разделенная запятой, состоящая из 'RatioToSmallest' и числового скаляра или числового вектора положительных значений с длиной, равняется количеству отличных классов в данных тренировки.

Предположим, что существуют классы K в данных тренировки, и представленный самым низким образом класс имеет наблюдения m в данных тренировки.

  • Если вы задаете положительный числовой скаляр s, то выборки fitcensemble наблюдения s*m от каждого класса, то есть, это использует ту же пропорцию выборки для каждого класса. Для получения дополнительной информации см. Алгоритмы.

  • Если вы задаете числовой векторный [s1,s2,...,sK], то выборки fitcensemble наблюдения si*m от класса i, i = 1..., K. Элементы RatioToSmallest соответствуют порядку имен классов, заданных с помощью ClassNames (см. Советы).

Значением по умолчанию является ones(K,1), который задает, чтобы выбрать наблюдения m от каждого класса.

Пример: 'RatioToSmallest',[2,1]

Типы данных: single | double

LPBoost и опции метода TotalBoost

свернуть все

Граничная точность, чтобы управлять быстротой сходимости, заданной как пара, разделенная запятой, состоящая из 'MarginPrecision' и числового скаляра в интервале [0,1]. MarginPrecision влияет на количество повышения итераций, требуемых для сходимости.

Совет

Чтобы обучить ансамбль, использующий многих учеников, задайте маленькое значение для MarginPrecision. Для обучения с помощью нескольких учеников задайте большое значение.

Пример: 'MarginPrecision',0.5

Типы данных: single | double

Опции метода RobustBoost

свернуть все

Целевая ошибка классификации, заданная как пара, разделенная запятой, состоящая из 'RobustErrorGoal' и неотрицательного числового скаляра. Верхняя граница на возможных значениях зависит от значений RobustMarginSigma и RobustMaxMargin. Однако верхняя граница не может превысить 1.

Совет

Для конкретного набора обучающих данных обычно существует оптимальная область значений для RobustErrorGoal. Если вы устанавливаете его слишком низко или слишком высоко, то программное обеспечение может произвести модель с плохой точностью классификации. Попытайтесь перекрестный подтвердить, чтобы искать соответствующее значение.

Пример: 'RobustErrorGoal',0.05

Типы данных: single | double

Распределение поля классификации распространено по данным тренировки, заданным как пара, разделенная запятой, состоящая из 'RobustMarginSigma' и положительного числового скаляра. Прежде, чем задать RobustMarginSigma, консультируйтесь с литературой по RobustBoost, например, [19].

Пример: 'RobustMarginSigma',0.5

Типы данных: single | double

Максимальное поле классификации в данных тренировки, заданных как пара, разделенная запятой, состоящая из 'RobustMaxMargin' и неотрицательного числового скаляра. Программное обеспечение минимизирует количество наблюдений в данных тренировки, имеющих поля классификации ниже RobustMaxMargin.

Пример: 'RobustMaxMargin',1

Типы данных: single | double

Случайные опции метода подпространства

свернуть все

Количество предикторов к выборке для каждого случайного ученика подпространства, заданного как пара, разделенная запятой, состоящая из 'NPredToSample' и положительного целого числа в интервале 1..., p, где p является количеством переменных прогноза (size(X,2) или size(Tbl,2)).

Типы данных: single | double

Гипероптимизация параметров управления

свернуть все

Параметры, чтобы оптимизировать, заданный как пара, разделенная запятой, состоящая из 'OptimizeHyperparameters' и одно из следующего:

  • 'none' Не оптимизировать.

  • 'auto' Используйте {'Method','NumLearningCycles','LearnRate'} наряду с параметрами по умолчанию для заданного Learners:

    • Learners = 'tree' (значение по умолчанию) — {'MinLeafSize'}

    • Learners = 'discriminant'{'Delta','Gamma'}

    • Learners = 'knn'{'Distance','NumNeighbors'}

    Примечание

    Для гипероптимизации параметров управления Learners должен быть отдельным аргументом, не массивом строк или массивом ячеек.

  • все Оптимизируйте все имеющие право параметры.

  • Массив строк или массив ячеек имеющих право названий параметра

  • Вектор объектов optimizableVariable, обычно вывод hyperparameters

Оптимизация пытается минимизировать потерю перекрестной проверки (ошибка) для fitcensemble путем варьирования параметров. Для получения информации о потере перекрестной проверки (хотя в различном контексте), смотрите Потерю Классификации. Чтобы управлять типом перекрестной проверки и другими аспектами оптимизации, используйте пару "имя-значение" HyperparameterOptimizationOptions.

Примечание

Значения 'OptimizeHyperparameters' заменяют любые значения, вы устанавливаете использование других аргументов пары "имя-значение". Например, установка 'OptimizeHyperparameters' к 'auto' заставляет значения 'auto' применяться.

Имеющие право параметры для fitcensemble:

  • Method — Зависит от количества классов.

    • Два класса — Имеющими право методами является 'Bag', 'GentleBoost', 'LogitBoost', 'AdaBoostM1' и 'RUSBoost'.

    • Три или больше класса — Имеющими право методами является 'Bag', 'AdaBoostM2' и 'RUSBoost'.

  • NumLearningCyclesfitcensemble ищет среди положительных целых чисел, по умолчанию масштабируемых журналом с областью значений [10,500].

  • LearnRatefitcensemble ищет среди положительных реалов, по умолчанию масштабируемых журналом с областью значений [1e-3,1].

  • Имеющие право гиперпараметры для выбранного Learners:

    УченикиИмеющие право гиперпараметры
    Полужирный = используемый по умолчанию
    Область значений по умолчанию
    '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.

По умолчанию итеративное отображение появляется в командной строке, и графики появляются согласно количеству гиперпараметров в оптимизации. Для оптимизации и графиков, целевая функция является журналом (1 + потеря перекрестной проверки) для регрессии и misclassification уровня для классификации. Чтобы управлять итеративным отображением, установите поле Verbose аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'. Чтобы управлять графиками, установите поле ShowPlots аргумента пары "имя-значение" 'HyperparameterOptimizationOptions'.

Для примера смотрите, Оптимизируют Ансамбль Классификации.

Пример: 'OptimizeHyperparameters',{'Method','NumLearningCycles','LearnRate','MinLeafSize','MaxNumSplits'}

Опции для оптимизации, заданной как пара, разделенная запятой, состоящая из 'HyperparameterOptimizationOptions' и структуры. Этот аргумент изменяет эффект аргумента пары "имя-значение" OptimizeHyperparameters. Все поля в структуре являются дополнительными.

Имя поляЗначенияЗначение по умолчанию
Optimizer
  • 'bayesopt' — Используйте Байесовую оптимизацию. Внутренне, эта установка вызывает bayesopt.

  • 'gridsearch' — Используйте поиск сетки со значениями NumGridDivisions на размерность.

  • 'randomsearch' — Ищите наугад среди точек MaxObjectiveEvaluations.

'gridsearch' ищет в произвольном порядке, с помощью универсальной выборки без замены от сетки. После оптимизации можно получить таблицу в порядке сетки при помощи команды sortrows(Mdl.HyperparameterOptimizationResults).

'bayesopt'
AcquisitionFunctionName

  • 'expected-improvement-per-second-plus'

  • 'expected-improvement'

  • 'expected-improvement-plus'

  • 'expected-improvement-per-second'

  • 'lower-confidence-bound'

  • 'probability-of-improvement'

Приобретение функционирует, чьи имена включают per-second, не приводят к восстанавливаемым результатам, потому что оптимизация зависит от времени выполнения целевой функции. Приобретение функционирует, чьи имена включают plus, изменяют их поведение, когда они сверхиспользуют область. Для получения дополнительной информации смотрите Типы Функции Приобретения.

'expected-improvement-per-second-plus'
MaxObjectiveEvaluationsМаксимальное количество оценок целевой функции.30 для 'bayesopt' или 'randomsearch' и целой сетки для 'gridsearch'
MaxTime

Ограничение по времени, заданное как положительное действительное. Ограничение по времени находится в секундах, как измерено tic и toc. Время выполнения может превысить MaxTime, потому что MaxTime не делает оценок функции обработки прерываний.

Inf
NumGridDivisionsДля 'gridsearch', количества значений в каждой размерности. Значение может быть вектором положительных целых чисел, дающих количество значений для каждой размерности или скаляр, который применяется ко всем размерностям. Это поле проигнорировано для категориальных переменных.10
ShowPlotsЛогическое значение, указывающее, показать ли графики. Если true, это поле строит лучшее значение целевой функции против номера итерации. Если существуют один или два параметра оптимизации, и если Optimizer является 'bayesopt', то ShowPlots также строит модель целевой функции против параметров.true
SaveIntermediateResultsЛогическое значение, указывающее, сохранить ли результаты, когда Optimizer является 'bayesopt'. Если true, это поле перезаписывает переменную рабочей области под названием 'BayesoptResults' в каждой итерации. Переменная является объектом BayesianOptimization.false
Verbose

Отобразитесь к командной строке.

  • 0 — Никакое итеративное отображение

  • 1 — Итеративное отображение

  • 2 — Итеративное отображение с дополнительной информацией

Для получения дополнительной информации смотрите аргумент пары "имя-значение" bayesopt Verbose.

1
UseParallelЛогическое значение, указывающее, запустить ли Байесовую оптимизацию параллельно, которая требует Parallel Computing Toolbox™. Для получения дополнительной информации смотрите Параллельную Байесовую Оптимизацию.false
Repartition

Логическое значение, указывающее, повторно разделить ли перекрестную проверку в каждой итерации. Если false, оптимизатор использует один раздел для оптимизации.

true обычно дает большинство устойчивых результатов, потому что эта установка принимает шум разделения во внимание. Однако для хороших результатов, true требует, по крайней мере, вдвое большего количества функциональных оценок.

false
Используйте не больше, чем одни из следующих трех имен полей.
CVPartitionОбъект cvpartition, как создано cvpartition.'Kfold',5, если вы не задаете поля перекрестной проверки
HoldoutСкаляр в области значений (0,1), представляющий часть затяжки.
KfoldЦелое число, больше, чем 1.

Пример: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)

Типы данных: struct

Выходные аргументы

свернуть все

Обученная модель ансамбля, возвращенная как один из объектов модели в этой таблице.

Объект моделиЗадать какие-либо опции перекрестной проверки?Установка 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, то s*m = 2*10 = 20. Следовательно, fitcensemble обучает каждого ученика, использующего 20 наблюдений от класса A и 20 наблюдений от класса B. Если вы устанавливаете 'RatioToSmallest',[2 2], то вы получаете тот же результат.

    • Если вы устанавливаете 'RatioToSmallest',[2,1], то s1*m = 2*10 = 20 и s2*m = 1*10 = 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.

Расширенные возможности

Введенный в R2017b