主要内容

templateTree

创建决策树模板

描述

例子

T= templateTree返回一个默认决策树学习器模板,该模板适合于训练集成(增强和袋装决策树)或纠错输出代码(ECOC)多类模型。指定T作为学习者使用:

如果指定默认决策树模板,则软件在训练期间对所有输入参数使用默认值。最好的做法是指定决策树的类型,例如,对于分类树模板,指定“类型”、“分类”.如果您指定决策树和显示的类型T在命令窗口,然后所有选项,除了类型看起来是空的([]).

例子

T= templateTree (名称,值)创建一个模板,其中包含一个或多个名称值对参数指定的其他选项。

例如,您可以指定用于在分类预测器,分割标准的最佳分割的算法,分割标准或为每个分割所选择的预测器数。

如果你显示T在命令窗口中,所有选项都显示为空([]),但使用名称-值对参数指定的选项除外。在培训期间,软件对空选项使用默认值。

例子

全部折叠

创建具有代理拆分的决策树模板,并使用该模板使用示例数据训练集成。

载入费雪的虹膜数据集。

负载fisheriris

创建带有代理分割的树桩决策树模板。

t = templatetree(“代孕”,“开”,“MaxNumSplits”, 1)
t=树的拟合模板。代理项:“on”MaxNumSplits:1

模板对象的选项为空,除了替代品最大数分裂. 当你经过的时候T对于培训功能,软件用它们各自的默认值填充空选项。

指定T作为分类集成的弱学习器。

Mdl = fitcensemble(量、种类、“方法”,“AdaBoostM2”,“学习者”, t)
Mdl = ClassificationEnsemble ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 NumTrained: 100 Method: 'AdaBoostM2' LearnerNames: {'Tree'} ReasonForTermination: '在完成请求的训练周期数后正常终止。'FitInfo描述:{2x1 cell}属性,方法

显示样本内(再替换)误分类错误。

L = resubLoss (Mdl)
l = 0.0333.

创建具有令人满意的预测性能的增强回归树集合的一种方法是使用交叉验证调优决策树的复杂性水平。在寻找最优复杂度的同时,调整学习速率以最小化学习周期的数量。

这个示例通过使用交叉验证选项“KFold”名称-值对参数)和kfoldLoss功能。或者,您可以使用“优化超参数”名称-值对参数自动优化超参数。看到优化回归集合

加载Carsmall.数据集。选择气缸数量,汽缸,马力和重量作为燃料经济性预测因子。

负载Carsmall.台=表(汽缸、排量、马力、重量、MPG);

用于增强回归树的树深度控制器的默认值为:

  • 10对于最大数分裂

  • 5.对于minleafsize.

  • 10对于MinParentSize

要搜索最佳树木复杂度级别:

  1. 交叉验证一组集成。指数级增加后续集成的树复杂度,从决策树桩(一次拆分)到最多N- 1分裂。N是样本量。另外,将每个集合的学习率在0.1到1之间变化。

  2. 估计每个集合的交叉验证均方误差(MSE)。

  3. 用于树木复杂度水平 J , J = 1. J ,通过绘制互动的累积,通过策划违反学习周期数来进行累积的交叉验证的MSE。绘制同一图中的每个学习率的单独曲线。

  4. 选择达到最小MSE的曲线,并记录相应的学习周期和学习速率。

交叉验证一个深度回归树和一个树桩。因为数据包含丢失的值,所以使用代理分割。这些回归树可以作为基准。

rng (1)%的再现性MdlDeep = fitrtree(资源描述,“MPG”,“CrossVal”,“开”,“MergeLeaves”,“关闭”,...'迷人', 1“代孕”,“开”);MdlStump = fitrtree(资源描述,“MPG”,“MaxNumSplits”, 1“CrossVal”,“开”,...“代孕”,“开”);

