主要内容

templateTree

创建决策树模板

描述

例子

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

如果指定默认决策树模板,则软件在训练期间对所有输入参数使用默认值。指定决策树的类型是一个很好的实践,例如,对于一个分类树模板,指定“类型”、“分类”.如果指定决策树的类型并显示t在命令窗口,然后所有选项除了类型显示为空([]).

例子

t= templateTree (名称,值创建带有由一个或多个名称-值对参数指定的附加选项的模板。

例如,您可以指定用于在分类预测器上找到最佳分割的算法、分割标准或为每次分割选择的预测器数量。

如果你显示t,则所有选项均显示为空([]),使用名称-值对参数指定的除外。在训练期间,软件对空选项使用默认值。

例子

全部折叠

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

加载费雪的虹膜数据集。

负载fisheriris

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

t = templateTree(“代孕”“上”“MaxNumSplits”, 1)
t =适合Tree的模板。代理:'on' maxnumsplitting: 1

模板对象的选项为空,除了代理而且MaxNumSplits.当你经过t对于训练功能,软件用各自的默认值填充空选项。

指定t作为分类集合的弱学习器。

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

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

L = resubLoss(Mdl)
L = 0.0333

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

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

加载carsmall数据集。选择气缸的数量、气缸置换的体积、马力和重量作为燃油经济性的预测指标。

负载carsmallTbl =表(气缸,排量,马力,重量,MPG);

提升回归树的树深度控制器的默认值是:

  • 10MaxNumSplits

  • 5MinLeafSize

  • 10MinParentSize

搜索最优的树复杂度级别:

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

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

  3. 对于树的复杂度级别 j j 1 J ,通过绘制它们与学习周期数的关系,比较累积的、交叉验证的集合的MSE。在同一图表上为每种学习率绘制单独的曲线。

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

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

rng (1)%用于再现性MdlDeep = fitrtree(Tbl,“英里”“CrossVal”“上”“MergeLeaves”“关闭”...“MinParentSize”,1,“代孕”“上”);MdlStump = fitrtree(Tbl,“英里”“MaxNumSplits”,1,“CrossVal”“上”...“代孕”“上”);

使用5倍交叉验证交叉验证150个增强回归树的集合。使用树模板:

  • 使用序列中的值改变最大分割数 { 2 0 2 1 2 是这样的 2 并不比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);maxnumsplitting = 2.^(0:m);numMNS = nummel (maxnumsplitting);numTrees = 150;Mdl = cell(numMNS,numLR);k = 1:numLRj = 1:numMNS t =模板树(“MaxNumSplits”maxNumSplits (j),“代孕”“上”);Mdl{j,k} = fitrensemble(Tbl,“英里”“NumLearningCycles”numTrees,...“学习者”t“KFold”5,“LearnRate”, learnRate (k));结束结束

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

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

绘制交叉验证的MSE如何随着集合中树的数量的增加而表现。在同一图上绘制有关学习率的曲线,并为不同的树复杂性级别绘制单独的图。选择要绘制的树复杂度级别的子集。

mnsPlot = [1 round(数字(maxnumsplitting)/2)数字(maxnumsplitting)];图;k = 1:3次要情节(2 2 k)情节(挤压(错误(:,mnsPlot (k):)),“线宽”2)轴持有H = gca;情节(h。XLim [errorDeep errorDeep),“。b”“线宽”, 2)情节(h。XLim [errorStump errorStump),“r”“线宽”2)图(h.XLim min(最低(错误(:,mnsPlot (k):)))。* [1],“——k”) h.YLim = [10 50];包含(“树的数量”) ylabel (“旨在MSE”)标题(sprintf (' maxnumsplitting = %0.3g', maxnumsplitting (mnsPlot(k)))) hold结束hL = legend([cellstr(num2str(learnRate','学习率= %0.2f'));...“深树”“树桩”“最小MSE。”]);hL.Position(1) = 0.6;

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

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

确定最大的分割数量,树的数量,以及产生最低总体MSE的学习率。

[miner,minErrIdxLin] = min(error(:)));[idxNumTrees,idxMNS,idxLR] = ind2sub(size(error),minErrIdxLin);流(“\ nMin。MSE = %0.5f'minErr)
最小MSE = 16.77593
流('\ nooptimal参数值:\nNum. '树木= %d', idxNumTrees);
最优参数值:Num. Trees = 78
流('\ nmaxnumsplitting = %d\nLearning Rate = %0.2f\n'...maxNumSplits (idxMNS) learnRate (idxLR))
maxnumsplitting = 1学习率= 0.25

基于最优超参数和整个训练集创建一个预测集合。

tFinal = templateTree(“MaxNumSplits”maxNumSplits (idxMNS),“代孕”“上”);final = fitrensemble(Tbl,“英里”“NumLearningCycles”idxNumTrees,...“学习者”tFinal,“LearnRate”learnRate (idxLR))
MdlFinal = RegressionEnsemble PredictorNames: {1x4 cell} ResponseName: 'MPG' CategoricalPredictors: [] ResponseTransform: 'none' NumObservations: 94 NumTrained: 78 Method: 'LSBoost' LearnerNames: {'Tree'} reasonforterminate: '完成所要求的训练周期数量后正常终止。'FitInfo: [78x1 double] FitInfoDescription: {2x1 cell}正则化:[]属性,方法

MdlFinal是一个RegressionEnsemble.要根据汽车的气缸数量、气缸置换的体积、马力和重量来预测汽车的燃油经济性,您可以传递预测数据和MdlFinal预测

不再使用交叉验证选项手动搜索最优值(“KFold”)及kfoldLoss函数,可以使用“OptimizeHyperparameters”名称-值对参数。当你指定“OptimizeHyperparameters”,软件采用贝叶斯优化方法自动找到最优参数。得到的最优值“OptimizeHyperparameters”可能与使用手动搜索获得的结果不同。

t = templateTree(“代孕”“上”);mdl = fitrensemble(Tbl,“英里”“学习者”t...“OptimizeHyperparameters”,{“NumLearningCycles”“LearnRate”“MaxNumSplits”})
|====================================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | NumLearningC - | LearnRate | MaxNumSplits | | | |结果日志(1 +损失)运行时| |(观察)| (estim) |永昌龙  | | | |====================================================================================================================| | 最好1 | | 3.3955 | 1.2225 | 3.3955 | 3.3955 | 26 | 0.072054 | 3 | | 2 |接受| 6.0976 | 5.7644 | 3.3955 | 3.5549 | 170 | 70 | 0.0010295 | | 3 |最好| 3.2914 | 8.4435 | 3.2914 | 3.2917 | 273 | 0.61026 | 6 | | 4 | |6.1839 | 2.3405 | 3.2914 | 3.2915 | 80 | 0.0016871 | 1 | | 5 |的| 3.0379 | 0.81718 | 3.0379 | 3.0384 | 18 | 0.21288 | 31日| | 6 |接受| 3.3628 | 0.84684 | 3.0379 | 3.1888 | 10 | 0.17826 | 5 | | | 7日接受| 3.048 | 0.70501 | 3.0379 | 3.037 | 14 | 0.27419 | 16 | | |接受8 | 3.4668 | 0.78714 | 3.0379 | 3.1383 | 18 | 0.99734 | 69 | | 9最好| | 2.9548 | 0.98565 | 2.9548 | 3.0194 | 14 | 0.27616 | 3 | | 10最好| | 2.9211 | 2.1025 | 2.9211 | 2.9107 | 60 | 0.2712 | 1 | | 11 | | 3.1639接受32 | | 1.6551 | 2.9211 | 3.0696 | 0.36075 | 64 | | | 12日接受| 6.099 | 0.83625 | 2.9211 | 2.9604 | 0.017284 | | 99 | | | 13日接受| 2.94 | 14.92 | 2.9211 | 2.961 | 487 | 0.26885 | 1 | | | 14日接受| 3.0159 | 0.58782 | 2.9211 | 2.9292 | 51 13 | 0.25632 | | | 15 |接受| 5.3082 | 0.50221 | 2.9211 | 2.9271 | 99 | | 0.047754 | | | 16日接受| 4.0406 | 0.80187 | 2.9211 | 2.9269 | 13 | 0.097943 | 95 | | 17最好| | 2.9038 | 0.62022 | 2.9038 | 2.9035 | 10 | 0.38733 | 1 | | | 18日接受|11 | 3.1009 | 0.45164 | 2.9038 | 2.9034 | 0.98804 | 1 | |最好19 | | 2.8977 | 0.50891 | 2.8977 | 2.8954 | 11 | 0.32512 | 1 | | |接受20 | 5.6143 | 0.45403 | 2.8977 | 2.8989 | 0.042819 | 1 | 10  | |====================================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | NumLearningC - | LearnRate | MaxNumSplits | | | |结果日志(1 +损失)运行时| |(观察)| (estim) |永昌龙  | | | |====================================================================================================================| | 21日|接受| 3.1198 | 0.5324 | 2.8977 | 2.8964 | 10 | 0.23232 | 1 | | | 22日接受| 6.3323 | 1.1188 | 2.8977 | 2.8889 | 10 | 0.0057041 | 1 | | | 23日接受| 2.9277 | 4.4062 | 2.8977 | 2.8947 | 91 | 0.087297 | 1 | | 24 |接受| 2.9083 | 1.4808 | 2.8977 | 2.8983 | 10 | 0.47242 | 1 | | | 25日接受| 2.931 | 1.4853 | 2.8977 | 2.8995 | 45 | 0.1366 | 1 | | 26最好| | 2.8885 | 4.5664 | 2.8885 | 2.8996 | 143 | 0.18935 | 1 | | | 27日接受| 2.8948 | 6.2726 | 2.8885 | 2.8894 | 249 | 0.083604 | 1 | | | 28日接受| 3.0623 | 11.833 | 2.8885 | 2.8999 | 489 | 0.11329 | 2 | | | 29日接受| 2.9051 | 5.9092 | 2.8885 | 2.8983 | 230 | 0.15448 | 1 | | | 30日接受| 3.0104 | 0.46136 | 2.8885 | 2.9014 | 10 | 0.67342 | 1 |

图中包含一个轴对象。标题为Min objective vs. Number of function的axis对象包含2个类型为line的对象。这些对象代表最小观测目标,估计最小目标。

__________________________________________________________ 优化完成。最大目标达到30个。总函数评估:30总运行时间:114.3718秒总目标函数评估时间:83.4192最佳观测可行点:NumLearningCycles LearnRate MaxNumSplits _________________ _________ ____________ 143 0.18935 1观测目标函数值= 2.8885估计目标函数值= 2.8897函数评估时间= 4.5664最佳估计可行点(根据模型):NumLearningCycles LearnRate MaxNumSplits _________________ _________ ____________ 10 0.38733 1估计目标函数值= 2.9014估计函数评估时间= 0.6495
mdl = RegressionEnsemble PredictorNames: {1x4 cell} ResponseName: 'MPG' CategoricalPredictors: [] ResponseTransform: 'none' NumObservations: 94 HyperparameterOptimizationResults: [1x1 BayesianOptimization] NumTrained: 10 Method: 'LSBoost' LearnerNames: {'Tree'} reasonforterminate: '完成所要求的训练周期数后正常终止。'FitInfo: [10x1 double] FitInfoDescription: {2x1 cell}正则化:[]属性,方法

加载carsmall数据集。考虑一个模型,该模型根据汽车的加速度、气缸数、发动机排量、马力、制造商、车型年份和重量来预测汽车的平均燃油经济性。考虑气缸制造行业,Model_Year作为分类变量。

负载carsmall圆柱=分类(圆柱);Mfg = categorical(cellstr(Mfg));Model_Year = categorical(Model_Year);X =表(加速度,气缸,排量,马力,制造,...Model_Year、重量、MPG);

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

numCylinders = number (categories(Cylinders))
numCylinders = 3
numMfg = nummel(类别(Mfg))
numMfg = 28
numModelYear = nummel(类别(Model_Year))
numModelYear = 3

因为只有三个类别气缸而且Model_Year,标准CART,预测器拆分算法更倾向于在这两个变量上拆分一个连续预测器。

使用整个数据集训练500棵回归树的随机森林。要生长无偏树,请指定用于分割预测器的曲率测试。因为数据中有缺失的值,所以指定代理分割的使用。为了重现随机预测器选择,使用设置随机数生成器的种子rng并指定“重现”,真的

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

通过排列袋外观察值来估计预测因子的重要性。并行执行计算。

选项= statset(“UseParallel”,真正的);imp = oobPermutedPredictorImportance(Mdl,“选项”、选择);
使用“本地”配置文件启动并行池(parpool)…连接到并行池(工人数:6)。

用柱状图比较估算值。

图;酒吧(imp);标题(“out - out - bag perordered Predictor important估计值”);ylabel (“估计”);包含(“预测”);H = gca;h.XTickLabel = mld . 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。默认情况下,boosting会生成树桩(即,一个节点有一组叶子)。由于存在频率较小的类别,树木必须有足够多的叶子,以对少数类别敏感。指定最小叶节点观测数为3。

树= templateTree(“MinLeafSize”, 20);t = templateEnsemble(“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} .Trained {1},“模式”“图”

图分类树查看器包含一个axis对象和其他类型为uimenu、uicontrol的对象。axis对象包含21个类型为line, text的对象。

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

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

输入参数

全部折叠

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

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

分类树和回归树

全部折叠

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

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

例子:“MaxNumSplits”,5

数据类型:|

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

“上”,决策树合并来自同一父节点的叶子,并提供大于或等于与父节点相关的风险值的和。当“关闭”时,决策树不合并叶子。

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

例子:“MergeLeaves”,“上”

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

对于增强决策树和袋装决策树,默认值为1用于分类和5回归。对于ECOC模型中的决策树二叉学习器,默认为1

例子:“MinLeafSize”,2

每个分支节点的最小观测值,指定为逗号分隔的对,由“MinParentSize”一个正整数值。树中的每个分支节点至少有MinParentSize观察。如果两者都提供MinParentSize而且MinLeafSize,决策树使用给出较大叶的设置:MinParentSize = max(MinParentSize,2*MinLeafSize)

  • 如果你指定MinLeafSize,则为的默认值“MinParentSize”10

  • 如果您没有指定MinLeafSize,则默认值根据训练模型的不同而变化。对于增强和袋装决策树,默认值为2用于分类和10回归。对于ECOC模型中的决策树二叉学习器,默认值为10

例子:“MinParentSize”4

为每次分割随机选择的预测器的数目,指定为由逗号分隔的对组成的“NumVariablesToSample”一个正整数值。或者,您可以指定“所有”使用所有可用的预测器。

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

要重新生成随机选择,必须通过使用设置随机数生成器的种子rng并指定“重现”,真的

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

例子:“NumVariablesToSample”,3

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

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

价值 描述
“allsplits”

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

“弯曲” 曲率测试-选择分裂预测器,使p-每个预测器与响应之间独立性的卡方检验的值[3][4].训练速度与标准CART相似。
“interaction-curvature” 交互测试-选择分裂预测器,使p每个预测因子与响应之间的独立性卡方检验的-值,从而使p-每对预测因子与响应之间独立性的卡方检验的值[3].训练速度可能比标准CART慢。

“弯曲”而且“interaction-curvature”,如果所有测试都成功p-values大于0.05,然后MATLAB®停止分裂节点。

提示

  • 不建议使用曲率和交互测试来增强决策树。为了训练具有更高精度的增强树集合,使用标准CART代替。

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

  • 使用标准CART生长的树木对预测变量相互作用不敏感。此外,与交互测试的应用相比,在存在许多不相关的预测因子时,这样的树不太可能识别重要变量。因此,为了解释预测器的相互作用,并在存在许多不相关变量时确定重要变量,请指定相互作用测试[3]

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

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

例子:“PredictorSelection”、“弯曲”

标记来估计修剪过的子树的最佳序列,指定为逗号分隔的对,由“删除”而且“上”“关闭”

如果修剪“上”,然后该软件训练分类树学习器而不修剪它们,但在ECOC模型中估计集成或决策树二叉学习器中每个学习器修剪子树的最佳顺序。否则,该软件训练分类树学习器而不估计修剪子树的最佳序列。

对于增强和袋装决策树,默认值为“关闭”

对于ECOC模型中的决策树二叉学习器,默认为“上”

例子:“删除”,“上”

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

  • 对于分类树,您可以指定“错误”(默认)或“不洁”.如果你指定“不洁”,然后templateTree方法指定的杂质度量“SplitCriterion”名称-值对参数。

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

例子:“PruneCriterion”、“杂质”

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

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

例子:“重现”,真的

数据类型:逻辑

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

  • 对于分类树:

    • gdi的为基尼系数的多样性指数(默认)

    • “两个”对于二元法则

    • “异常”最大偏差减少(也称为交叉熵)

  • 对于回归树:

    • mse的对于均方误差(默认)

例子:“SplitCriterion”、“异常”

代理决策分割标志,指定为由逗号分隔的对组成“代孕”其中一个“关闭”“上”“所有”,或正整数值。

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

  • “上”时,决策树在每个分支节点上最多可以找到10个代理分割。

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

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

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

例子:“代孕”,“上”

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

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

价值 描述
“分类” 生长分类树学习器。拟合函数fitcensemble而且fitcecoc当您通过时设置此值t给他们。
“回归” 生长回归树学习器。拟合函数fitrensemble通过时设置此值t到它。

提示

虽然t推断类型从它所提供的拟合函数中,设置时会发生以下情况类型:

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

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

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

数据类型:字符|字符串

仅适用于分类树

全部折叠

算法找到最好的分割上的分类预测数据与C数据和数据类别K≥3类,以逗号分隔的对组成“AlgorithmForCategorical”下面是其中之一。

价值 描述
“准确” 考虑全部2个C1- 1种组合。
“PullLeft” 从所有开始C右边分支上的类别。类的杂质最小时,考虑将每个类别移动到左分支K其余类别中的类。从这个序列中,选择杂质最低的那一段。
主成分分析的 使用加权协方差矩阵(居中类概率矩阵)的第一主成分与该类别的类概率向量之间的内积计算每个类别的得分。将分数按升序排序,并考虑所有分数C- 1次。
“OVAbyClass” 从所有开始C右边分支上的类别。对于每个类,根据它们的概率对类别进行排序。对于第一个类,考虑将每个类别按顺序移动到左分支,在每次移动时记录杂质标准。对其余类重复此步骤。从这个序列中,选择杂质最小的分裂。

该软件使用分类预测器的已知数量的类和级别,为每次分裂选择算法的最佳子集。对于两个类,它总是执行精确的搜索。使用“AlgorithmForCategorical”参数来指定特定的算法。

详情请参见分类树中的分类预测符拆分

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

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

例子:“MaxNumCategories”,8

仅适用于回归树

全部折叠

每个节点的二次容错,指定为逗号分隔的对,由“QuadraticErrorTolerance”一个正标量。当每个节点的加权均方误差下降到以下时,回归树停止分裂节点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,则所有未指定的选项均显示为空([]).但是,在训练过程中,软件会将空选项替换为相应的默认值。

算法

  • 以适应MaxNumSplits时,软件对当前节点进行拆分,然后统计分支节点数。层是与根节点等距离的节点的集合。分支节点数量超过MaxNumSplits,那么软件就会按照这个程序运行。

    1. 确定当前层中需要拆解的分支节点的数量,以便最多可以有分支节点MaxNumSplits分支节点。

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

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

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

    这一程序的目的是生产最大限度的平衡树木。

  • 软件一层一层地拆分分支节点,直到至少发生其中一个事件。

    • MaxNumSplits+ 1个分支节点。

    • 建议的分割将导致至少一个分支节点中的观察数少于MinParentSize

    • 建议的分割将导致至少一个叶节点中的观察数少于MinLeafSize

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

    • 对于价值观“弯曲”“interaction-curvature”PredictorSelection,所有测试均屈服p-值大于0.05。

    MaxNumSplits而且MinLeafSize不影响按默认值拆分。因此,如果你设置“MaxNumSplits”,则拆分可能会由于的值而停止MinParentSize之前MaxNumSplits将发生。

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

参考文献

布莱曼,L.弗里德曼,R.奥尔申和C.斯通。分类与回归树.佛罗里达州博卡拉顿:CRC出版社,1984年。

[2]铜史密斯D., S. J.洪,J. R. M.霍斯金。“在决策树中划分名义属性”数据挖掘与知识发现, Vol. 3, 1999, pp. 197-217。

[3] Loh, W.Y.,“无偏变量选择和交互检测的回归树”。Statistica中央研究院, Vol. 12, 2002, pp. 361-386。

[4]罗永安、施永信。分类树的分割选择方法Statistica中央研究院, Vol. 7, 1997, pp. 815-840。

版本历史

在R2014a中引入