exponenta event banner

fitcensemble

Подбор ансамбля обучающихся для классификации

Описание

пример

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 = 
  ClassificationEnsemble
           PredictorNames: {1x14 cell}
             ResponseName: 'salary'
    CategoricalPredictors: [2 4 6 7 8 9 10 14]
               ClassNames: [<=50K    >50K]
           ScoreTransform: 'none'
          NumObservations: 32561
               NumTrained: 100
                   Method: 'LogitBoost'
             LearnerNames: {'Tree'}
     ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
                  FitInfo: [100x1 double]
       FitInfoDescription: {2x1 cell}


  Properties, Methods

Mdl является ClassificationEnsemble модель. Некоторые заметные характеристики Mdl являются:

  • Поскольку в данных представлены два класса, LogitBoost является алгоритмом агрегации ансамблей.

  • Поскольку метод агрегации ансамблей является алгоритмом повышения, деревья классификации, допускающие максимум 10 расщеплений, составляют ансамбль.

  • Сто деревьев составляют ансамбль.

Используйте классификационный ансамбль для прогнозирования меток случайного набора из пяти наблюдений из данных. Сравните прогнозируемые метки с их истинными значениями.

rng(1) % For reproducibility
[pX,pIdx] = datasample(adultdata,5);
label = predict(Mdl1,pX);
table(label,adultdata.salary(pIdx),'VariableNames',{'Predicted','Truth'})
ans=5×2 table
    Predicted    Truth
    _________    _____

      <=50K      <=50K
      <=50K      <=50K
      <=50K      <=50K
      <=50K      <=50K
      <=50K      <=50K

Обучение нового ансамбля с помощью age и education только.

Mdl2 = fitcensemble(adultdata,'salary ~ age + education');

Сравните потери от повторного замещения между Mdl1 и Mdl2.

rsLoss1 = resubLoss(Mdl1)
rsLoss1 = 0.1058
rsLoss2 = resubLoss(Mdl2)
rsLoss2 = 0.2037

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

Обучение ансамбля усиленных деревьев классификации с помощью fitcensemble. Сократите время обучения, указав 'NumBins' аргумент пары имя-значение для числовых предикторов bin. Этот аргумент допустим только в том случае, если fitcensemble использует учащегося дерева. После обучения вы можете воспроизвести связанные данные предиктора с помощью BinEdges свойство обучаемой модели и discretize функция.

Создайте образец набора данных.

rng('default') % For reproducibility
N = 1e6;
X = [mvnrnd([-1 -1],eye(2),N); mvnrnd([1 1],eye(2),N)];
y = [zeros(N,1); ones(N,1)];

Визуализация набора данных.

figure
scatter(X(1:N,1),X(1:N,2),'Marker','.','MarkerEdgeAlpha',0.01)
hold on
scatter(X(N+1:2*N,1),X(N+1:2*N,2),'Marker','.','MarkerEdgeAlpha',0.01)

Обучить ансамбль усиленных деревьев классификации с помощью адаптивной логистической регрессии (LogitBoost, значение по умолчанию для двоичной классификации). Время функции для сравнения.

tic
Mdl1 = fitcensemble(X,y);
toc
Elapsed time is 478.988422 seconds.

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

tic
Mdl2 = fitcensemble(X,y,'NumBins',50);
toc
Elapsed time is 165.598434 seconds.

Процесс примерно в три раза быстрее при использовании привязанных данных вместо исходных. Обратите внимание, что прошедшее время может варьироваться в зависимости от операционной системы.

Сравните ошибки классификации по повторному представлению.

rsLoss1 = resubLoss(Mdl1)
rsLoss1 = 0.0788
rsLoss2 = resubLoss(Mdl2)
rsLoss2 = 0.0788

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

Воспроизвести привязанные данные предиктора с помощью BinEdges свойство обучаемой модели и discretize функция.

X = Mdl2.X; % Predictor data
Xbinned = zeros(size(X));
edges = Mdl2.BinEdges;
% Find indices of binned predictors.
idxNumeric = find(~cellfun(@isempty,edges));
if iscolumn(idxNumeric)
    idxNumeric = idxNumeric';
end
for j = idxNumeric 
    x = X(:,j);
    % Convert x to array if x is a table.
    if istable(x)
        x = table2array(x);
    end
    % Group x into bins by using the discretize function.
    xbinned = discretize(x,[-inf; edges{j}; inf]);
    Xbinned(:,j) = xbinned;
end

Xbinned содержит индексы ячеек в диапазоне от 1 до числа ячеек для числовых предикторов. Xbinned значения 0 для категориальных предикторов. Если X содержит NaNs, затем соответствующее Xbinned значения NaNs.

Оценить погрешность обобщения ансамбля усиленных деревьев классификации.

Загрузить ionosphere набор данных.

load ionosphere

Перекрестная проверка совокупности деревьев классификации с использованием AdaBoostM1 и 10-кратной перекрестной проверки. Укажите, что каждое дерево должно быть разделено максимум пять раз с помощью шаблона дерева решений.