使用5倍交叉验证对150棵增强回归树进行交叉验证。使用树模板:

  • 使用序列中的值更改拆分的最大数目 { 2. 0 , 2. 1. , , 2. M } M是这样的 2. M 不比N- 1。

  • 打开代理劈叉。

对于每个变量,使用集合{0.1,0.25,0.5,1}中的每个值调整学习速率。

n=大小(Tbl,1);m=楼层(log2(n-1));learnRate=[0.10.25 0.51];numLR=numel(learnRate);maxNumSplits=2.^(0:m);numns=numel(maxNumSplits);numTrees=150;Mdl=cell(numns,numLR);对于k = 1: numLR对于j = 1:numMNS t = templateTree(“MaxNumSplits”maxNumSplits (j),“代孕”,“开”);mdl {j,k} = fitrensemble(tbl,“MPG”,“NumLearningCycles”,numtrees,...“学习者”t“KFold”5,“LearnRate”, learnRate (k));结束结束

估计每个集合的累积的、交叉验证的MSE。

kflAll = @ (x) kfoldLoss (x,“模式”,“累积”);errorCell = cellfun (Mdl kflAll,“统一”、假);[numTrees nummel (maxnumsplit) nummel (learnRate)]);errorDeep = kfoldLoss (MdlDeep);errorStump = kfoldLoss (MdlStump);

绘制交叉验证的MSE在集合中的树数增加时的行为。在同一个图上绘制关于学习速率的曲线,并为不同的树复杂度级别绘制单独的图。选择树复杂度级别的子集进行绘制。

