templateTree

创建决策树模板

描述

例子

t= templateTree返回合适的用于训练的合奏默认决策树学习模板(升压和袋装决策树)或纠错输出编码(ECOC)多类模型。指定t作为使用学习者:

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

例子

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

例如,您可以指定用于查找一个分类预测的最佳分割,分割标准,或者选择为每个分割的预测变量数的算法。

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

例子

全部收缩

创建代理分割决策树模板,使用模板训练用样本数据的集合。

加载费舍尔的虹膜数据集。

加载fisheriris

创建树桩与替代拆分的决策树模板。

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

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

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

MDL = fitcensemble(MEAS,物种,'方法','AdaBoostM2',“学习者”,t)
MDL = classreg.learning.classif.ClassificationEnsemble ResponseName: 'Y' CategoricalPredictors:[]类名:{ 'setosa' '云芝' '锦葵'} ScoreTransform: '无' NumObservations:150 NumTrained:100方法: 'AdaBoostM2' LearnerNames:{“树”} ReasonForTermination:“完成训练周期的请求的数目后正常结束”。FitInfo:100X1双] FitInfoDescription:{2×细胞}属性,方法

显示在样品中-(resubstitution)误分。

L = resubLoss (Mdl)
L = 0.0333

创建提升回归树的合奏具有良好的预测性能的方法之一是使用调交叉验证决策树复杂程度。虽然寻找一个最佳的复杂程度,调整学习率以减少学习的周期数为好。

本实施例中,通过使用交叉验证选项(在手动发现最佳参数“KFold”名称 - 值对参数)和kfoldLoss功能。另外,您也可以使用'OptimizeHyperparameters'名称 - 值对的参数,以优化自动超参数。看到优化回归集成

加载carsmall数据集。选择的汽缸的数目,体积由缸,马力移位,和重量的燃料经济性的预测因子。

加载carsmallTBL =表(缸,排气量,马力,体重,MPG);

树的深度控制器为促进回归树的默认值是:

  • 10对于MaxNumSplits

  • 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(资源描述,“英里”,'CrossVal',“上”,'MergeLeaves',“关”,“MinParentSize”,1“代孕”,“上”);MdlStump = fitrtree(资源描述,“英里”,'MaxNumSplits',1'CrossVal',“上”,“代孕”,“上”);

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

  • 使用序列中的值更改最大拆分数 { 2 0 , 2 1 , , 2 } 是这样的: 2 不大于n- 1。

  • 打开替代分裂。

对于每一个变型中,调整用在集合{0.1,0.25,0.5,1}每个值学习率。