rng(5); % For reproducibility
t = templateTree('MaxNumSplits',5);
Mdl = fitcensemble(X,Y,'Method','AdaBoostM1','Learners',t,'CrossVal','on');

Mdl является ClassificationPartitionedEnsemble модель.

Постройте график кумулятивной 10-кратной перекрестной проверки ошибочной классификации. Отображение расчетной ошибки обобщения ансамбля.

kflc = kfoldLoss(Mdl,'Mode','cumulative');
figure;
plot(kflc);
ylabel('10-fold Misclassification rate');
xlabel('Learning cycle');

Figure contains an axes. The axes contains an object of type line.

estGenError = kflc(end)
estGenError = 0.0769

kfoldLoss возвращает ошибку обобщения по умолчанию. Однако построение графика кумулятивных потерь позволяет отслеживать, как меняется потеря по мере накопления слабых учеников в ансамбле.

Ансамбль достигает коэффициента неправильной классификации около 0,06 после накопления около 50 слабых учеников. Затем степень неправильной классификации немного возрастает по мере поступления в ансамбль более слабых учеников.

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

Автоматическая оптимизация гиперпараметров с помощью fitcensemble.

Загрузить ionosphere набор данных.

load ionosphere

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

Mdl = fitcensemble(X,Y,'OptimizeHyperparameters','auto')

В этом примере для воспроизводимости задайте случайное начальное число и используйте 'expected-improvement-plus' функция приобретения. Также для воспроизводимости алгоритма случайного леса укажите 'Reproducible' аргумент пары имя-значение как true для обучающихся на деревьях.

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

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 278.5509 seconds.
Total objective function evaluation time: 238.1176

Best observed feasible point:
      Method      NumLearningCycles    LearnRate    MinLeafSize
    __________    _________________    _________    ___________

    LogitBoost           206            0.96537         33     

Observed objective function value = 0.062678
Estimated objective function value = 0.062689
Function evaluation time = 9.4354

Best estimated feasible point (according to models):
      Method      NumLearningCycles    LearnRate    MinLeafSize
    __________    _________________    _________    ___________

    LogitBoost           206            0.96537         33     

Estimated objective function value = 0.062689
Estimated function evaluation time = 9.4324
Mdl = 
  ClassificationEnsemble
                         ResponseName: 'Y'
                CategoricalPredictors: []
                           ClassNames: {'b'  'g'}
                       ScoreTransform: 'none'
                      NumObservations: 351
    HyperparameterOptimizationResults: [1×1 BayesianOptimization]
                           NumTrained: 206
                               Method: 'LogitBoost'
                         LearnerNames: {'Tree'}
                 ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
                              FitInfo: [206×1 double]
                   FitInfoDescription: {2×1 cell}


  Properties, Methods

Оптимизация выполняла поиск по методам агрегации ансамблей для двоичной классификации, по NumLearningCycles, над LearnRate для применимых методов и над деревом учащихся MinLeafSize. Результатом является классификатор ансамбля с минимальными оценочными потерями перекрестной проверки.

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

Этот пример вручную находит оптимальные параметры с помощью опции перекрестной проверки ( 'KFold' аргумент пары имя-значение) и kfoldLoss функция. Кроме того, можно использовать 'OptimizeHyperparameters' аргумент пары имя-значение для автоматической оптимизации гиперпараметров. См. раздел Оптимизация классификационного ансамбля.

Загрузить ionosphere набор данных.

load ionosphere

Для поиска оптимального уровня сложности дерева:

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

  2. Оцените степень ошибочной классификации каждого ансамбля.

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

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

Выполните перекрестную проверку глубокого дерева классификации и культи. Эти деревья классификации служат ориентирами.

rng(1) % For reproducibility
MdlDeep = fitctree(X,Y,'CrossVal','on','MergeLeaves','off', ...
    'MinParentSize',1);
MdlStump = fitctree(X,Y,'MaxNumSplits',1,'CrossVal','on');

Перекрестная проверка ансамбля 150 усиленных деревьев классификации с использованием пятикратной перекрестной проверки. Используя шаблон дерева, измените максимальное количество разбиений, используя значения в последовательности {30,31,..., 3 m}. m является таким, что 3m не превышает n-1. Для каждого варианта скорректируйте скорость обучения, используя каждое значение в наборе {0.1, 0.25, 0.5, 1};

n = size(X,1);
m = floor(log(n - 1)/log(3));
learnRate = [0.1 0.25 0.5 1];
numLR = numel(learnRate);
maxNumSplits = 3.^(0:m);
numMNS = numel(maxNumSplits);
numTrees = 150;
Mdl = cell(numMNS,numLR);

for k = 1:numLR
    for j = 1:numMNS
        t = templateTree('MaxNumSplits',maxNumSplits(j));
        Mdl{j,k} = fitcensemble(X,Y,'NumLearningCycles',numTrees,...
            'Learners',t,'KFold',5,'LearnRate',learnRate(k));
    end
