主要内容

templateTree

创建决策树模板

描述

例子

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

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

例子

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

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

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

例子

全部崩溃

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

载入费雪的虹膜数据集。

负载fisheriris

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

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

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

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

Mdl = fitcensemble(量、种类、“方法”“AdaBoostM2”“学习者”, t)
Mdl=ClassificationnSemble ResponseName:'Y'分类预测值:[]类名:{'setosa''versicolor''virginica'}ScoreTransform:'none'numobervations:150 NumTrained:100方法:'AdaBoostM2'LearnerNames:{'Tree'}推理终止:'在完成请求的训练周期数后正常终止。'FitInfo:[100x1 double]FitInfoDescription:{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. tree-complexity水平 j j 1 J ,通过绘制它们与学习周期数的关系,比较集成的累积的、交叉验证的MSE。在同一个图上为每个学习率绘制单独的曲线。

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

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

rng (1)%的再现性MdlDeep = fitrtree(资源描述,“英里”“克罗斯瓦尔”“上”“MergeLeaves”“关闭”...“MinParentSize”, 1“代孕”“上”);MdlStump = fitrtree(资源描述,“英里”“MaxNumSplits”, 1“克罗斯瓦尔”“上”...“代孕”“上”);

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

  • 使用序列中的值改变分割的最大数目 2 0 2 1 2 是这样的 2 不比n- 1。

  • 打开代理劈叉。

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

n =大小(1台);M =底(log2(n - 1));learnRate = [0.1 0.25 0.5 1];numLR =元素个数(learnRate);maxNumSplits = 2。^ (0:m);numMNS =元素个数(maxNumSplits);numTrees = 150;Mdl =细胞(numMNS numLR);对于k = 1: numLR对于j = 1:numMNS t = templateTree(“MaxNumSplits”maxNumSplits (j),“代孕”“上”);Mdl {j, k} = fitrensemble(资源描述,“英里”“NumLearningCycles”numTrees,...“学习者”t“KFold”5,“LearnRate”, learnRate (k));结束结束

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

kflAll = @ (x) kfoldLoss (x,“模式”“累积”);errorCell = cellfun (Mdl kflAll,“统一”,false);错误=重塑(单元格2mat(errorCell),[numTrees numel(maxNumSplits)numel(learnRate)];错误深度=kfoldLoss(MdlDeep);错误桩=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];包含(树木的数量) 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的Axes对象2包含7个类型为line的对象。标题为maxnumpartitions = 64的Axes对象3包含7个line类型的对象。这些对象表示学习率= 0.10,学习率= 0.25,学习率= 0.50,学习率= 1.00,深树,树桩,最小MSE。

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

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

[minErr, minErrIdxLin] = min(错误(:));[idxNumTrees, idxMNS idxLR] = ind2sub(大小(错误),minErrIdxLin);流(“\ nMin。MSE = % 0.5 f 'minErr)
最小MSE = 16.77593
流(“\ nOptimal参数值:\ nNum。树= % d ', idxNumTrees);
最佳参数值:树数=78
流('\ nmaxnumpartitions = %d\nLearning Rate = %0.2f\n'...maxNumSplits (idxMNS) learnRate (idxLR))
学习速率= 0.25

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

tFinal = templateTree (“MaxNumSplits”,maxNumSplits(idxMNS),“代孕”“上”);MdlFinal = fitrensemble(资源描述,“英里”“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(资源描述,“英里”“学习者”t...“优化超参数”, {“NumLearningCycles”“LearnRate”“MaxNumSplits”})
|====================================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | NumLearningC - | LearnRate | MaxNumSplits | | | |结果日志(1 +损失)运行时| |(观察)| (estim) |永昌龙  | | | |====================================================================================================================| | 最好1 | | 3.3955 | 1.3212 | 3.3955 | 3.3955 | 26 | 0.072054 | 3 | | 2 |接受| 6.0976 | 7.3334 | 3.3955 | 3.5549 | 170 | 70 | 0.0010295 | | 3 |的| 3.2914 | 11.441 | 3.2914 | 3.2917 | 273 | 0.61026 | 6 | | 4 |接受| 6.1839 | 3.1548 | 3.2914 | 3.2915 | 80 | 0.0016871 | 1 | | 5 |的| 3.0379 | 0.89285 | 3.0379 | 3.0384 | 18 | 0.21288 | 31日| | 6 |接受| 3.3628 | 0.69273 | 3.0379 | 3.1888 | 10 | 0.17826 | 5 |最好7 | | | 3.0192 | 0.61304 | 3.0192 | 3.0146 | 10 | 0.27711 | 59 | | 8 |接受| 4.6355 | 0.62378 | 3.0192 | 3.0191 | 0.091618 | | 98 | | | 9日接受| 3.1151 | 1.0549 | 3.0192 | 3.0191 | 10 | 0.39913 | 26 | | |接受10 | 3.4377 | 0.68101 | 3.0192 | 3.019 | 0.99335 | | 97 | | | 11日接受| 5.8237 | 0.59221 | 3.0192 | 3.019 | 10 |0.032002 | 1 | | | 12日接受| 4.5938 | 0.60477 | 3.0192 | 3.0192 | 10 | 0.098555 | 1 | | | 13日接受| 3.0677 | 2.107 | 3.0192 | 3.0192 | 41 | 0.16169 | 94 | | | 14日接受| 3.2969 | 1.2862 | 3.0192 | 3.0192 | 28 | 0.81215 | 96 | | 15 |接受| 3.027 | 2.5826 | 3.0192 | 3.0301 | 56 | 0.071231 | 93 | | 16最好| | 2.9369 | 0.71034 | 2.9369 |15 | 2.9457 | 0.30817 | 2 | | 17最好| | 2.8925 | 0.89299 | 2.8925 | 2.9051 | 24 | 0.33763 | 1 | | | 18日接受| 2.9079 | 1.7679 | 2.8925 | 2.8982 | 48 | 0.37865 | 1 | | | 19日接受| 2.9353 | 1.3026 | 2.8925 | 2.8945 | 31日| 0.31067 | 1 | | |接受20 | 3.1439 | 1.2793 | 2.8925 | 2.9097 | 23 | 0.37739 | 98 ||====================================================================================================================| | Iter | Eval |目的:| |目的BestSoFar | BestSoFar | NumLearningC - | LearnRate | MaxNumSplits | | | |结果日志(1 +损失)运行时| |(观察)| (estim) |永昌龙  | | | |====================================================================================================================| | 21日|接受| 2.9186 | 2.7291 | 2.8925 | 2.9134 | 49 | 0.1078 | 1 | | |接受| 3.0959 | 3.1853 | 2.8925 | 2.9145 | 72 | 0.98238 | 1 | | | 23日接受| 2.9214 | 4.9396 | 2.8925 | 2.9156 | 94 | 0.25656 | 1 | | | 24日接受| 2.9183 | 4.0305 | 2.8925 | 2.9143 | 75 | 0.47048 | 1 | | | 25日接受| 2.9294 | 0.93283 | 2.8925 | 2.9079 | 20 | 0.27072 | 1 | | | 26日接受| 2.9509 | 1.2835 | 2.8925 | 2.9121 | 31日| 0.47806 | 1 | |27 | Accept | 2.9122 | 4.3254 | 2.8925 | 2.9129 | 102 | 0.1095 | 1 | | 28 | Accept | 2.9231 | 4.5009 | 2.8925 | 2.9141 | 109 | 0.044508 | 1 | | 29 | Accept | 2.9021 | 9.1891 | 2.8925 | 2.9025 | 264 | 0.062162 | 1 | | 30 | Accept | 2.9235 | 3.9706 | 2.8925 | 2.9028 | 116 | 0.067308 | 1 |

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

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

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

负载carsmall气缸=分类气缸;制造商=分类气缸;车型年份=分类气缸;X=表(加速度、气缸、排量、马力、制造商、,...Model_Year、重量、MPG);

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

numCylinders=numel(类别(圆柱体))
numCylinders = 3
numMfg =元素个数(类别(有限公司))
numMfg=28
numModelYear =元素个数(类别(Model_Year))
numModelYear = 3

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

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

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

通过排列出包外的观察来估计预测器的重要性。并行执行计算。

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

用条形图比较估计值。

图;酒吧(imp);标题(“out - bag perised Predictor Importance Estimates”);ylabel (“估计”);包含(“预测”);甘氨胆酸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。默认情况下,boosting会生长树桩(即,一个节点具有一组叶子)。由于存在频率较小的类,因此树必须足够多叶,以便对少数类敏感。请将叶节点观测的最小数目指定为3。

tTree = templateTree (“MinLeafSize”, 20);t = templateEnsemble (“AdaBoostM1”、100、tTree“LearnRate”,0.1);

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

指定t作为ECOC多类模型的二元学习者。使用默认的一对一编码设计进行培训。

Mdl = fitcecoc (X, Y,“学习者”t);
  • Mdl是一个分类多级模型。

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

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

您可以通过使用下面的方法来验证二进制学习者中是否包含一个不是残桩的弱学习者视图

视图(Mdl.BinaryLearners {1} .Trained {1},“模式”“图”

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

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

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

输入参数

全部崩溃

名称-值参数

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

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

全部崩溃

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

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

例子:“MaxNumSplits”,5

数据类型:|

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

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

对于boost和bagged决策树,默认值是“关闭”。对于ECOC模型中的决策树二进制学习器,默认值为“上”

例子:“MergeLeaves”,“上”

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

对于boost和bagged决策树,默认值是1对分类和5回归。对于ECOC模型中的决策树二叉学习器,默认为1

例子:“MinLeafSize”,2

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

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

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

例子:“MinParentSize”4

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

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

要重现随机选择,必须使用rng并指定“重现”,真的

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

例子:“NumVariablesToSample”,3

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

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

价值 描述
“allsplits”

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

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

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

提示

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

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

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

  • 的值不影响预测速度“预测器选择”

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

例子:“PredictorSelection”、“弯曲”

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

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

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

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

例子:“删除”,“上”

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

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

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

例子:“PruneCriterion”、“杂质”

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

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

例子:“重现”,真的

数据类型:逻辑

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

  • 分类树:

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

    • “两个”二人法则

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

  • 回归树:

    • mse的均方误差(默认)

例子:“分裂标准”,“偏差”

代理项决策拆分标志,指定为逗号分隔的对,由“代孕”其中一个“关闭”“上”“全部”,或正整数值。

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

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

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

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

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

例子:“代理”和“开”

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

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

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

提示

虽然t推断类型从所提供的配件功能中,当设置类型

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

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

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

数据类型:字符|字符串

只适用于分类树

全部崩溃

一种在分类预测器上寻找具有参数的数据的最佳分割的算法C数据和类别K≥3个类,指定为逗号分隔对,由“AlgorithmForCategorical”下面是其中之一。

价值 描述
“准确” 考虑所有2C1- 1的组合。
“向左拉” 开始所有C类别在右边的分支。考虑将每个类别移动到左分支,因为它实现了最小的杂质K其余类别中的类。从这个顺序中,选择杂质最低的分裂。
主成分分析的 使用加权协方差矩阵(中心类概率矩阵)的第一主成分与该类别的类概率向量之间的内积来计算每个类别的分数。C- 1分裂。
“OVAbyClass” 开始所有C类别在右边的分支。对于每个类,根据它们对该类的可能性对类别进行排序。对于第一类,考虑将每个类别按顺序移动到左分支,在每次移动时记录杂质标准。在其余的课程中重复。从这个顺序中,选择杂质最小的分裂。

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

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

例子:“分类算法”,“PCA”

拆分节点中的最大类别级别,指定为逗号分隔的对“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在命令窗口中,所有未指定的选项都将显示为空([]).但是,在训练期间,软件会用相应的默认值替换空选项。

算法

  • 以适应最大数分裂,软件分割当前的所有节点,然后统计分支节点的数量。层是距离根节点等距离的节点集。分支节点数量超过最大数分裂,则软件按此程序运行。

    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。分类与回归树.佛罗里达州博卡拉顿:CRC出版社,1984。

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

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

[4] 分类树的分裂选择方法Statistica中央研究院, 1997年第7卷,第815-840页。

介绍了R2014a