N =尺寸(TBL,1);米=地板(LOG2(N  -  1));learnRate = [0.1 0.25 0.5 1];numLR = numel(learnRate);maxNumSplits = 2 ^(0:米)。numMNS = numel(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(kflAll,铜牌,'制服',假);误差=重塑(cell2mat(errorCell),[numTrees numel(maxNumSplits)numel(learnRate)]);errorDeep = kfoldLoss(MdlDeep);errorStump = kfoldLoss(MdlStump);

情节如何交叉验证MSE表现为树木在合奏的数量增加。绘制相对于曲线在同一个情节学习速率,并绘制单独地块的不同树的复杂性水平。选择树复杂的水平,以情节的子集。

mnsPlot = [1 round(numel(maxnum) /2) numel(maxnum)];数字;对于K = 1:3副区(2,2,k)的积(挤压(错误(:,mnsPlot(K),:)),'行宽',2)轴保持甘氨胆酸h =;情节(h。XLim [errorDeep errorDeep),“。b”,'行宽',2)图(h.XLim,[errorStump errorStump]'-.r','行宽',2)图(h.XLim,分钟(分钟(误差(:,mnsPlot(K),:)))。* [1 1],'--k')h.YLim = [10 50];xlabel(“株数”)ylabel(“交叉验证MSE”)标题(的sprintf('MaxNumSplits =%0.3克',maxNumSplits(mnsPlot(K))))保持结束hL =传奇([cellstr num2str (learnRate ','学习率=%0.2F'));“深树”;“树桩”;“闵。MSE”]);hL.Position (1) = 0.6;

每个曲线包含最少交叉验证MSE处出现的在合奏树木的最佳数目。

识别率最低MSE整体分裂的最大数,株数,学习率。

[minErr, minErrIdxLin] = min(错误(:));[idxNumTrees, idxMNS idxLR] = ind2sub(大小(错误),minErrIdxLin);流(“\ nMin。MSE = % 0.5 f 'minErr)
闵。MSE = 17.00516
流(“\ nOptimal参数值:\ nNum。树木=%d”,idxNumTrees);
最优参数值:Num. Trees = 38
流('\ nmaxnum= %d\nLearning Rate = %0.2f\n',maxNumSplits(idxMNS),learnRate(idxLR))
MaxNumSplits = 4学习率= 0.10

创建基于最佳超参数和整个训练集的预测合奏。

tFinal = templateTree ('MaxNumSplits',maxNumSplits(idxMNS),“代孕”,“上”);MdlFinal = fitrensemble(TBL,“英里”,'NumLearningCycles',idxNumTrees,“学习者”tFinal,'LearnRate'learnRate (idxLR))
MdlFinal = classreg.learning.regr.RegressionEnsemble PredictorNames:{ '缸' '位移' '马力' '体重'} ResponseName: 'MPG' CategoricalPredictors:[] ResponseTransform: '无' NumObservations:94 NumTrained:38方法: 'LSBoost'LearnerNames:{“树”} ReasonForTermination:“完成训练周期的请求的数目后正常结束”。FitInfo:[38×1双] FitInfoDescription:{2×1个细胞}正则化:[]的属性,方法

MdlFinalRegressionEnsemble。要预测一辆汽车的燃油经济性,要考虑到气缸的数量、气缸所取代的体积、马力和重量,你可以通过预测数据和MdlFinal预测

代替通过使用交叉验证选项手动搜索最佳值的(“KFold”)和kfoldLoss函数,你可以用'OptimizeHyperparameters'名称-值对的论点。当你指定'OptimizeHyperparameters',软件会自动找到基于贝叶斯优化的最佳参数。通过使用所获得的最佳值'OptimizeHyperparameters'可以使用手动搜索获得的那些不同。

t = templateTree (“代孕”,“上”);mdl = fitrensemble(资源描述,“英里”,“学习者”t'OptimizeHyperparameters'{'NumLearningCycles','LearnRate','MaxNumSplits'})
| ==================================================================================================================== ||ITER |EVAL |目的:|目的|BestSoFar |BestSoFar |NumLearningC- |LearnRate | MaxNumSplits | | | result | log(1+loss) | runtime | (observed) | (estim.) | ycles | | | |====================================================================================================================| | 1 | Best | 3.3985 | 0.67095 | 3.3985 | 3.3985 | 26 | 0.072054 | 3 |
|2 |接受|6.0976 |4.1242 |3.3985 |3.5578 |170 |0.0010295 |70 |
| 3 |最佳| 3.2868 | 5.9884 | 3.2868 | 3.287 | 273 | 0.61026 | 6 |
| 4 |接受| 6.1839 | 1.6681 | 3.2868 | 3.2868 | 80 | 0.0016871 | 1 |
| 5 |最佳| 3.027 | 0.35792 | 3.027 | 3.0275 | 14 | 0.21079 | 85 |
| 6 |接受| 3.0553 | 0.27277 | 3.027 | 3.0323 | 10 | 0.25194 | 19 |
|7 |接受|3.3577 |0.26363 |3.027 |3.0486 |10 |0.17901 |4 |
|8 |接受|3.0491 |0.27427 |3.027 |3.0328 |10 |0.28136 |98 |
|9 |接受|3.0735 |0.27294 |3.027 |3.0288 |10 |0.25459 |99 |
|10 |接受|3.1252 |1.3338 |3.027 |3.0403 |58 |0.25562 |9 |
|11 |接受|3.0613 |0.28222 |3.027 |3.0325 |10 |0.26363 |99 |
|12 |接受|3.3299 |0.27812 |3.027 |3.0312 |10 |0.96285 |93 |
|13 |接受|5.2994 |0.2922 |3.027 |3.0301 |11 |0.052366 |93 |
|14 |接受|3.0946 |0.26976 |3.027 |3.0313 |10 |0.49134 |92 |
| 15 |接受| 3.2499 | 2.7489 | 3.027 | 3.0287 | 119 | 0.27613 | 49 |
| 16 |接受| 3.1039 | 0.26627 | 3.027 | 3.0268 | 10 | 0.90888 | 1 |
|17 |最佳|2.8971 |0.40282 |2.8971 |2.8975 |17 |0.35714 |1 |
|18 |接受|4.5501 |0.2607 |2.8971 |2.897 |10 |0.097401 |4 |
|19 |接受|2.923 |1.2505 |2.8971 |2.897 |60 |0.088079 |1 |
|20 |接受|2.9257 |0.6109 |2.8971 |2.897 |28 |0.17524 |1 |
| ==================================================================================================================== ||ITER |EVAL |目的:|目的|BestSoFar |BestSoFar |NumLearningC- |LearnRate | MaxNumSplits | | | result | log(1+loss) | runtime | (observed) | (estim.) | ycles | | | |====================================================================================================================| | 21 | Accept | 3.0642 | 0.63736 | 2.8971 | 2.8968 | 30 | 0.95959 | 1 |
|22 |接受|3.0486 |0.9568 |2.8971 |2.8966 |41 |0.11378 |91 |
| 23 |接受| 2.9682 | 1.6611 | 2.8971 | 2.8965 | 81 | 0.041244 | 1 |
| 24 |接受| 2.934 | 0.4262 | 2.8971 | 2.8982 | 19 | 0.25643 | 1 |
|25 |接受|2.9839 |0.36893 |2.8971 |2.8995 |16 |0.58473 |1 |
| 26 |最佳| 2.8895 | 0.31171 | 2.8895 | 2.8892 | 13 | 0.34786 | 1 |
|27 |接受|2.9215 |2.9311 |2.8895 |2.8893 |145 |0.061728 |1 |
| 28 |接受| 3.0827 | 1.5154 | 2.8895 | 2.8894 | 74 | 0.99934 | 1 |
|29 |接受|2.9234 |1.7442 |2.8895 |2.8893 |85 |0.059513 |1 |
|30 |接受|2.924 |4.437 |2.8895 |2.8894 |222 |0.031299 |1 |

__________________________________________________________优化完成。30 MaxObjectiveEvaluations达到。总功能评价:30总运行时间:70.0647秒。总目标函数评估时间:36.879最佳观察到的可行点:NumLearningCycles LearnRate MaxNumSplits _________________ _________ ____________ 13 0.34786 1个中观察到的目标函数值= 2.8895估计目标函数值= 2.8894函数求时间= 0.31171最佳估计可行(根据型号)点:NumLearningCycles LearnRateMaxNumSplits _________________ _________ ____________ 13 0.34786 1估计目标函数值= 2.8894估计函数评估时间= 0.31548
MDL = classreg.learning.regr.RegressionEnsemble PredictorNames:{ '缸' '位移' '马力' '体重'} ResponseName: 'MPG' CategoricalPredictors:[] ResponseTransform: '无' NumObservations:94个HyperparameterOptimizationResults:[1×1 BayesianOptimization]NumTrained:13方法:“LSBoost” LearnerNames:{“树”} ReasonForTermination:“完成训练周期的请求的数目后正常结束”。FitInfo:[13×1双] FitInfoDescription:{2×1个细胞}正则化:[]的属性,方法

加载carsmall数据集。考虑到预测给予其加速度,汽缸,发动机排量,马力,制造商,车型年份和重量数的汽车的平均燃油经济性的典范。考虑气缸,MFGModel_Year作为分类变量。

加载carsmall气缸=分类(缸);MFG =分类(cellstr(MFG));Model_Year =分类(Model_Year);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 ('PredictorSelection',“弯曲”,“代孕”,“上”,“重现”,真正的);%对于随机预测选择的重现Mdl = fitrensemble (X,“英里”,'方法',“包”,'NumLearningCycles',500,“学习者”t);

通过置换出球袋观察估计预测重要措施。并行执行计算。

选择= statset ('UseParallel',真正的);小鬼= oobPermutedPredictorImportance(MDL,“选项”,选项);
开始使用“本地”轮廓平行池(parpool)......连接到并行池(工号:6)。

比较用柱状图的估计。

数字;栏(IMP);标题(“走出球袋轮排的预测变量重要性估计”);ylabel(“估计”);xlabel(“预测器”);甘氨胆酸h =;h.XTickLabel = Mdl.PredictorNames;h.XTickLabelRotation = 45;h.TickLabelInterpreter =“没有”;

在这种情况下,Model_Year是最重要的预测指标,其次是气缸。将这些结果与in的结果进行比较预测因素的重要性评估

创建使用合奏模板fitcecoc

加载心律失常数据集。

加载心律失常平板状(分类(Y));
价值计算百分比1 245 54.20% 2 44 9 73% 3 3 3 3 3 3 3 3 3 32 22 25 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 54 87%
RNG(1);%的再现性

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

创建分类树的一个AdaBoostM1合奏的模板,并指定要使用100个学习者的0.1的收缩率。默认情况下,升压生长树桩(即,具有一组叶片中的一个节点)。由于有小的频率班,树木必须是叶菜足以是少数类敏感。指定至3叶节点观测的最小数目。

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

模板对象的所有属性,除了空方法类型,以及函数调用中名称-值对参数值的对应属性。当你通过t在训练功能,该软件填补了各自的默认值的空属性。

指定t作为一个ECOC多类模型二进制学习者。培养使用默认的一个抗一个编码设计。

MDL = fitcecoc(X,Y,“学习者”t);
  • MDLClassificationECOC多级模型。

  • Mdl.BinaryLearners是一个78×1单元阵列CompactClassificationEnsemble楷模。

  • Mdl.BinaryLearners {j} .Trained是一个100×1单元阵列CompactClassificationTree模型,用于j= 1,…,78。

您可以使用以下命令来验证其中一个二进制学习者包含了一个不是残差的弱学习者视图

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

显示在样品中-(resubstitution)误分。

L = resubLoss (Mdl,'LossFun',“classiferror”)
L = 0.0575

输入参数

全部收缩

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。名称是参数的名称和是对应的值。名称必须出现引号内。您可以按照任何顺序指定多个名称和值对参数名1,值1,...,NameN,值N

例:'代孕', '上', 'NumVariablesToSample', '所有'指定与代理的分裂,并在每个分割使用所有可用预测的模板。

对于分类树和回归树

全部收缩

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

对于袋装决策树和决策树二进制学习者在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”和正整数值。树中的每个分支节点至少有MinParentSize观察结果。如果你两者都提供MinParentSizeMinLeafSize,决策树使用给出更大叶子的设置:MinParentSize = MAX(MinParentSize,2 * MinLeafSize)

对于增强的和袋装的决策树,缺省值是2对分类和10回归。对于决策树二进制学习者在ECOC模式,默认为10

例:“MinParentSize”4

预测结果的编号,以在随机为每个分割选择,指定为逗号分隔的一对组成的“NumVariablesToSample”和正整数值。或者,你可以指定'所有'利用一切可以利用的预测。

如果训练数据包含许多预测因子,并且希望分析预测因子的重要性,则指定“NumVariablesToSample”'所有'。否则,软件可能无法选择一些预测,低估了它们的重要性。

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

为了提高决策树和决策树二进制学习者在ECOC模式,默认为'所有'。袋装决策树默认为预测进行分类的数量,或预测回归人数的三分之一的平方根。

例:'NumVariablesToSample',3

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

用于在每个节点上选择最佳分割预测器的算法,指定为由'PredictorSelection'并在此表中的值。

描述
'allsplits'

标准车 - 选择分割预测,超过所有预测的所有可能分割最大化的分割标准增益[1]

“弯曲” 曲率测试 - 选择分割预测,最大限度地减少了p-VALUE的每个预测和响应之间的独立性的卡方检验[3][4]。训练速度与标准车相似。
“interaction-curvature” 交互作用测试-选择最小的分裂预测器p-各预测因子与响应之间的独立性的卡方检验值,从而最小化p每对预测和响应的之间的独立性的卡方检验的-VALUE[3]。训练速度可以比标准的车慢。

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

提示

  • 不推荐用于提高决策树的曲率和互动测试。要培养提高树木具有更高的准确度的集合,使用标准CART代替。

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

  • 使用标准的CART成长树是不能预测变量的相互作用敏感。而且,这种树是不太可能找出许多不相关的预测比交互测试的应用程序的存在很重要的变量。因此,考虑到预测的相互作用,并确定在许多不相关变量的存在重要变量,指定的互动测试[3]

  • 预测速度是由的值不受影响'PredictorSelection'

有关如何详细信息templateTree选择分裂的预测,见节点分离规则(分类),节点分离规则(回归)选择拆分预测值选择技术

例:'PredictorSelection', '弯曲'

标记来估计修剪后的子树的最优序列,指定由逗号分隔的对组成'修剪'“上”要么“关”

如果修剪“上”然后,该软件在不进行修剪的情况下对分类树学习者进行训练,但在集成或ECOC模型的决策树二元学习者中为每个学习者估计修剪后的子树的最优序列。否则,该软件将训练分类树学习器,而不需要估计修剪后的子树的最优序列。

对于推动和袋装决策树,默认为“关”

对于决策树二进制学习者在ECOC模式,默认为“上”

例:“删除”,“上”

修剪标准,指定为逗号分隔的一对组成的“PruneCriterion”和删除准则适用于树类型。

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

  • 对于回归树,你只能指定'MSE'(默认)。

例:'PruneCriterion', '杂质'

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

如果“NumVariablesToSample”不是'所有',那么软件选择预测随机为每个分割。要重现随机选择,你必须指定“重现”,真并通过使用设定的随机数发生器的种子RNG。注意,设置“重现”真正可以降低训练速度。

例:“重现”,真

数据类型:逻辑

分割条件,指定为由逗号分隔的对组成'SplitCriterion'和拆分条件适用于树类型。

  • 分类树:

    • gdi的对于Gini的多样性指数(默认值)

    • “两分”对于两分规则

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

  • 对于回归树:

    • 'MSE'均方误差(默认值)

例:'SplitCriterion', '越轨'

代理决策分割标志,指定为逗号分隔的对“代孕”和一个“关”,“上”,'所有',或正整数。

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

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

  • 当设置为'所有',决策树找到所有的替代分裂在每个分支节点。该'所有'设置会消耗大量的时间和内存。

  • 当设置为正整数值,所述决策树的发现至多指定数目在每个分支节点替代拆分的。

使用替代拆分,以提高预测与缺失值数据的准确性。此设置,您还可以计算预测变量之间的关联预测的措施。

例:“代孕”,“上”

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

对于分类树只

全部收缩

算法找到一个分类预测数据与最佳分裂C类别数据和K≥3个类,指定由逗号分隔的对组成'AlgorithmForCategorical'和下面的一个。

描述
“准确” 考虑所有2C1- 1种组合。
'PullLeft' 开始所有C类别右侧的分支。考虑每个类别移动到左分支,因为它实现了最小杂质的K剩余的类别中的类。从这个序列,选择具有最低的杂质分离。
'PCA' 计算每个类别使用加权协方差矩阵的第一主成分之间的内积的得分(的中心类概率矩阵)和类概率的该类别的向量。排序得分按升序排列,并考虑所有C- 1个分裂。
'OVAbyClass' 开始所有C类别右侧的分支。对于每个类,订购基于他们该类概率的类别。对于第一类,考虑每个类别向左移动分公司顺序,记录在每一个举动杂质标准。重复其余类。从这个序列,选择具有最小的杂质分离。

该软件选择的算法使用已知数量的类和一个分类预测的水平每个分割的最优子集。对于两个类,它总是进行精确搜索。使用'AlgorithmForCategorical'指定特定算法的名称-值对参数。

有关更多细节,请参见拆分分类预测在分类树

例:'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在命令窗口中,然后将所有未指定的选项显示为空([])。但是,在培训期间,软件会用相应的默认值替换空选项。

算法

  • 以适应MaxNumSplits,软件将当前所有节点分割,然后计算分支节点的数目。的层是集合的,从根节点等距节点。如果分支节点的数目超过MaxNumSplits,那么软件遵循这个程序。

    1. 确定在当前层中有多少分支节点需要不分割,以便最多可以有多少分支节点MaxNumSplits分支节点。

    2. 排序的杂质收益的分支节点。

    3. 不分割最不成功的分支的期望数目。

    4. 返回迄今为止种植的决策树。

    这个过程的目的是最大限度地生产平衡树。

  • 该软件分割分支由层节点层,直到这些事件中的至少一个发生。

    • MaxNumSplits+ 1个分支节点。

    • 甲提出分裂引起的观察在至少一个分支节点的数目成比少MinParentSize

    • 甲提出分裂引起的观察在至少一个叶节点的数目成比少MinLeafSize

    • 该算法不能找到一个层内的良好的分割(即,删除准则(见PruneCriterion),并没有改善所有建议的分裂在一层)。该事件的一个特殊情况是所有节点都是纯的(即所有节点都是纯的)。,则节点中的所有观测值都具有相同的类)。

    • 对于价值“弯曲”要么“interaction-curvature”PredictorSelection,所有测试产生p- 值大于0.05。

    MaxNumSplitsMinLeafSize在它们的默认值不影响分裂。因此,如果你设置'MaxNumSplits',然后拆分可能的值设置为阻止因MinParentSize之前MaxNumSplits分裂发生。

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

参考

[1] Breiman, L., J. Friedman, R. Olshen, C. Stone。分类与回归树。佛罗里达州Boca Raton:CRC出版社,1984年。

[2] Coppersmith, D., S. J. Hong,和J. R. M. Hosking。“在决策树中划分名义属性。”数据挖掘和知识发现卷。3,1999年,第197-217。

[3]蕙,W.Y.“回归树不带偏见的变量选择和互动检测。”国家统计报卷。12,2002年,第361-386。

[4]蕙,W.Y.和Y.S.施。“拆分选择方法对于分类树”。国家统计报, 1997年第7卷,第815-840页。

介绍了在R2014a