end

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

kflAll = @(x)kfoldLoss(x,'Mode','cumulative');
errorCell = cellfun(kflAll,Mdl,'Uniform',false);
error = reshape(cell2mat(errorCell),[numTrees numel(maxNumSplits) numel(learnRate)]);
errorDeep = kfoldLoss(MdlDeep);
errorStump = kfoldLoss(MdlStump);

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

mnsPlot = [1 round(numel(maxNumSplits)/2) numel(maxNumSplits)];
figure
for k = 1:3
    subplot(2,2,k)
    plot(squeeze(error(:,mnsPlot(k),:)),'LineWidth',2)
    axis tight
    hold on
    h = gca;
    plot(h.XLim,[errorDeep errorDeep],'-.b','LineWidth',2)
    plot(h.XLim,[errorStump errorStump],'-.r','LineWidth',2)
    plot(h.XLim,min(min(error(:,mnsPlot(k),:))).*[1 1],'--k')
    h.YLim = [0 0.2];    
    xlabel('Number of trees')
    ylabel('Cross-validated misclass. rate')
    title(sprintf('MaxNumSplits = %0.3g', maxNumSplits(mnsPlot(k))))
    hold off
end
hL = legend([cellstr(num2str(learnRate','Learning Rate = %0.2f')); ...
        'Deep Tree';'Stump';'Min. misclass. rate']);
hL.Position(1) = 0.6;

Каждая кривая содержит минимальную степень ошибочной классификации с перекрестной проверкой, возникающую при оптимальном количестве деревьев в ансамбле.

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

[minErr,minErrIdxLin] = min(error(:));
[idxNumTrees,idxMNS,idxLR] = ind2sub(size(error),minErrIdxLin);

fprintf('\nMin. misclass. rate = %0.5f',minErr)
Min. misclass. rate = 0.05413
fprintf('\nOptimal Parameter Values:\nNum. Trees = %d',idxNumTrees);
Optimal Parameter Values:
Num. Trees = 47
fprintf('\nMaxNumSplits = %d\nLearning Rate = %0.2f\n',...
    maxNumSplits(idxMNS),learnRate(idxLR))
MaxNumSplits = 3
Learning Rate = 0.25

Создайте предиктивный ансамбль на основе оптимальных гиперпараметров и всего обучающего набора.

tFinal = templateTree('MaxNumSplits',maxNumSplits(idxMNS));
MdlFinal = fitcensemble(X,Y,'NumLearningCycles',idxNumTrees,...
    'Learners',tFinal,'LearnRate',learnRate(idxLR))
MdlFinal = 
  ClassificationEnsemble
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'b'  'g'}
           ScoreTransform: 'none'
          NumObservations: 351
               NumTrained: 47
                   Method: 'LogitBoost'
             LearnerNames: {'Tree'}
     ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
                  FitInfo: [47×1 double]
       FitInfoDescription: {2×1 cell}


  Properties, Methods

MdlFinal является ClassificationEnsemble. Чтобы предсказать, является ли радарный возврат хорошим с учетом данных предиктора, можно передать данные предиктора и MdlFinal кому predict.

Вместо поиска оптимальных значений вручную с помощью опции перекрестной проверки ('KFold') и kfoldLoss , вы можете использовать 'OptimizeHyperparameters' аргумент пары имя-значение. При указании 'OptimizeHyperparameters', программа автоматически находит оптимальные параметры, используя байесовскую оптимизацию. Оптимальные значения, полученные с помощью 'OptimizeHyperparameters' могут отличаться от полученных с помощью ручного поиска.

mdl = fitcensemble(X,Y,'OptimizeHyperparameters',{'NumLearningCycles','LearnRate','MaxNumSplits'})
|====================================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   | NumLearningC-|    LearnRate | MaxNumSplits |
|      | result |             | runtime     | (observed)  | (estim.)    | ycles        |              |              |
|====================================================================================================================|
|    1 | Best   |     0.17379 |      6.2592 |     0.17379 |     0.17379 |          137 |     0.001364 |            3 |
|    2 | Accept |     0.17379 |     0.79961 |     0.17379 |     0.17379 |           15 |     0.013089 |          144 |
|    3 | Best   |    0.065527 |      1.4585 |    0.065527 |    0.065538 |           31 |      0.47201 |            2 |
|    4 | Accept |    0.074074 |      13.988 |    0.065527 |    0.065549 |          340 |      0.92167 |            7 |
|    5 | Accept |    0.088319 |     0.92718 |    0.065527 |    0.072102 |           22 |       0.2432 |            1 |
|    6 | Accept |    0.074074 |     0.44748 |    0.065527 |    0.071237 |           10 |       0.7177 |           48 |
|    7 | Accept |     0.08547 |     0.52207 |    0.065527 |    0.074847 |           10 |      0.57238 |            2 |
|    8 | Accept |    0.074074 |     0.59154 |    0.065527 |    0.065556 |           11 |      0.97207 |            3 |
|    9 | Best   |    0.059829 |      1.6809 |    0.059829 |    0.059648 |           42 |      0.92135 |          343 |
|   10 | Best   |    0.054131 |      2.2481 |    0.054131 |    0.054148 |           49 |      0.97807 |           37 |
|   11 | Accept |    0.065527 |      2.1686 |    0.054131 |    0.059479 |           48 |       0.9996 |            2 |
|   12 | Accept |    0.068376 |      2.5909 |    0.054131 |    0.061923 |           58 |      0.91401 |          323 |
|   13 | Accept |     0.17379 |     0.48621 |    0.054131 |    0.062113 |           10 |    0.0010045 |            4 |
|   14 | Accept |     0.17379 |     0.55949 |    0.054131 |    0.059231 |           10 |     0.059072 |          148 |
|   15 | Accept |    0.065527 |      1.9568 |    0.054131 |    0.062559 |           46 |      0.76657 |           19 |
|   16 | Accept |    0.065527 |      2.5692 |    0.054131 |    0.062807 |           57 |      0.64443 |          311 |
|   17 | Accept |     0.17379 |     0.55723 |    0.054131 |    0.062748 |           10 |    0.0035012 |            2 |
|   18 | Accept |     0.12821 |      1.9669 |    0.054131 |    0.062043 |           47 |     0.055757 |          197 |
|   19 | Accept |     0.05698 |      1.2814 |    0.054131 |    0.060837 |           27 |      0.98997 |           12 |
|   20 | Accept |    0.059829 |      1.1975 |    0.054131 |    0.060881 |           26 |      0.99112 |           13 |
|====================================================================================================================|
| Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   | NumLearningC-|    LearnRate | MaxNumSplits |
|      | result |             | runtime     | (observed)  | (estim.)    | ycles        |              |              |
|====================================================================================================================|
|   21 | Accept |    0.065527 |      1.2255 |    0.054131 |    0.061441 |           25 |      0.99183 |            9 |
|   22 | Accept |     0.17379 |      1.3748 |    0.054131 |    0.061461 |           29 |    0.0032434 |          344 |
|   23 | Accept |    0.068376 |       3.055 |    0.054131 |    0.061768 |           67 |      0.18672 |           11 |
|   24 | Accept |    0.059829 |      5.0035 |    0.054131 |    0.061785 |          119 |       0.3125 |            1 |
|   25 | Accept |    0.059829 |      7.6141 |    0.054131 |    0.061793 |          176 |      0.25401 |          304 |
|   26 | Accept |    0.059829 |      5.1133 |    0.054131 |     0.05988 |          115 |      0.34331 |          343 |
|   27 | Accept |    0.059829 |      7.4027 |    0.054131 |    0.059895 |          178 |      0.26684 |           13 |
|   28 | Accept |    0.059829 |      5.2506 |    0.054131 |    0.059872 |          118 |      0.32365 |            3 |
|   29 | Accept |    0.062678 |      10.523 |    0.054131 |    0.059871 |          238 |      0.22465 |            1 |
|   30 | Accept |     0.14815 |     0.57384 |    0.054131 |    0.059705 |           10 |      0.15205 |            2 |

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 122.7983 seconds.
Total objective function evaluation time: 91.3933

Best observed feasible point:
    NumLearningCycles    LearnRate    MaxNumSplits
    _________________    _________    ____________

           49             0.97807          37     

Observed objective function value = 0.054131
Estimated objective function value = 0.062545
Function evaluation time = 2.2481

Best estimated feasible point (according to models):
    NumLearningCycles    LearnRate    MaxNumSplits
    _________________    _________    ____________

           119            0.3125           1      

Estimated objective function value = 0.059705
Estimated function evaluation time = 5.1842
mdl = 
  ClassificationEnsemble
                         ResponseName: 'Y'
                CategoricalPredictors: []
                           ClassNames: {'b'  'g'}
                       ScoreTransform: 'none'
                      NumObservations: 351
    HyperparameterOptimizationResults: [1×1 BayesianOptimization]
                           NumTrained: 119
                               Method: 'LogitBoost'
                         LearnerNames: {'Tree'}
                 ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
                              FitInfo: [119×1 double]
                   FitInfoDescription: {2×1 cell}


  Properties, Methods

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

свернуть все

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

  • Если Tbl содержит переменную ответа, и вы хотите использовать все оставшиеся переменные в качестве предикторов, а затем указать переменную ответа, используя 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 которые не отображаются в formula.

Имена переменных в формуле должны быть обоими именами переменных в Tbl (Tbl.Properties.VariableNames) и допустимые идентификаторы MATLAB ®. Имена переменных можно проверить вTbl с помощью isvarname функция. Если имена переменных недопустимы, их можно преобразовать с помощью matlab.lang.makeValidName функция.

Типы данных: 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 является именем аргумента и 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'Ускорение линейного программирования - требует оптимизации Toolbox™Двоичный и мультиклассныйMarginPrecision
'RobustBoost'Надежное повышение - требуется панель инструментов оптимизацииТолько двоичныйRobustErrorGoal, RobustMarginSigma, RobustMaxMargin
'RUSBoost'Случайная недостаточная выборка повышенияДвоичный и мультиклассныйLearnRate, RatioToSmallest
'TotalBoost'Полностью корректирующее повышение - требуется панель инструментов оптимизацииДвоичный и мультиклассныйMarginPrecision

Можно задать опции выборки (FResample, Replace, Resample) для учебных данных при использовании фасовки в мешки ('Bag') или повышение ('TotalBoost', 'RUSBoost', 'AdaBoostM1', 'AdaBoostM2', 'GentleBoost', 'LogitBoost', 'RobustBoost', или 'LPBoost').

Значения по умолчанию:

  • 'LogitBoost' для двоичных проблем и 'AdaBoostM2' для многоклассовых проблем, если 'Learners' включает только древовидных учеников

  • 'AdaBoostM1' для двоичных проблем и 'AdaBoostM2' для многоклассовых проблем, если 'Learners' включает как древовидный, так и дискриминантный анализ учащихся

  • 'Subspace' если 'Learners' не включает в себя обучающихся по деревьям

Дополнительные сведения о алгоритмах и примерах агрегирования ансамбля см. в разделах Алгоритмы, Советы, Алгоритмы ансамбля и Выбор применимого метода агрегирования ансамбля.

Пример: 'Method','Bag'

Количество циклов обучения ансамбля, указанное как разделенная запятыми пара, состоящая из 'NumLearningCycles' и положительное целое число или '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 использует слабых учеников, созданных функцией создания объекта шаблона с настройками по умолчанию. Например, указание 'Learners','discriminant' совпадает с заданием 'Learners',templateDiscriminant(). Параметры по умолчанию для слабого учащегося см. на страницах функции создания объекта шаблона.

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

  • Вектор ячейки m объектов шаблона слабого учащегося - fitcensemble растет число учащихся за цикл обучения (см. NumLearningCycles). Например, для ансамбля, состоящего из двух типов классификационных деревьев, поставка {t1 t2}, где t1 и t2 являются объектами шаблона дерева классификации, возвращенными templateTree.

Дефолт 'Learners' значение равно 'knn' если 'Method' является 'Subspace'.

Дефолт 'Learners' значение равно 'tree' если 'Method' является 'Bag' или любой метод повышения. Значения по умолчанию для templateTree() зависят от значения 'Method'.

  • Для пакетных деревьев решений максимальное количество разделений решений ('MaxNumSplits'является n–1, где n - количество наблюдений. Количество предикторов, выбираемых случайным образом для каждого разделения ('NumVariablesToSample') - квадратный корень из числа предикторов. Поэтому fitcensemble выращивает глубокие деревья принятия решений. Можно выращивать более мелкие деревья, чтобы уменьшить сложность модели или время вычислений.

  • Для усиленных деревьев принятия решений, 'MaxNumSplits' равно 10 и 'NumVariablesToSample' является 'all'. Поэтому fitcensemble произрастает неглубокие деревья принятия решений. Вы можете выращивать более глубокие деревья для лучшей точности.

Посмотрите templateTree для настроек по умолчанию слабого учащегося. Для получения воспроизводимых результатов необходимо указать 'Reproducible' аргумент пары имя-значение templateTree как true если 'NumVariablesToSample' не является 'all'.

Подробные сведения о количестве обучающихся см. в разделе NumLearningCycles и Советы.

Пример: 'Learners',templateTree('MaxNumSplits',5)

Частота печати, указанная как разделенная запятыми пара, состоящая из 'NPrint' и положительное целое число или 'off'.

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

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

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

При указании 'off', то fitcensemble не отображает сообщение после завершения обучения слабых учеников.

Совет

Для быстрого обучения некоторых повышенных деревьев принятия решений, набор NPrint до значения по умолчанию 'off'. Этот совет сохраняется при классификации Method является 'AdaBoostM1', 'AdaBoostM2', 'GentleBoost', или 'LogitBoost'или когда регрессия Method является 'LSBoost'.

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

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

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

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

  • При указании 'NumBins' значение в виде положительного целого скаляра (numBins), то fitcensemble помещает каждый числовой предиктор максимум в numBins equiprobable bins, а затем выращивает деревья по индексам bin вместо исходных данных.

    • Количество ячеек может быть меньше numBins если предиктор имеет менее numBins уникальные значения.

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

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

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

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

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

Список категориальных предикторов, указанный как одно из значений в этой таблице.

СтоимостьОписание
Вектор положительных целых чисел

Каждая запись в векторе представляет собой значение индекса, соответствующее столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся в диапазоне от 1 до p, где p - количество предикторов, используемых для обучения модели.

Если fitcensemble использует подмножество входных переменных в качестве предикторов, затем функция индексирует предикторы, используя только подмножество. 'CategoricalPredictors' значения не подсчитывают переменную отклика, переменную веса наблюдения и любые другие переменные, которые функция не использует.

Логический вектор

A true ввод означает, что соответствующий столбец данных предиктора является категориальной переменной. Длина вектора равна p.

Символьная матрицаКаждая строка матрицы является именем предикторной переменной. Имена должны соответствовать записям в PredictorNames. Поместите имена с дополнительными пробелами, чтобы каждая строка символьной матрицы имела одинаковую длину.
Строковый массив или массив ячеек символьных векторовКаждый элемент массива является именем переменной предиктора. Имена должны соответствовать записям в PredictorNames.
'all'Все предикторы категоричны.

Спецификация 'CategoricalPredictors' подходит, если:

  • 'Learners' Задает древовидных учеников.

  • 'Learners' указывает k-ближайших учеников, где все предикторы категоричны.

Каждый ученик идентифицирует и обрабатывает категориальные предикторы таким же образом, как и аппроксимирующая функция, соответствующая ученику. Посмотрите 'CategoricalPredictors' из fitcknn для k-ближайших учащихся и 'CategoricalPredictors' из fitctree для обучающихся на деревьях.

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

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

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

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

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

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

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

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

Параллельные опции

свернуть все

Опции для параллельных вычислений и задания случайных чисел, заданные как структура. Создать Options структура с statset.

Примечание

Параллельные вычисления Toolbox™ необходимы для параллельного вычисления.

В этой таблице перечислены поля опций и их значения.

Имя поляСтоимостьДефолт
UseParallel

Задайте для этого значения значение true для параллельного вычисления. Обучение параллельному ансамблю требует установки 'Method' аргумент «имя-значение» для 'Bag'. Параллельное обучение доступно только для обучающихся по дереву, тип по умолчанию для 'Bag'.

false
UseSubstreams

Задайте для этого значения значение true выполнять вычисления параллельно воспроизводимым способом.

Для воспроизводимого вычисления установите Streams к типу, допускающему субпотоки: 'mlfg6331_64' или 'mrg32k3a'. Также используйте шаблон дерева с 'Reproducible' аргумент «имя-значение» имеет значение true. См. раздел Воспроизводимость в параллельных статистических вычислениях.

false
StreamsУкажите это значение как RandStream объект или массив ячеек таких объектов. Использовать один объект, за исключением случаев, когда UseParallel значение равно true и UseSubstreams значение равно false. В этом случае используйте массив ячеек, размер которого совпадает с размером параллельного пула.Если не указать Streams, то fitcensemble использует поток или потоки по умолчанию.

Пример использования воспроизводимого параллельного обучения см. в разделе Ансамбль классификации поездов в параллельном режиме.

Для двухъядерных систем и выше, fitcensemble параллелизирует обучение с использованием стандартных блоков Intel ® Threading Building Blocks (TBB). Поэтому указание UseParallel вариант как true может не обеспечить значительное ускорение на одном компьютере. Подробные сведения о TBB Intel см. в разделе https://software.intel.com/en-us/intel-tbb.

Пример: 'Options',statset('UseParallel',true)

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

Параметры перекрестной проверки

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Зарезервируйте одно наблюдение в качестве данных проверки и обучите модель, используя другие наблюдения n-1.

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

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

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

Другие варианты классификации

свернуть все

Имена классов, используемых для обучения, указанные как категориальный, символьный или строковый массив; логический или числовой вектор; или массив ячеек символьных векторов. ClassNames должен иметь тот же тип данных, что и переменная ответа в Tbl или Y.

Если ClassNames является символьным массивом, то каждый элемент должен соответствовать одной строке массива.

Использовать ClassNames кому:

  • Укажите порядок занятий во время обучения.

  • Укажите порядок любого измерения входного или выходного аргумента, соответствующего порядку класса. Например, использовать ClassNames для указания порядка размеров Cost или порядок столбцов классификационных баллов, возвращенных predict.

  • Выберите подмножество классов для обучения. Например, предположим, что набор всех различных имен классов в Y является {'a','b','c'}. Обучение модели с использованием наблюдений из классов 'a' и 'c' только, укажите 'ClassNames',{'a','c'}.

Значение по умолчанию для ClassNames - набор всех различающихся имен классов в переменной ответа в Tbl или Y.

Пример: 'ClassNames',{'b','g'}

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

Стоимость неправильной классификации, указанная как разделенная запятыми пара, состоящая из 'Cost' и квадратную матрицу или структуру. При указании:

  • Квадратная матрица Cost, то Cost(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

Преобразование оценки, указанное как вектор символа, скаляр строки или дескриптор функции.

В этой таблице представлены доступные векторы символов и строковые скаляры.

СтоимостьОписание
'doublelogit'1/( 1 + e-2x)
'invlogit'log (x/( 1 - x))
'ismax'Устанавливает балл для класса с наибольшим баллом в 1 и устанавливает балл для всех остальных классов в 0
'logit'1/( 1 + e-x)
'none' или 'identity'x (без преобразования)
'sign'-1 для x < 0
0 для x = 0
1 для x > 0
'symmetric'2x – 1
'symmetricismax'Устанавливает балл для класса с наибольшим баллом в 1 и устанавливает балл для всех остальных классов в -1
'symmetriclogit'2/( 1 + e-x) - 1

Для функции MATLAB или определяемой функции используйте ее дескриптор функции для преобразования оценки. Дескриптор функции должен принимать матрицу (исходные баллы) и возвращать матрицу того же размера (преобразованные баллы).

Пример: 'ScoreTransform','logit'

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

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

свернуть все

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

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

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

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

Варианты метода RUSBoost

свернуть все

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

Параметры метода Boost

свернуть все

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

  • 'all' - Оптимизируйте все подходящие параметры.

  • Строковый массив или массив ячеек допустимых имен параметров

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

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

Примечание

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

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

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

    • Два класса - Подходящие методы: 'Bag', 'GentleBoost', 'LogitBoost', 'AdaBoostM1', и 'RUSBoost'.

    • Три или более классов - Подходящие методы: 'Bag', 'AdaBoostM2', и 'RUSBoost'.

  • NumLearningCyclesfitcensemble поиск среди положительных целых чисел, по умолчанию log-scaled с диапазоном [10,500].

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

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

    УченикиПодходящие гиперпараметры
    Bold = Используется по умолчанию
    Диапазон по умолчанию
    'discriminant'DeltaМасштаб журнала в диапазоне [1e-6,1e3]
    DiscrimType'linear', 'quadratic', 'diagLinear', 'diagQuadratic', 'pseudoLinear', и 'pseudoQuadratic'
    GammaРеальные значения в [0,1]
    'knn'Distance'cityblock', 'chebychev', 'correlation', 'cosine', 'euclidean', 'hamming', 'jaccard', 'mahalanobis', 'minkowski', 'seuclidean', и 'spearman'
    DistanceWeight'equal', 'inverse', и 'squaredinverse'
    ExponentПоложительные значения в [0.5,3]
    NumNeighborsЛогарифмированные положительные целочисленные значения в диапазоне [1, max(2,round(NumObservations/2))]
    Standardize'true' и 'false'
    'tree'MaxNumSplitsЦелые числа, масштабированные в диапазоне [1,max(2,NumObservations-1)]
    MinLeafSizeЦелые числа, масштабированные в диапазоне [1,max(2,floor(NumObservations/2))]
    NumVariablesToSampleЦелые числа в диапазоне [1,max(2,NumPredictors)]
    SplitCriterion'gdi', 'deviance', и 'twoing'

    В качестве альтернативы можно использовать hyperparameters с выбранным вами Learners. Обратите внимание, что необходимо указать данные предиктора и ответ при создании optimizableVariable объект.

    load fisheriris
    params = hyperparameters('fitcensemble',meas,species,'Tree');

    Чтобы увидеть подходящие гиперпараметры и гиперпараметры по умолчанию, проверьте params.

Установка параметров, не используемых по умолчанию, путем передачи вектора optimizableVariable объекты, не имеющие значений по умолчанию. Например,

load fisheriris
params = hyperparameters('fitcensemble',meas,species,'Tree');
params(4).Range = [1,30];

Проход params как значение OptimizeHyperparameters.

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

Пример см. в разделе Оптимизация классификационного ансамбля.

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

Опции оптимизации, указанные как разделенная запятыми пара, состоящая из 'HyperparameterOptimizationOptions' и структура. Этот аргумент изменяет эффект 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Логическое значение, указывающее, выполнять ли байесовскую оптимизацию параллельно, для чего требуется панель параллельных вычислений. Из-за непродуктивности параллельной синхронизации параллельная байесовская оптимизация не обязательно дает воспроизводимые результаты. Дополнительные сведения см. в разделе Параллельная байесовская оптимизация.false
Repartition

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

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

false
Используйте не более одного из следующих трех имен полей.
CVPartitionA 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' и:

    • Стоимость неправильной классификации (Cost) сильно разбалансирован, тогда для образцов в мешках программное обеспечение избыточно дискретизирует уникальные наблюдения из класса, который имеет большой штраф.

    • Предшествующие вероятности класса (Prior) сильно искажены, программное обеспечение избыточно дискретизирует уникальные наблюдения из класса, который имеет большую предварительную вероятность.

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

  • Поскольку порядок некоторых входных и выходных аргументов соответствует различным классам в данных обучения, рекомендуется указывать порядок классов с помощью ClassNames аргумент пары имя-значение.

    • Чтобы быстро определить порядок классов, удалите все наблюдения из данных обучения, которые не классифицированы (то есть имеют отсутствующую метку), получите и отобразите массив всех отдельных классов, а затем укажите массив для ClassNames. Например, предположим, что переменная ответа (Y) - массив ячеек меток. Этот код определяет порядок классов в переменной classNames.

      Ycat = categorical(Y);
      classNames = categories(Ycat)
      categorical назначает <undefined> к неклассифицированным наблюдениям и categories исключает <undefined> с его выхода. Поэтому при использовании этого кода для массивов ячеек меток или аналогичного кода для категориальных массивов для получения списка отдельных классов не требуется удалять наблюдения с отсутствующими метками.

    • Чтобы указать, что порядок классов от самой нижней представленной метки к самой представленной, быстро определите порядок классов (как в предыдущем маркере), но упорядочьте классы в списке по частоте перед передачей списка в ClassNames. Следуя предыдущему примеру, этот код определяет порядок классов от нижнего до наиболее представленного в classNamesLH.

      Ycat = categorical(Y);
      classNames = categories(Ycat);
      freq = countcats(Ycat);
      [~,idx] = sort(freq);
      classNamesLH = classNames(idx);

  • После обучения модели можно создать код C/C + +, который предсказывает метки для новых данных. Для создания кода C/C + + требуется Coder™ MATLAB. Дополнительные сведения см. в разделе Введение в создание кода .

Алгоритмы

  • Подробные сведения о алгоритмах агрегации ансамбля см. в разделе Алгоритмы ансамбля.

  • Если установить Method быть алгоритмом повышения и Learners чтобы быть деревьями принятия решений, программное обеспечение по умолчанию вырастает неглубокими деревьями принятия решений. Можно скорректировать глубину дерева, указав MaxNumSplits, MinLeafSize, и MinParentSize аргументы пары имя-значение с использованием templateTree.

  • Для фасовки в мешки ('Method','Bag'), fitcensemble генерирует образцы в мешке путем избыточной выборки классов с большими затратами на неправильную классификацию и недостаточной выборки классов с небольшими затратами на неправильную классификацию. Следовательно, образцы вне мешка имеют меньше наблюдений из классов с большими затратами на неправильную классификацию и больше наблюдений из классов с небольшими затратами на неправильную классификацию. Если вы обучаете классификационный ансамбль, используя небольшой набор данных и сильно искаженную матрицу затрат, то количество наблюдений вне пакета на класс может быть низким. Следовательно, оценочная ошибка вне пакета может иметь большую дисперсию и может быть трудно интерпретировать. Такое же явление может иметь место для классов с большими предшествующими вероятностями.

  • Для метода агрегации ансамблей RUSBoost ('Method','RUSBoost'), аргумент пары имя-значение RatioToSmallest задает пропорцию выборки для каждого класса по отношению к самому низко представленному классу. Например, предположим, что в данных обучения есть два класса: A и B. A имеет 100 наблюдений и B имеет 10 наблюдений. Предположим также, что класс с самым низким представлением имеет m наблюдения в данных обучения.

    • Если установить 'RatioToSmallest',2, то s*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 наблюдений из класса А и 10 наблюдений из класса В.

  • Для двухъядерных систем и выше, fitcensemble параллелизует обучение с использованием Intel Threading Building Blocks (TBB). Подробные сведения о TBB Intel см. в разделе https://software.intel.com/en-us/intel-tbb.

Ссылки

[1] Брейман, Л. «Предикторы пакетирования». Машинное обучение. Том 26, стр. 123-140, 1996.

[2] Брейман, Л. «Случайные леса». Машинное обучение. Том 45, стр. 5-32, 2001.

[3] Фрейнд, Y. «Более надежный алгоритм повышения». arXiv:0905.2138v1, 2009.

[4] Фрейнд, Ю. и Р. Э. Шапайр. «Теоретическое обобщение онлайн-обучения и приложения для повышения». J. of Computer and System Sciences, Vol. 55, pp. 119-139, 1997.

[5] Фридман, Дж. «Приближение жадной функции: градиентная повышающая машина». Летописи статистики, том 29, № 5, стр. 1189 - 1232, 2001.

[6] Фридман, Дж., Т. Хасти и Р. Тибширани. «Аддитивная логистическая регрессия: статистическое представление повышения». Летописи статистики, том 28, № 2, стр. 337 - 407, 2000.

[7] Хасти, Т., Р. Тибширани и Дж. Фридман. издание раздела Элементы статистического обучения, Спрингер, Нью-Йорк, 2008 год.

[8] Хо, Т. К. «Метод случайного подпространства для построения решающих лесов». IEEE Transactions on Pattern Analysis and Machine Intelligence, том 20, № 8, стр. 832-844, 1998.

[9] Шапайр, Р. Э., Я. Фройнд, П. Бартлетт и В. С. Ли. «Повышение маржи: новое объяснение эффективности методов голосования». Летописи статистики, т. 26, № 5, стр. 1651 - 1686, 1998.

[10] Зайфферт, К., Т. Хошгофтаар, Ж. Хульсе и А. Наполитано. 19-я Международная конференция по распознаванию образов, стр. 1-4, 2008.

[11] Вармут, М., Дж. Ляо и Г. Ратш. «Полностью корректирующие алгоритмы повышения, которые максимизируют запас». Proc. 23-я Int 'l. Conf. on Machine Learning, ACM, Нью-Йорк, стр. 1001-1008, 2006.

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

Представлен в R2016b