Создание шаблона дерева решений
возвращает шаблон обучающегося дерева решений по умолчанию, подходящий для обучения мультиклассовой модели ансамбля (усиленные и пакетированные деревья решений) или кода вывода с исправлением ошибок (ECOC). Определить t = templateTreet в качестве учащегося с использованием:
fitcensemble для классификационных ансамблей
fitrensemble для регрессионных ансамблей
fitcecoc для классификации моделей ECOC
Если указан шаблон дерева решений по умолчанию, то программа использует значения по умолчанию для всех входных аргументов во время обучения. Рекомендуется определить тип дерева решений, например, для шаблона дерева классификации, указать 'Type','classification'. При указании типа дерева решений и просмотре t в окне команд, затем все параметры, кроме Type отображаются пустыми ([]).
создает шаблон с дополнительными параметрами, заданными одним или несколькими аргументами пары имя-значение.t = templateTree(Name,Value)
Например, можно указать алгоритм, используемый для поиска наилучшего разделения на категориальном предикторе, критерии разделения или число предикторов, выбранных для каждого разделения.
При отображении t в окне команд все параметры отображаются пустыми ([]), за исключением тех, которые указаны с помощью аргументов пары имя-значение. Во время обучения программа использует значения по умолчанию для пустых параметров.
Создайте шаблон дерева решений с суррогатными разделениями и используйте этот шаблон для обучения ансамбля с использованием образцов данных.
Загрузите набор данных радужки Фишера.
load fisheririsСоздайте шаблон дерева решений из пней дерева с суррогатными разделениями.
t = templateTree('Surrogate','on','MaxNumSplits',1)
t =
Fit template for Tree.
Surrogate: 'on'
MaxNumSplits: 1
Параметры объекта шаблона пусты, за исключением Surrogate и MaxNumSplits. Когда вы проходите t для функции обучения программа заполняет пустые опции соответствующими значениями по умолчанию.
Определить t как слабый ученик для классификационного ансамбля.
Mdl = fitcensemble(meas,species,'Method','AdaBoostM2','Learners',t)
Mdl =
ClassificationEnsemble
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: {'setosa' 'versicolor' 'virginica'}
ScoreTransform: 'none'
NumObservations: 150
NumTrained: 100
Method: 'AdaBoostM2'
LearnerNames: {'Tree'}
ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
FitInfo: [100x1 double]
FitInfoDescription: {2x1 cell}
Properties, Methods
Просмотрите ошибку неправильной классификации в выборке (повторная выборка).
L = resubLoss(Mdl)
L = 0.0333
Одним из способов создания совокупности усиленных деревьев регрессии, которые имеют удовлетворительную прогностическую производительность, является настройка уровня сложности дерева решений с помощью перекрестной проверки. При поиске оптимального уровня сложности настройте скорость обучения, чтобы минимизировать количество циклов обучения.
Этот пример вручную находит оптимальные параметры с помощью опции перекрестной проверки ( 'KFold' аргумент пары имя-значение) и kfoldLoss функция. Кроме того, можно использовать 'OptimizeHyperparameters' аргумент пары имя-значение для автоматической оптимизации гиперпараметров. См. раздел Оптимизация ансамбля регрессии.
Загрузить carsmall набор данных. Выберите количество цилиндров, объем, смещенный цилиндрами, лошадиную силу и вес в качестве предикторов экономии топлива.
load carsmall
Tbl = table(Cylinders,Displacement,Horsepower,Weight,MPG);Значения по умолчанию для контроллеров глубины дерева для ускорения регрессионных деревьев:
10 для MaxNumSplits.
5 для MinLeafSize
10 для MinParentSize
Для поиска оптимального уровня сложности дерева:
Перекрестная проверка набора ансамблей. Экспоненциально увеличить уровень сложности дерева для последующих ансамблей от пня решения (одно разделение) до максимум n-1 разбиений. n - размер выборки. Кроме того, варьируйте скорость обучения для каждого ансамбля между 0,1 и 1.
Оцените перекрестно подтвержденную среднеквадратичную ошибку (MSE) для каждого ансамбля.
Для уровня сложности дерева , . J сравните совокупные, перекрестно проверенные MSE ансамблей, построив их график с количеством циклов обучения. Постройте отдельные кривые для каждой скорости обучения на одном и том же рисунке.
Выберите кривую, которая достигает минимального MSE, и обратите внимание на соответствующий цикл обучения и скорость обучения.
Выполните перекрестную проверку дерева глубокой регрессии и культи. Поскольку данные содержат отсутствующие значения, используйте суррогатные разделения. Эти регрессионные деревья служат ориентирами.
rng(1) % For reproducibility MdlDeep = fitrtree(Tbl,'MPG','CrossVal','on','MergeLeaves','off', ... 'MinParentSize',1,'Surrogate','on'); MdlStump = fitrtree(Tbl,'MPG','MaxNumSplits',1,'CrossVal','on', ... 'Surrogate','on');
Перекрестная проверка ансамбля 150 усиленных деревьев регрессии с использованием пятикратной перекрестной проверки. Использование шаблона дерева:
Измените максимальное количество разбиений, используя значения в последовательности m}. m является таким, 2m не превышает n-1 .
Включите суррогатные расщепления.
Для каждого варианта настройте скорость обучения, используя каждое значение в наборе {0.1, 0.25, 0.5, 1}.
n = size(Tbl,1); m = floor(log2(n - 1)); learnRate = [0.1 0.25 0.5 1]; numLR = numel(learnRate); maxNumSplits = 2.^(0:m); numMNS = numel(maxNumSplits); numTrees = 150; Mdl = cell(numMNS,numLR); for k = 1:numLR for j = 1:numMNS t = templateTree('MaxNumSplits',maxNumSplits(j),'Surrogate','on'); Mdl{j,k} = fitrensemble(Tbl,'MPG','NumLearningCycles',numTrees, ... 'Learners',t,'KFold',5,'LearnRate',learnRate(k)); end end
Оценка совокупного, перекрестно подтвержденного MSE каждого ансамбля.
kflAll = @(x)kfoldLoss(x,'Mode','cumulative'); errorCell = cellfun(kflAll,Mdl,'Uniform',false); error = reshape(cell2mat(errorCell),[numTrees numel(maxNumSplits) numel(learnRate)]); errorDeep = kfoldLoss(MdlDeep); errorStump = kfoldLoss(MdlStump);
Постройте график поведения перекрестно проверенного MSE по мере увеличения числа деревьев в ансамбле. Постройте график кривых относительно скорости обучения на одном и том же графике и постройте график для различных уровней сложности дерева. Выберите подмножество уровней сложности дерева для печати.
mnsPlot = [1 round(numel(maxNumSplits)/2) numel(maxNumSplits)]; figure; for k = 1:3 subplot(2,2,k) plot(squeeze(error(:,mnsPlot(k),:)),'LineWidth',2) axis tight hold on h = gca; plot(h.XLim,[errorDeep errorDeep],'-.b','LineWidth',2) plot(h.XLim,[errorStump errorStump],'-.r','LineWidth',2) plot(h.XLim,min(min(error(:,mnsPlot(k),:))).*[1 1],'--k') h.YLim = [10 50]; xlabel('Number of trees') ylabel('Cross-validated MSE') title(sprintf('MaxNumSplits = %0.3g', maxNumSplits(mnsPlot(k)))) hold off end hL = legend([cellstr(num2str(learnRate','Learning Rate = %0.2f')); ... 'Deep Tree';'Stump';'Min. MSE']); hL.Position(1) = 0.6;

Каждая кривая содержит минимальный перекрестно проверенный MSE, возникающий при оптимальном количестве деревьев в ансамбле.
Определите максимальное количество разбиений, число деревьев и скорость обучения, что дает наименьший общий уровень MSE.
[minErr,minErrIdxLin] = min(error(:));
[idxNumTrees,idxMNS,idxLR] = ind2sub(size(error),minErrIdxLin);
fprintf('\nMin. MSE = %0.5f',minErr)Min. MSE = 16.77593
fprintf('\nOptimal Parameter Values:\nNum. Trees = %d',idxNumTrees);Optimal Parameter Values: Num. Trees = 78
fprintf('\nMaxNumSplits = %d\nLearning Rate = %0.2f\n',... maxNumSplits(idxMNS),learnRate(idxLR))
MaxNumSplits = 1 Learning Rate = 0.25
Создайте предиктивный ансамбль на основе оптимальных гиперпараметров и всего обучающего набора.
tFinal = templateTree('MaxNumSplits',maxNumSplits(idxMNS),'Surrogate','on'); MdlFinal = fitrensemble(Tbl,'MPG','NumLearningCycles',idxNumTrees, ... 'Learners',tFinal,'LearnRate',learnRate(idxLR))
MdlFinal =
RegressionEnsemble
PredictorNames: {1x4 cell}
ResponseName: 'MPG'
CategoricalPredictors: []
ResponseTransform: 'none'
NumObservations: 94
NumTrained: 78
Method: 'LSBoost'
LearnerNames: {'Tree'}
ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
FitInfo: [78x1 double]
FitInfoDescription: {2x1 cell}
Regularization: []
Properties, Methods
MdlFinal является RegressionEnsemble. Чтобы предсказать экономию топлива автомобиля с учетом его количества цилиндров, объема, смещенного цилиндрами, лошадиных сил и веса, можно сдать данные предиктора и MdlFinal кому predict.
Вместо поиска оптимальных значений вручную с помощью опции перекрестной проверки ('KFold') и kfoldLoss , вы можете использовать 'OptimizeHyperparameters' аргумент пары имя-значение. При указании 'OptimizeHyperparameters', программа автоматически находит оптимальные параметры, используя байесовскую оптимизацию. Оптимальные значения, полученные с помощью 'OptimizeHyperparameters' могут отличаться от полученных с помощью ручного поиска.
t = templateTree('Surrogate','on'); mdl = fitrensemble(Tbl,'MPG','Learners',t, ... 'OptimizeHyperparameters',{'NumLearningCycles','LearnRate','MaxNumSplits'})
|====================================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | NumLearningC-| LearnRate | MaxNumSplits | | | result | log(1+loss) | runtime | (observed) | (estim.) | ycles | | | |====================================================================================================================| | 1 | Best | 3.3955 | 1.332 | 3.3955 | 3.3955 | 26 | 0.072054 | 3 | | 2 | Accept | 6.0976 | 6.9885 | 3.3955 | 3.5549 | 170 | 0.0010295 | 70 | | 3 | Best | 3.2914 | 10.751 | 3.2914 | 3.2917 | 273 | 0.61026 | 6 | | 4 | Accept | 6.1839 | 3.4531 | 3.2914 | 3.2915 | 80 | 0.0016871 | 1 | | 5 | Best | 3.0379 | 1.7951 | 3.0379 | 3.0384 | 18 | 0.21288 | 31 | | 6 | Accept | 3.052 | 1.1116 | 3.0379 | 3.0401 | 28 | 0.18021 | 13 | | 7 | Best | 2.9642 | 2.2063 | 2.9642 | 2.9701 | 32 | 0.24179 | 5 | | 8 | Best | 2.9446 | 1.2017 | 2.9446 | 2.9413 | 21 | 0.25944 | 1 | | 9 | Best | 2.9387 | 0.73108 | 2.9387 | 2.94 | 18 | 0.26309 | 1 | | 10 | Accept | 3.0469 | 0.87257 | 2.9387 | 2.9414 | 10 | 0.25476 | 1 | | 11 | Accept | 3.0784 | 0.77319 | 2.9387 | 2.9408 | 11 | 0.9742 | 2 | | 12 | Best | 2.9367 | 1.6773 | 2.9367 | 2.942 | 25 | 0.47913 | 1 | | 13 | Best | 2.8952 | 1.2261 | 2.8952 | 2.9033 | 28 | 0.3572 | 1 | | 14 | Accept | 2.9054 | 0.94135 | 2.8952 | 2.9041 | 29 | 0.3393 | 1 | | 15 | Best | 2.8928 | 1.4597 | 2.8928 | 2.9007 | 28 | 0.355 | 1 | | 16 | Accept | 2.9008 | 1.3572 | 2.8928 | 2.9006 | 31 | 0.34654 | 1 | | 17 | Accept | 2.8939 | 1.5636 | 2.8928 | 2.8991 | 26 | 0.35626 | 1 | | 18 | Accept | 2.9109 | 0.95378 | 2.8928 | 2.8999 | 22 | 0.35898 | 1 | | 19 | Accept | 2.9078 | 1.1717 | 2.8928 | 2.901 | 31 | 0.3438 | 1 | | 20 | Accept | 2.9139 | 1.7969 | 2.8928 | 2.9018 | 33 | 0.32636 | 1 | |====================================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | NumLearningC-| LearnRate | MaxNumSplits | | | result | log(1+loss) | runtime | (observed) | (estim.) | ycles | | | |====================================================================================================================| | 21 | Accept | 2.901 | 0.97123 | 2.8928 | 2.9016 | 24 | 0.36235 | 1 | | 22 | Accept | 6.4217 | 0.45103 | 2.8928 | 2.902 | 10 | 0.0010438 | 2 | | 23 | Accept | 6.232 | 0.81571 | 2.8928 | 2.9007 | 10 | 0.010918 | 1 | | 24 | Accept | 2.9491 | 0.70086 | 2.8928 | 2.9004 | 10 | 0.45635 | 2 | | 25 | Accept | 2.8951 | 15.429 | 2.8928 | 2.9005 | 406 | 0.093798 | 1 | | 26 | Accept | 2.9079 | 14.399 | 2.8928 | 2.9007 | 478 | 0.1292 | 1 | | 27 | Best | 2.8923 | 9.3649 | 2.8923 | 2.9008 | 221 | 0.11307 | 1 | | 28 | Accept | 3.1867 | 13.217 | 2.8923 | 2.9021 | 309 | 0.10879 | 83 | | 29 | Accept | 3.1689 | 0.48561 | 2.8923 | 2.9021 | 11 | 0.5454 | 98 | | 30 | Accept | 2.9006 | 3.8922 | 2.8923 | 2.9016 | 102 | 0.20979 | 1 |

__________________________________________________________
Optimization completed.
MaxObjectiveEvaluations of 30 reached.
Total function evaluations: 30
Total elapsed time: 152.6867 seconds
Total objective function evaluation time: 103.0901
Best observed feasible point:
NumLearningCycles LearnRate MaxNumSplits
_________________ _________ ____________
221 0.11307 1
Observed objective function value = 2.8923
Estimated objective function value = 2.8927
Function evaluation time = 9.3649
Best estimated feasible point (according to models):
NumLearningCycles LearnRate MaxNumSplits
_________________ _________ ____________
29 0.3393 1
Estimated objective function value = 2.9016
Estimated function evaluation time = 1.4054
mdl =
RegressionEnsemble
PredictorNames: {1x4 cell}
ResponseName: 'MPG'
CategoricalPredictors: []
ResponseTransform: 'none'
NumObservations: 94
HyperparameterOptimizationResults: [1x1 BayesianOptimization]
NumTrained: 29
Method: 'LSBoost'
LearnerNames: {'Tree'}
ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
FitInfo: [29x1 double]
FitInfoDescription: {2x1 cell}
Regularization: []
Properties, Methods
Загрузить carsmall набор данных. Рассмотрим модель, которая предсказывает среднюю экономию топлива автомобиля с учетом его ускорения, количества цилиндров, рабочего объема двигателя, лошадиных сил, производителя, модельного года и веса. Рассмотреть Cylinders, Mfg, и Model_Year в качестве категориальных переменных.
load carsmall Cylinders = categorical(Cylinders); Mfg = categorical(cellstr(Mfg)); Model_Year = categorical(Model_Year); X = table(Acceleration,Cylinders,Displacement,Horsepower,Mfg,... Model_Year,Weight,MPG);
Отображение количества категорий, представленных в категориальных переменных.
numCylinders = numel(categories(Cylinders))
numCylinders = 3
numMfg = numel(categories(Mfg))
numMfg = 28
numModelYear = numel(categories(Model_Year))
numModelYear = 3
Потому что есть 3 категории только в Cylinders и Model_Yearстандартный алгоритм разделения предиктора CART предпочитает разделение непрерывного предиктора по этим двум переменным.
Обучение случайного леса из 500 деревьев регрессии с использованием всего набора данных. Чтобы вырастить несмещенные деревья, укажите использование теста кривизны для расщепления предикторов. Поскольку в данных отсутствуют значения, укажите использование суррогатных разбиений. Чтобы воспроизвести выбор случайного предиктора, задайте начальное число генератора случайных чисел с помощью rng и указать 'Reproducible',true.
rng('default'); % For reproducibility t = templateTree('PredictorSelection','curvature','Surrogate','on', ... 'Reproducible',true); % For reproducibility of random predictor selections Mdl = fitrensemble(X,'MPG','Method','bag','NumLearningCycles',500, ... 'Learners',t);
Оценка показателей важности предиктора путем перестановки наблюдений вне пакета. Выполнять вычисления параллельно.
options = statset('UseParallel',true); imp = oobPermutedPredictorImportance(Mdl,'Options',options);
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6).
Сравните оценки с помощью гистограммы.
figure; bar(imp); title('Out-of-Bag Permuted Predictor Importance Estimates'); ylabel('Estimates'); xlabel('Predictors'); h = gca; h.XTickLabel = Mdl.PredictorNames; h.XTickLabelRotation = 45; h.TickLabelInterpreter = 'none';

В этом случае Model_Year является наиболее важным предиктором, за которым следует Cylinders. Сравните эти результаты с результатами оценки важности предикторов.
Создание шаблона ансамбля для использования в fitcecoc.
Загрузите набор данных аритмии.
load arrhythmia
tabulate(categorical(Y)); Value Count Percent
1 245 54.20%
2 44 9.73%
3 15 3.32%
4 15 3.32%
5 13 2.88%
6 25 5.53%
7 3 0.66%
8 2 0.44%
9 9 1.99%
10 50 11.06%
14 4 0.88%
15 5 1.11%
16 22 4.87%
rng(1); % For reproducibilityНекоторые классы имеют небольшие относительные частоты в данных.
Создайте шаблон для AdaBoostM1 ансамбля деревьев классификации и укажите использование 100 учеников и усадку 0,1. По умолчанию повышение увеличивает пни (т.е. один узел, имеющий набор листьев). Поскольку существуют классы с небольшими частотами, деревья должны быть достаточно листовыми, чтобы быть чувствительными к классам меньшинств. Укажите минимальное число наблюдений за конечными узлами, равное 3.
tTree = templateTree('MinLeafSize',20); t = templateEnsemble('AdaBoostM1',100,tTree,'LearnRate',0.1);
Все свойства объектов шаблона пусты, кроме Method и Typeи соответствующие свойства значений аргументов пары имя-значение в вызовах функции. Когда вы проходите t для функции обучения программа заполняет пустые свойства соответствующими значениями по умолчанию.
Определить t как двоичный ученик для многоклассовой модели ECOC. Обучение с использованием схемы кодирования «один против одного» по умолчанию.
Mdl = fitcecoc(X,Y,'Learners',t);Mdl является ClassificationECOC мультиклассовая модель.
Mdl.BinaryLearners является массивом ячеек 78 на 1 CompactClassificationEnsemble модели.
Mdl.BinaryLearners{j}.Trained является массивом ячеек 100 на 1 CompactClassificationTree модели, для j = 1,...,78.
Вы можете проверить, что один из двоичных учеников содержит слабого ученика, который не является культой, с помощью view.
view(Mdl.BinaryLearners{1}.Trained{1},'Mode','graph')
Просмотрите ошибку неправильной классификации в выборке (повторная выборка).
L = resubLoss(Mdl,'LossFun','classiferror')
L = 0.0819
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'Surrogate','on','NumVariablesToSample','all' задает шаблон с суррогатными разделениями и использует все доступные предикторы при каждом разделении.'MaxNumSplits' - Максимальное число разделений решенийМаксимальное число разделений решений (или узлов ветвлений) на дерево, указанное как пара, разделенная запятыми, состоящая из 'MaxNumSplits' и положительное целое число. templateTree разделения MaxNumSplits или меньше узлов ветви. Дополнительные сведения о разделении см. в разделе Алгоритмы.
Для пакетных деревьев решений и двоичных обучающихся дерева решений в моделях ECOC по умолчанию используется значение n-1, где n - количество наблюдений в обучающей выборке. Для повышенных деревьев принятия решений по умолчанию 10.
Пример: 'MaxNumSplits',5
Типы данных: single | double
'MergeLeaves' - флаг слияния листьев'off' | 'on'Флаг слияния листа, заданный как разделенная запятыми пара, состоящая из 'MergeLeaves' и либо 'on' или 'off'.
Когда 'on', дерево решений объединяет листья, которые происходят от того же родительского узла и которые обеспечивают сумму значений риска, большую или равную риску, связанному с родительским узлом. Когда 'off', дерево решений не объединяется с листьями.
Для усиленных и упакованных в мешки деревьев принятия решений по умолчанию 'off'. Для двоичных учеников дерева принятия решений в моделях ECOC значением по умолчанию является 'on'.
Пример: 'MergeLeaves','on'
'MinLeafSize' - Минимальные наблюдения на листМинимальное количество наблюдений на лист, указанное как пара, разделенная запятыми, состоящая из 'MinLeafSize' и положительное целое значение. Каждый лист имеет не менее MinLeafSize наблюдения на лист дерева. Если вы поставляете оба MinParentSize и MinLeafSize, дерево решений использует параметр, который дает большие листья: MinParentSize = max(MinParentSize,2*MinLeafSize).
Для усиленных и упакованных в мешки деревьев принятия решений по умолчанию 1 для классификации и 5 для регрессии. Для двоичных учеников дерева принятия решений в моделях ECOC значением по умолчанию является 1.
Пример: 'MinLeafSize',2
'MinParentSize' - Минимальное количество наблюдений на узел филиалаМинимальное количество наблюдений на узел ветви, указанное как пара, разделенная запятыми, состоящая из 'MinParentSize' и положительное целое значение. Каждый узел ветви в дереве имеет по крайней мере MinParentSize наблюдения. Если вы поставляете оба MinParentSize и MinLeafSize, дерево решений использует параметр, который дает большие листья: MinParentSize = max(MinParentSize,2*MinLeafSize).
При указании MinLeafSize, то значение по умолчанию для 'MinParentSize' является 10.
Если не указать MinLeafSizeзатем значение по умолчанию изменяется в зависимости от модели обучения. Для усиленных и упакованных в мешки деревьев решений значением по умолчанию является 2 для классификации и 10 для регрессии. Для двоичных учеников дерева принятия решений в моделях ECOC значением по умолчанию является 10.
Пример: 'MinParentSize',4
'NumVariablesToSample' - Количество предикторов, выбираемых случайным образом для каждого разделения'all'Количество предикторов, выбираемых случайным образом для каждого разделения, указанного как пара, разделенная запятыми, состоящая из 'NumVariablesToSample' и положительное целое значение. Кроме того, можно указать 'all' для использования всех доступных предикторов.
Если обучающие данные включают много предикторов и требуется проанализировать важность предиктора, укажите 'NumVariablesToSample' как 'all'. В противном случае программное обеспечение может не выбирать некоторые предикторы, недооценивая их важность.
Для воспроизведения случайных выборок необходимо задать начальное число генератора случайных чисел с помощью rng и указать 'Reproducible',true.
Для усиленных деревьев принятия решений и двоичных учеников дерева принятия решений в моделях ECOC по умолчанию 'all'. По умолчанию для пакетных деревьев решений используется квадратный корень из числа предикторов для классификации или одна треть от числа предикторов для регрессии.
Пример: 'NumVariablesToSample',3
Типы данных: single | double | char | string
'PredictorSelection' - Алгоритм, используемый для выбора наилучшего предсказателя разделения'allsplits' (по умолчанию) | 'curvature' | 'interaction-curvature'Алгоритм, используемый для выбора наилучшего предиктора разделения в каждом узле, указанного как пара, разделенная запятыми, состоящая из 'PredictorSelection' и значение в этой таблице.
| Стоимость | Описание |
|---|---|
'allsplits' | Стандартная корзина - выбирает предиктор разделения, который максимизирует выигрыш критерия разделения по всем возможным разделениям всех предикторов [1]. |
'curvature' | Тест кривизны - выбирает расщепленный предиктор, который минимизирует значение p тестов независимости хи-квадрат между каждым предиктором и [3][4] ответа. Скорость обучения аналогична стандартной CART. |
'interaction-curvature' | Тест взаимодействия - выбирает расщепленный предиктор, который минимизирует p-значение тестов независимости хи-квадрат между каждым предиктором и ответом, и который минимизирует p-значение критерия независимости хи-квадрат между каждой парой предикторов и ответом [3]. Скорость обучения может быть ниже стандартной CART. |
Для 'curvature' и 'interaction-curvature', если все тесты дают значения p, превышающие 0,05, то MATLAB ® прекращает разделение узлов.
Совет
Тесты кривизны и взаимодействия не рекомендуются для усиления деревьев принятия решений. Чтобы обучить ансамбль повышенных деревьев, который имеет большую точность, используйте стандартную CART.
Стандартная CART имеет тенденцию выбирать разделенные предикторы, содержащие много различных значений, например непрерывных переменных, по сравнению с теми, которые содержат несколько различных значений, например категориальных переменных [4]. Если набор данных предиктора неоднороден, или если есть предикторы, которые имеют относительно меньше отличных значений, чем другие переменные, то рассмотрите возможность указания теста кривизны или взаимодействия.
Если существуют предикторы, которые имеют относительно меньше отличных значений, чем другие предикторы, например, если набор данных предиктора неоднороден.
Если анализ важности предиктора является вашей целью. Для получения дополнительной информации об оценке важности предиктора см. oobPermutedPredictorImportance для проблем классификации, oobPermutedPredictorImportance для задач регрессии и Введение в выбор элементов.
Деревья, выращенные с использованием стандартной CART, не чувствительны к переменным взаимодействиям предиктора. Кроме того, такие деревья с меньшей вероятностью идентифицируют важные переменные в присутствии многих неактуальных предикторов, чем применение теста взаимодействия. Поэтому для учета предикторных взаимодействий и определения переменных важности при наличии множества неактуальных переменных укажите тест взаимодействия [3].
На скорость прогнозирования не влияет значение 'PredictorSelection'.
Для получения подробной информации о том, как templateTree выбирает разделенные предикторы, см. Правила разделения узлов (классификация), Правила разделения узлов (регрессия) и Выберите метод выбора разделенного предиктора.
Пример: 'PredictorSelection','curvature'
'Prune' - Флаг для оценки оптимальной последовательности обрезанных поддеревьев'off' | 'on'Флаг для оценки оптимальной последовательности обрезанных поддеревьев, указанных как разделенная запятыми пара, состоящая из 'Prune' и 'on' или 'off'.
Если Prune является 'on', то программное обеспечение обучает учащихся дерева классификации без их обрезки, но оценивает оптимальную последовательность обрезанных поддеревьев для каждого учащегося в наборе или двоичном ученике дерева принятия решений в моделях ECOC. В противном случае программа обучает учащихся дерева классификации без оценки оптимальной последовательности обрезанных поддеревьев.
Для усиленных и упакованных в мешки деревьев принятия решений по умолчанию 'off'.
Для двоичных учеников дерева принятия решений в моделях ECOC значением по умолчанию является 'on'.
Пример: 'Prune','on'
'PruneCriterion' - Критерий отсечения'error' | 'impurity' | 'mse'Критерий отсечения, указанный как пара, разделенная запятыми, состоящая из 'PruneCriterion' и критерий отсечения, действительный для типа дерева.
Для деревьев классификации можно указать 'error' (по умолчанию) или 'impurity'. При указании 'impurity', то templateTree использует измерение примеси, указанное 'SplitCriterion' аргумент пары имя-значение.
Для деревьев регрессии можно указать только 'mse'(по умолчанию).
Пример: 'PruneCriterion','impurity'
'Reproducible' - Флаг для обеспечения воспроизводимостиfalse (логический 0) (по умолчанию) | true (логический 1)Флаг для обеспечения воспроизводимости при повторных запусках обучения модели, указанной как пара, разделенная запятыми, состоящая из 'Reproducible' и либо false или true.
Если 'NumVariablesToSample' не является 'all'затем программное обеспечение выбирает предсказатели случайным образом для каждого разделения. Для воспроизведения случайных выборок необходимо указать 'Reproducible',true и установить начальное число генератора случайных чисел с помощью rng. Обратите внимание, что настройка 'Reproducible' кому true может замедлить тренировку.
Пример: 'Reproducible',true
Типы данных: logical
'SplitCriterion' - Критерий разделения'gdi' | 'twoing' | 'deviance' | 'mse'Критерий разделения, указанный как разделенная запятыми пара, состоящая из 'SplitCriterion' и критерий разделения, действительный для типа дерева.
Для деревьев классификации:
'gdi' для индекса разнообразия Джини (по умолчанию)
'twoing' для двоякого правила
'deviance' для максимального уменьшения отклонения (также известного как перекрестная энтропия)
Для деревьев регрессии:
'mse' для среднеквадратической ошибки (по умолчанию)
Пример: 'SplitCriterion','deviance'
'Surrogate' - Разделение суррогатных решений'off' (по умолчанию) | 'on' | 'all' | положительное целое значениеФлаг разделения суррогатного решения, определяемый как разделенная запятыми пара, состоящая из 'Surrogate' и один из 'off', 'on', 'all'или положительное целое значение.
Когда 'off', дерево решений не находит суррогатных расщеплений в узлах ветвей.
Когда 'on'дерево решений находит не более 10 суррогатных разбиений в каждом узле ветви.
Если установлено значение 'all', дерево решений находит все суррогатные разделения в каждом узле ветви. 'all' установка может потреблять значительное время и память.
Если задано положительное целочисленное значение, дерево принятия решения находит максимум указанное количество суррогатных разбиений в каждом узле ветви.
Используйте суррогатные разделения для повышения точности прогнозов для данных с отсутствующими значениями. Этот параметр также позволяет вычислить показатели прогнозирующей связи между предикторами.
Пример: 'Surrogate','on'
Типы данных: single | double | char | string
'Type' - Тип дерева решений'classification' | 'regression'Тип дерева решений, указанный как значение в таблице
| Стоимость | Описание |
|---|---|
'classification' | Вырастите учащихся дерева классификации. Функции фитинга fitcensemble и fitcecoc установить это значение при прохождении t к ним. |
'regression' | Вырастите слушателей регрессионного дерева. Функция фитинга fitrensemble устанавливает это значение при прохождении t к нему. |
Совет
Хотя t выводит Type из функции фитинга, которой она предоставляется, при установке Type:
Отображение t показывает все параметры. Каждый неуказанный параметр является пустым массивом [].
templateTree проверяет спецификации на наличие ошибок.
Пример: 'Type','classification'
Типы данных: char | string
'AlgorithmForCategorical' - Алгоритм для разделения наилучшего категориального предиктора'Exact' | 'PullLeft' | 'PCA' | 'OVAbyClass'Алгоритм поиска наилучшего разделения на категориальном предикторе для данных с категориями C для данных и классов K ≥ 3, указанный как пара, разделенная запятыми, состоящая из 'AlgorithmForCategorical' и одно из следующих.
| Стоимость | Описание |
|---|---|
'Exact' | Рассмотрим все комбинации 2C-1 - 1. |
'PullLeft' | Начните со всех категорий C в правой ветви. Рассмотрите возможность перемещения каждой категории в левую ветвь, поскольку она достигает минимальной примеси для классов K среди остальных категорий. Из этой последовательности выберите расщепление с наименьшей примесью. |
'PCA' | Вычислите оценку для каждой категории, используя внутреннее произведение между первым основным компонентом матрицы взвешенной ковариации (матрицы вероятности центрированного класса) и вектором вероятностей класса для этой категории. Отсортируйте баллы в порядке возрастания и учтите все разделения C-1. |
'OVAbyClass' | Начните со всех категорий C в правой ветви. Для каждого класса упорядочивайте категории на основе их вероятности для этого класса. Для первого класса рассмотрите возможность перемещения каждой категории в левую ветвь по порядку, записывая критерий примеси при каждом перемещении. Повторите для остальных классов. Из этой последовательности выберите разделение, имеющее минимальную примесь. |
Программное обеспечение выбирает оптимальное подмножество алгоритмов для каждого разделения, используя известное количество классов и уровней категориального предиктора. Для двух классов он всегда выполняет точный поиск. Используйте 'AlgorithmForCategorical' аргумент пары имя-значение для указания конкретного алгоритма.
Дополнительные сведения см. в разделе Разделение категориальных предикторов в деревьях классификации.
Пример: 'AlgorithmForCategorical','PCA'
'MaxNumCategories' - Максимальные уровни категорий в разделенном узле10 (по умолчанию) | неотрицательное скалярное значениеМаксимальные уровни категорий в разделенном узле, указанные как разделенная запятыми пара, состоящая из 'MaxNumCategories' и неотрицательное скалярное значение. Дерево классификации расщепляет категориальный предиктор, используя точный алгоритм поиска, если предиктор имеет максимум MaxNumCategories уровни в разделенном узле. В противном случае он находит наилучшее категориальное разделение с помощью одного из неточных алгоритмов. Следует отметить, что передача небольшого значения может увеличить время вычислений и перегрузку памяти.
Пример: 'MaxNumCategories',8
'QuadraticErrorTolerance' - Квадратичный допуск ошибок1e-6 (по умолчанию) | положительное скалярное значениеКвадратичный допуск ошибки для каждого узла, указанный как разделенная запятыми пара, состоящая из 'QuadraticErrorTolerance' и положительное скалярное значение. Дерево регрессии останавливает разделение узлов, когда средневзвешенная квадратичная ошибка на узел опускается ниже QuadraticErrorTolerance*ε, где ε - средневзвешенная квадратичная ошибка всех n ответов, вычисленных перед ростом дерева решений.
pet) 2.
wi - вес наблюдения i, учитывая, что вес всех наблюдений равен единице (), и
- средневзвешенное значение всех ответов.
Пример: 'QuadraticErrorTolerance',1e-4
t - Шаблон дерева решений для классификации или регрессииШаблон дерева решений для классификации или регрессии, подходящий для обучения ансамбля (усиленные и пакетированные деревья решений) или многоклассной модели выходного кода с исправлением ошибок (ECOC), возвращаемый как объект шаблона. Проход t кому fitcensemble, или fitrensemble, или fitcecoc чтобы указать, как создать дерево решений для классификационного ансамбля, регрессионного ансамбля или модели ECOC соответственно.
При отображении t в окне команд все неустановленные параметры отображаются пустыми ([]). Однако во время обучения программа заменяет пустые опции соответствующими значениями по умолчанию.
Приспосабливать MaxNumSplits, программа разбивает все узлы на текущем уровне, а затем подсчитывает количество узлов ветвления. Слой - это набор узлов, равноудаленных от корневого узла. Если число узлов ветви превышает MaxNumSplits, то программное обеспечение следует этой процедуре.
Определите, сколько узлов ветви на текущем уровне должно быть не разделено, чтобы их было максимум MaxNumSplits узлы ветвей.
Сортировка узлов ветвей по их доходам от примесей.
Отмена разделения требуемого числа наименее успешных ветвей.
Верните дерево решений, выращенное до сих пор.
Эта процедура направлена на получение максимально сбалансированных деревьев.
Программное обеспечение разделяет узлы ответвлений на уровни до тех пор, пока не произойдет по меньшей мере одно из этих событий.
Есть MaxNumSplits + 1 узел ветви.
Предлагаемое разделение приводит к тому, что число наблюдений по крайней мере в одном узле ветви меньше MinParentSize.
Предлагаемое разделение приводит к тому, что число наблюдений по крайней мере в одном конечном узле меньше MinLeafSize.
Алгоритм не может найти хорошее разделение в пределах слоя (т.е. критерий отсечения (см. PruneCriterion), не улучшает все предлагаемые разделения в слое). Особый случай этого события - когда все узлы являются чистыми (т.е. все наблюдения в узле имеют одинаковый класс).
Для значений 'curvature' или 'interaction-curvature' из PredictorSelectionвсе тесты дают значения p, превышающие 0,05.
MaxNumSplits и MinLeafSize не влияют на разделение значений по умолчанию. Поэтому, если установить 'MaxNumSplits', то разделение может прекратиться из-за значения MinParentSize прежде MaxNumSplits происходят расколы.
Дополнительные сведения о выборе предикторов разделения и алгоритмов разделения узлов при выращивании деревьев решений см. в разделах Алгоритмы для деревьев классификации и Алгоритмы для деревьев регрессии.
[1] Брейман, Л., Дж. Фридман, Р. Ольшен и К. Стоун. Деревья классификации и регрессии. Бока Ратон, FL: CRC Press, 1984.
[2] Копперсмит, Д., С. Дж. Хон и Дж. Р. М. Хоскинг. «Разбиение номинальных атрибутов в деревьях решений». Data Mining and Knowledge Discovery, Vol. 3, 1999, pp. 197-217.
[3] Loh, W.Y. «Регрессионные деревья с несмещенным выбором переменных и обнаружением взаимодействия». Statistica Sinica, Vol. 12, 2002, pp. 361-386.
[4] Ло, У.Я. и Ю.С. Ших. «Разбить методы выбора для деревьев классификации». Statistica Sinica, том 7, 1997, стр. 815-840.
ClassificationTree | fitcecoc | fitcensemble | fitctree | fitrensemble | RegressionTree | templateEnsemble
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.