mnsPlot = [1 round(nummel (maxnumsplents)/2) nummel (maxnumsplents)];数字;对于k=1:3子地块(2,2,k)绘图(挤压(错误(:,mnsPlot(k),)),“线宽”,2)轴持有甘氨胆酸h =;情节(h。XLim [errorDeep errorDeep),“-.b”,“线宽”,2)绘图(h.XLim,[errorStump errorStump],'-.r',“线宽”2)图(h.XLim min(最低(错误(:,mnsPlot (k):)))。* [1],' -  k')H.YLIM = [10 50];Xlabel(树木的数量)ylabel(“旨在MSE”)标题(Sprintf(“MaxNumSplits = % 0.3 g”maxNumSplits (mnsPlot (k))))离开结束hL =传奇([cellstr num2str (learnRate ','学习率= %0.2f'));...“深树”;“树桩”;“最小MSE。”]);hL.Position (1) = 0.6;

图中包含3个轴。标题为maxnumpartitions = 1的坐标轴1包含7个line类型的对象。标题为maxnumpartitions = 8的坐标轴2包含7个line类型的对象。标题为maxnumpartitions = 64的坐标轴3包含7个line类型的对象。这些对象表示学习率= 0.10,学习率= 0.25,学习率= 0.50,学习率= 1.00,深树,树桩,最小MSE。

每条曲线都包含一个最小的交叉验证MSE,该MSE发生在集合中最优树的数量上。

确定产生总体最小MSE的最大分割数、树的数量和学习率。

[miner,mineridxlin]=min(错误(:);[idxNumTrees,idxMNS,idxLR]=ind2sub(大小(错误),mineridxlin);fprintf(“\ nMin。MSE = % 0.5 f 'minErr)
最小MSE = 16.77593
fprintf('\n临时参数值:\nNum.Trees=%d', idxNumTrees);
最优参数值:Num. Trees = 78
fprintf('\ nmaxnumpartitions = %d\nLearning Rate = %0.2f\n',...maxNumSplits (idxMNS) learnRate (idxLR))
MaxNumSplits=1学习率=0.25

建立一个基于最优超参数和整个训练集的预测集成。

tFinal = templateTree (“MaxNumSplits”,maxNumSplits(idxMNS),“代孕”,“开”);MdlFinal = fitrensemble(资源描述,“MPG”,“NumLearningCycles”idxNumTrees,...“学习者”tFinal,“LearnRate”learnRate (idxLR))
MdlFinal = RegressionEnsemble PredictorNames: {1x4 cell} ResponseName: 'MPG' CategoricalPredictors: [] ResponseTransform: 'none' NumObservations: 94 NumTrained: 78 Method: 'LSBoost' LearnerNames: {'Tree'} ReasonForTermination: '在完成请求的训练周期数后正常终止。'正则化:[]属性,方法

MdlFinal是一个回归套.要预测一辆汽车的燃油经济性,根据它的汽缸数量,汽缸所取代的体积,马力和重量,你可以通过预测数据和MdlFinal预测

而不是使用交叉验证选项手动搜索最佳值(“KFold”)和kfoldLoss函数,则可以使用“优化超参数”名称-值对的论点。当你指定“优化超参数”,软件使用贝叶斯优化自动找到最优参数。利用“优化超参数”可以与使用手动搜索获得的不同。

t = templatetree(“代孕”,“开”);mdl = fitrensemble(资源描述,“MPG”,“学习者”t...“优化超参数”,{“NumLearningCycles”,“LearnRate”,“MaxNumSplits”})
|====================================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | NumLearningC - | LearnRate | MaxNumSplits | | | |结果日志(1 +损失)运行时| |(观察)| (estim) |永昌龙  | | | |====================================================================================================================| | 最好1 | | 3.3955 | 1.3296 | 3.3955 | 3.3955 | 26 | 0.072054 | 3 | | 2 |接受| 6.0976 | 6.3773 | 3.3955 | 3.5549 | 170 | 70 | 0.0010295 | | 3 |的| 3.2914 | 9.4601 | 3.2914 | 3.2917 | 273 | 0.61026 | 6 | | 4 |接受| 6.1839 | 2.6633 | 3.2914 | 3.2915 | 80 | 0.0016871 | 1 | | 5 |的| 3.0379 | 0.8248 | 3.0379 | 3.0384 | 18 | 0.21288 | 31日| | 6 |接受| 3.3628 | 0.68604 | 3.0379 | 3.1888 | 10 | 0.17826 | 5 | |7 | Best | 3.0192 | 0.56051 | 3.0192 | 3.0146 | 10 | 0.27711 | 59 | | 8 | Accept | 4.3148 | 0.58189 | 3.0192 | 3.0191 | 11 | 0.099523 | 99 | | 9 | Accept | 3.1939 | 0.6954 | 3.0192 | 3.2463 | 10 | 0.8556 | 62 | | 10 | Accept | 3.4117 | 0.65447 | 3.0192 | 3.0193 | 10 | 0.97894 | 97 | | 11 | Accept | 3.0556 | 0.49599 | 3.0192 | 3.0262 | 10 | 0.40405 | 27 | | 12 | Accept | 3.1137 | 0.68894 | 3.0192 | 3.0196 | 10 | 0.42996 | 89 | | 13 | Accept | 3.4358 | 0.68729 | 3.0192 | 3.0184 | 10 | 0.98766 | 16 | | 14 | Accept | 3.0444 | 0.46698 | 3.0192 | 3.0211 | 10 | 0.3072 | 28 | | 15 | Accept | 3.1599 | 0.56523 | 3.0192 | 3.0226 | 10 | 0.21933 | 1 | | 16 | Accept | 5.7086 | 0.6417 | 3.0192 | 3.0324 | 10 | 0.036906 | 26 | | 17 | Accept | 3.0827 | 1.8004 | 3.0192 | 3.0324 | 47 | 0.14064 | 19 | | 18 | Accept | 3.233 | 0.93856 | 3.0192 | 3.0327 | 20 | 0.57027 | 25 | | 19 | Best | 2.9344 | 1.9532 | 2.9344 | 2.9348 | 57 | 0.06688 | 1 | | 20 | Best | 2.9301 | 1.7625 | 2.9301 | 2.9298 | 49 | 0.085566 | 6 | |====================================================================================================================| | Iter | Eval | Objective: | Objective | BestSoFar | BestSoFar | NumLearningC-| LearnRate | MaxNumSplits | | | result | log(1+loss) | runtime | (observed) | (estim.) | ycles | | | |====================================================================================================================| | 21 | Accept | 3.0949 | 3.8916 | 2.9301 | 2.9298 | 109 | 0.086821 | 15 | | 22 | Accept | 2.9938 | 2.0892 | 2.9301 | 2.9312 | 60 | 0.34565 | 2 | | 23 | Accept | 3.1667 | 1.306 | 2.9301 | 2.931 | 28 | 0.28864 | 79 | | 24 | Accept | 3.2671 | 2.5289 | 2.9301 | 2.9246 | 79 | 0.60876 | 4 | | 25 | Best | 2.918 | 1.9716 | 2.918 | 2.9268 | 53 | 0.11995 | 1 | | 26 | Accept | 2.9193 | 3.9779 | 2.918 | 2.9305 | 118 | 0.26486 | 1 | | 27 | Accept | 2.9259 | 1.9028 | 2.918 | 2.9058 | 57 | 0.089008 | 1 | | 28 | Best | 2.8857 | 3.7852 | 2.8857 | 2.905 | 101 | 0.3349 | 1 | | 29 | Accept | 2.97 | 3.5924 | 2.8857 | 2.8928 | 110 | 0.030579 | 1 | | 30 | Accept | 2.9271 | 6.8808 | 2.8857 | 2.8931 | 209 | 0.032758 | 1 |

图中包含一个坐标轴。标题为“最小目标vs.函数计算数”的轴包含2个类型为line的对象。这些对象代表最小观测目标、最小估计目标。

__________________________________________________________ 优化完成。maxobjective达到30个。总函数计算:30总运行时间:127.0126秒总目标函数计算时间:65.7605NumLearningCycles LearnRate maxnumspl_________________ _________ ____________ 101 0.3349 1观察到的目标函数值= 2.8857估计的目标函数值= 2.8931函数评估时间= 3.7852最佳估计可行点(根据模型):NumLearningCycles LearnRate maxnumsplit _________________ _________ ____________ 101 0.3349 1估计的目标函数值= 2.8931估计的函数评估时间= 3.4655
mdl = RegressionEnsemble PredictorNames: {1x4 cell} ResponseName: 'MPG' CategoricalPredictors: [] ResponseTransform: 'none' NumObservations: 94 HyperparameterOptimizationResults: [1x1 bayesanoptimization] NumTrained: 101 Method: 'LSBoost' LearnerNames: {'Tree'} ReasonForTermination:“在完成要求的培训周期数后正常终止。”正则化:[]属性,方法

加载Carsmall.数据集。考虑一个模型,它可以预测一辆汽车的平均燃油经济性,该模型给出了汽车的加速度、汽缸数、发动机排量、马力、制造商、车型年份和重量。考虑气缸,MFG., 和Model_Year作为分类变量。

负载Carsmall.气缸=分类(缸);及时通知=分类(cellstr (Mfg));Model_Year =分类(Model_Year);X =表(加速、气缸、排量、马力、制造行业,...Model_Year、重量、MPG);

显示分类变量中表示的类别数。

numCylinders =元素个数(类别(气缸))
numCylinders = 3
nummfg = numel(类别(MFG))
numMfg=28
numModelYear =元素个数(类别(Model_Year))
numModelYear = 3

因为只有3个类别气缸Model_Year在标准CART中,预测器分割算法更喜欢分割连续预测器而不是这两个变量。

使用整个数据集训练一个由500棵回归树组成的随机森林。要种植无偏的树,指定使用曲率测试的分裂预测器。由于数据中缺少值,请指定代理拆分的用法。为了重现随机的预测器选择,使用RNG.并指定“重现”,真的

rng (“默认”);%的再现性t = templatetree(“PredictorSelection”,“曲率”,“代孕”,“开”,...“复制”,真正的);%用于随机预测器选择的重现性Mdl = fitrensemble (X,“MPG”,“方法”,“包”,“NumLearningCycles”, 500,...“学习者”t);

通过禁用外袋观察来估算预测的重要措施。并行执行计算。

选择= statset (“使用并行”,真正的);小鬼= oobPermutedPredictorImportance (Mdl,“选项”、选择);
使用“local”配置文件启动并行池(parpool)…连接到并行池(工作人员数量:6)。

用条形图比较估计值。

数字;酒吧(IMP);标题('不禁止允许的预测标志重要估计');ylabel ('估计');xlabel('预测器');甘氨胆酸h =;h.xticklabel = mdl.predictornames;H.xticklabelrotation = 45;H.TicklabelInterpreter =.“没有”;

在这种情况下,Model_Year最重要的预测因素是什么气缸.将这些结果与评估预测因素的重要性

创建一个用于使用的集合模板fitcecoc.

加载心律失常数据集。

负载心律失常列表(分类(Y));
值计数百分比1 245 54.20% 2 44 9.73% 3 15 3.32% 4 15 3.32% 5 13 2.88% 6 25 5.53% 73 0.66% 8 2 0.44% 99 1.99% 10 50 11.06% 14 4 0.88% 15 5 1.11% 16 22 4.87%
rng (1);%的再现性

有些类在数据中有较小的相对频率。

为AdaBoostM1分类树集合创建一个模板,并指定使用100个学习者,收缩值为0.1。默认情况下,增加树桩(即一个节点拥有一组叶子)。由于班级的上课频率很小,所以树木必须有足够多的叶子,以对少数班级敏感。指定最小叶节点观察数为3。

tTree = templateTree (“MinLeafSize”,20);t=模板集成(“AdaBoostM1”、100、tTree“LearnRate”,0.1);

模板对象的所有属性都是空的,除非方法类型,以及函数调用中名称-值对参数值的相应属性。当你通过T对于训练函数,软件用它们各自的默认值填充空属性。

指定T作为ECOC多字母模型的二进制学习者。使用默认的一个编码设计列车。

mdl = fitcecoc(x,y,“学习者”t);
  • MDL.是一个ClassificationECOC多级模型。

  • Mdl。BinaryLearners一个78乘1的单元阵列是多少CompactClassificationEnsemble模型。

  • Mdl.BinaryLearners {j} .Trained一个100乘1的细胞阵列CompactClassificationTree.模型,J= 1,…,78。

您可以使用以下方法验证其中一个二进制学习器是否包含不是树桩的弱学习器视图

查看(mdl.binarylearners {1} .TROATED {1},“模式”,“图”)

地物分类树查看器包含一个轴和uimenu、uicontrol类型的其他对象。轴包含21个line、text类型的对象。

显示样本内(再替换)误分类错误。

L = resubLoss (Mdl,“LossFun”,“classiferror”)
L = 0.0819

输入参数

全部折叠

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值是相应的价值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“代孕”,“上”、“NumVariablesToSample”,“所有”指定带有代理分割的模板,并在每个分割处使用所有可用的预测器。
用于分类树和回归树

全部折叠

每棵树的决策分割(或分支节点)的最大数目,指定为由逗号分隔的对组成“MaxNumSplits”一个正整数。templateTree分裂最大数分裂或更少的分支节点。有关拆分行为的更多细节,请参见算法

对于ECOC模型中的袋装决策树和决策树二叉学习器,默认为n - 1,在那里N为训练样本中的观测次数。对于增强决策树,默认值是10

例子:“MaxNumSplits”,5

数据类型:|

叶合并标志,指定为逗号分隔对,由“MergeLeaves”,要么“开”“关闭”

什么时候“开”,决策树合并源自来自同一父节点的叶子,并且该叶子提供更大或等于与父节点相关联的风险的风险值之和。什么时候“关闭”,决策树不合并叶子。

对于增强决策树和袋装决策树,默认值为“关闭”。对于ECOC模型中的决策树二进制学习器,默认值为“开”

例子:'mergeleaves','开'

每个叶子的最小观察值,指定为逗号分隔的对,由“MinLeafSize”和一个正整数。每片叶子至少有minleafsize.观察每片树叶。如果两者都提供MinParentSizeminleafsize.,决策树使用提供较大叶子的设置:MinParentSize = max (MinParentSize 2 * MinLeafSize)

对于增强决策树和袋装决策树,默认值为1.对分类和5.回归。对于Ecoc模型中的决策树二元学习者,默认为1.

例子:“MinLeafSize”,2

每个分支节点的最小观测值,指定为逗号分隔对,由'迷人'和一个正整数。树中的每个分支节点至少有MinParentSize观察结果。如果您同时提供MinParentSizeminleafsize.,决策树使用提供较大叶子的设置:MinParentSize = max (MinParentSize 2 * MinLeafSize)

  • 如果您指定minleafsize.,则为'迷人'10

  • 如果您没有指定minleafsize.,则默认值会根据训练模型的不同而改变。对于提升和袋装决策树,默认值是2.对分类和10回归。对于ECOC模型中的决策树二叉学习器,默认值为10

例子:“MinParentSize”,4

要为每个分割随机选择的预测器数量,指定为逗号分隔的对,包括“NumVariablesToSample”和一个正整数。或者,您可以指定“所有”使用所有可用的预测因子。

如果训练数据包含许多预测器,而您想要分析预测器的重要性,那么请指定“NumVariablesToSample”作为“所有”.否则,软件可能不会选择一些预测因子,低估它们的重要性。

要重现随机选择,必须使用随机数发生器的种子RNG.并指定“重现”,真的

对于ECOC模型中的增强决策树和决策树二元学习器,默认值为“所有”.袋装决策树的默认值是用于分类的预测器数量的平方根,或用于回归的预测器数量的三分之一。

例子:“NumVariablesToSample”,3

数据类型:||字符|字符串

用于在每个节点上选择最佳分割预测器的算法,指定为由逗号分隔的对组成“PredictorSelection”和这个表中的值。

价值 描述
“allsplits”

标准CART -选择在所有预测器的所有可能拆分中使拆分准则增益最大化的拆分预测器[1]

“曲率” 曲率测试-选择使曲率最小的分割预测器P-每个预测器和反应之间的独立性卡方检验的值[3][4]. 训练速度与标准手推车相似。
“interaction-curvature” 交互测试-选择分裂预测器,使P-每个预测器和响应之间的独立性卡方检验的值,并使最小P- 对每对预测器和反应之间的独立性的Chi-Square测试[3]。训练速度可能比标准手推车慢。

对于“曲率”“interaction-curvature”,如果所有测试都合格P-值大于0.05,则MATLAB®停止分裂节点。

提示

  • 不建议使用曲率和交互测试来增强决策树。为了训练一组提高精度的树木,可以使用标准的CART。

  • 标准CART倾向于选择包含许多不同值(例如连续变量)的分割预测值,而不是包含少数不同值(例如分类变量)的分割预测值[4].如果预测器数据集是异构的,或者如果有比其他变量具有相对较少的不同值的预测器,那么考虑指定曲率或交互测试。

  • 使用标准推车生长的树木对预测变量相互作用不敏感。而且,这种树木在许多不相关的预测因子的存在中的可能性不太可能识别重要的变量,而不是应用相互作用测试。因此,要考虑预测器相互作用并在存在许多无关变量的情况下识别重要变量,请指定交互测试[3]

  • 预测速度不受价值的影响“PredictorSelection”

有关如何templateTree选择拆分预测器,请参阅节点拆分规则(分类),节点拆分规则(回归)选择分裂预测器选择技术

例子:'预测互联','曲率'

标志估计被指定为逗号分隔对的修剪过的子树的最佳序列“删除”“开”“关闭”

如果修剪“开”,然后对分类树学习者进行训练而不进行修剪,但在ECOC模型中对每个学习者的最优修剪子树序列进行估计。否则,软件训练分类树学习者不估计最优修剪子树序列。

对于boost和bagged决策树,默认值是“关闭”

对于Ecoc模型中的决策树二元学习者,默认为“开”

例子:“删除”,“上”

修剪标准,指定为逗号分隔的对,由“PruneCriterion”以及对树类型有效的修剪标准。

  • 对于分类树,您可以指定“错误”(默认)或“不洁”.如果您指定“不洁”那么templateTree使用指定的杂质测量值“SplitCriterion”名称-值对的论点。

  • 对于回归树,您只能指定mse的(默认)。

例子:“PruneCriterion”、“杂质”

标记,以强制重复运行模型训练的再现性,指定为逗号分隔的对,由“复制”,要么真的

如果“NumVariablesToSample”不是“所有”,然后软件为每次分割随机选择预测因子。要重现随机选择,必须指定“重现”,真的并利用随机数发生器的种子设置RNG..请注意设置“复制”真的会减慢训练速度。

例子:“重现”,真的

数据类型:符合逻辑的

分割条件,指定为逗号分隔的对,由“SplitCriterion”以及对树类型有效的分割条件。

  • 分类树:

    • 'gdi'对于基尼多样性指数(默认)

    • “两个”二人法则

    • '偏见'最大偏差减少(也称为交叉熵)

  • 回归树:

    • mse的均方误差(默认)

例子:“SplitCriterion”、“异常”

代理判决拆分标志,指定为逗号分隔对组成“代孕”一之一“关闭”,“开”,“所有”,或正整数值。

  • 什么时候“关闭”,则决策树不会在分支节点上找到代理分割。

  • 什么时候“开”,决策树在每个分支节点上发现最多10个代理分割。

  • 当设置为“所有”时,决策树查找每个分支节点上的所有代理分割。的“所有”设置会消耗大量的时间和内存。

  • 当设置为正整数值时,决策树在每个分支节点上最多查找指定数量的代理项拆分。

使用代理分割来提高缺失值数据预测的准确性。此设置还允许您计算预测器之间的预测关联的度量。

例子:“代孕”,“上”

数据类型:||字符|字符串

决策树类型,作为表中的值指定

价值 描述
“分类” 成长分类树学习者。拟合函数fitcensemblefitcecoc.通过时设置此值T对他们来说。
“回归” 成长回归树学习者。拟合函数fitrensemble.当你通过时设置这个值T到它。

提示

虽然T推断类型从提供的拟合功能,您设置时会发生以下情况类型:

  • 展示T显示所有选项。每个未指定的选项都是空数组[]

  • templateTree检查规格是否有错误。

例子:“类型”、“分类”

数据类型:字符|字符串

只适用于分类树

全部折叠

算法,以找到最佳分割的一个分类预测数据C数据和类别K≥3个类,指定为逗号分隔对,由'algorithCherCategorical'和下面的一个。

价值 描述
“准确” 考虑所有2个C1- 1的组合。
“PullLeft” 从所有人开始C右边分支的类别。考虑将每个类别移动到左分支,因为它实现了最小杂质K其余类别中的类。从这个顺序中,选择杂质最低的分裂。
主成分分析的 使用加权协方差矩阵(中心类概率矩阵)的第一个主成分与该类别的类概率向量之间的内积,计算每个类别的得分。将分数按升序排序,然后全部考虑C- 1分裂。
'ovabyclass' 从所有人开始C右边分支的类别。对于每个课程,根据他们对该类的概率订购类别。对于第一类,考虑按顺序将每个类别移动到左分支,在每个移动时记录杂质标准。重复剩下的类。从此序列中,选择具有最小杂质的拆分。

该软件使用分类预测器的已知类和级别的数目,为每个分裂选择最优的算法子集。对于两个类,它总是执行精确的搜索。使用'algorithCherCategorical'指定特定算法的名称-值对参数。

有关详细信息,请参见分类树分类预测器的分裂

例子:“AlgorithmForCategorical”、“主成分分析的

拆分节点中的最大类别级别,指定为逗号分隔对,由“MaxNumCategories”和非负标量值。分类树使用精确搜索算法拆分分类预测器(如果该预测器最多有maxnum类别分裂节点中的级别。否则,它会使用一种不精确的算法找到最佳的分类分割。注意,传递一个小值会增加计算时间和内存过载。

例子:“MaxNumCategories”,8

仅用于回归树

全部折叠

每个节点的二次容错,由逗号分隔的对组成“正交误差容限”和正标量值。回归树停止拆分节点当每个节点的加权平均误差下降下降时QuadraticErrorTolerance *ε,在那里ε是所有变量的加权均方误差N在生成决策树之前计算响应。

ε = = 1. N W ( Y Y ¯ ) 2.

W观察的重量是多少,假设所有观测值的权重之和为1 ( = 1. N W = 1. ),

Y ¯ = = 1. N W Y

是所有响应的加权平均值。

例子:“QuadraticErrorTolerance”,1的军医

输出参数

全部折叠

用于分类或回归的决策树模板适用于培训集合(提升和袋装决策树)或纠错输出代码(ECOC)多种单位模型,作为模板对象返回。经过Tfitcensemble,或fitrensemble.,或fitcecoc.要指定如何分别为分类集合,回归合奏或ecoc模型创建决策树。

如果你显示T,则所有未指定的选项显示为空([]).但是,在训练期间,软件会用相应的默认值替换空选项。

算法

  • 以适应最大数分裂,软件将拆分当前网络中的所有节点,然后计算分支节点的数量。图层是与根节点等差异的一组节点。如果分支节点的数量超过最大数分裂,则软件按此程序运行。

    1. 确定当前层中有多少分支节点需要不被分割,以便最多有多少分支节点最大数分裂分支节点。

    2. 根据分支节点的杂质增益对它们进行排序。

    3. 取消拆分最不成功的分支的所需数量。

    4. 返回到目前为止增长的决策树。

    这个过程的目的是生产出最平衡的树木。

  • 软件一层一层地分割分支节点,直到至少有一个这样的事件发生。

    • 最大数分裂+ 1个分支节点。

    • 提出的分裂导致至少一个分支节点中的观测数小于MinParentSize

    • 提出的分裂导致至少一个叶节点的观测数小于minleafsize.

    • 该算法不能在一个层内找到一个好的分割(即剪枝准则(见PruneCriterion),并不改善所有提议的分层)。此事件的一个特殊情况是所有节点都是纯节点(即节点中的所有观察具有相同的类)。

    • 对于价值观“曲率”“interaction-curvature”PredictorSelection,所有测试都会产生P-值大于0.05。

    最大数分裂minleafsize.在默认值上不影响拆分。因此,如果您设置“MaxNumSplits”,然后拆分可能会因值而停止MinParentSize之前最大数分裂将发生。

  • 关于在生长决策树时选择分裂预测器和节点分裂算法的详细信息,请参见算法用于分类树和算法对于回归树。

参考文献

[1] Breiman, L., J. Friedman, R. Olshen, C. Stone。分类回归树.Boca Raton,FL:CRC Press,1984。

Coppersmith, D., S. J. Hong, J. R. M. Hosking。在决策树中划分标称属性。数据挖掘与知识发现, 1999年第3卷,197-217页。

[3] Loh, W.Y., <具有无偏变量选择和交互检测的回归树>Statistica中央研究院,第12卷,2002年,第361-386页。

Loh w.y y and Y.S. Shih分类树的分裂选择方法Statistica中央研究院, 1997年第7卷,第815-840页。

在R2014A介绍