templateTree

创建决策树模板

描述

例子

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

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

例子

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

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

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

例子

全部收缩

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

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

加载fisheriris

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

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

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

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

Mdl = fitcensemble(量、种类、'方法',“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);

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

  • 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 =大小(1台);m = floor(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:numLRJ = 1:numMNS吨= templateTree('MaxNumSplits',maxNumSplits(J),“代孕”,“上”);MDL {J,K} = fitrensemble(TBL,“英里”,'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轮(numel(maxNumSplits)/ 2)numel(maxNumSplits)];数字;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,分钟(分钟(误差(:,mnsPlot(K),:)))。* [1 1],'--k')h.YLim = [10 50];包含(树木的数量)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);流(“\ n分钟。MSE =%0.5F”,minErr)
闵。MSE = 17.00516
流(“\ nOptimal参数值:\ nNum。树= % d ',idxNumTrees);
最佳参数值:民。树木= 38
流('\ nMaxNumSplits =%d \ nLearning率=%0.2F \ N',...maxNumSplits(idxMNS),learnRate(idxLR))
maxnumsplit = 4学习率= 0.10

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

tFinal = templateTree ('MaxNumSplits'maxNumSplits (idxMNS),“代孕”,“上”);MdlFinal = fitrensemble(TBL,“英里”,'NumLearningCycles',idxNumTrees,...“学习者”,T最终,“LearnRate”learnRate (idxLR))
MdlFinal = classreg.learning.regr。RegressionEnsemblePredictorNames: {'Cylinders' 'Displacement' 'Horsepower' 'Weight'} ResponseName: 'MPG' CategoricalPredictors: [] ResponseTransform: 'none' NumObservations: 94 NumTrained: 38 Method: 'LSBoost' LearnerNames: {'Tree'} ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.' FitInfo: [38×1 double] FitInfoDescription: {2×1 cell} Regularization: [] Properties, Methods

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 b| 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 b|最好的| 2.8895 | 0.31171 | 2.8895 bb5 2.8892 bb6 13 bb7 0.34786 | 1 |
| 27 |接受| 2.9215 | 2.9311 | 2.8895 bb5 2.8893 bb6 145 bb7 0.061728 | 1 |
| 28 |接受| 3.0827 | 1.5154 bb4 2.8895 bb5 2.8894 bb6 74 bb7 0.99934 bb8 1 |
| 29 |接受| 2.9234 | 1.7442 | 2.8895 bb5 2.8893 bb6 85 bb7 0.059513 | 1 |
|30 |接受|2.924 |4.437 |2.8895 |2.8894 |222 |0.031299 |1 |

__________________________________________________________优化完成。目的:对30例患者进行评价。总运行时间:70.0647秒。总目标函数评价时间:36.879最佳观察可行点:NumLearningCycles LearnRate MaxNumSplits _________________ _____ _______ 13 0.34786 1观察目标函数值= 2.8895估计目标函数值= 2.8894时间评估函数= 0.31171最佳估计可行点(根据模型):NumLearningCycles LearnRate MaxNumSplits _________________ _____ _______ 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 = numel(类别(MFG))
numMfg = 28
numModelYear = numel(类别(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(“估计”);包含(“预测指标”);H = GCA;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% 9 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 = templateEnsemble (“AdaBoostM1”、100、tTree“LearnRate”, 0.1);

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

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

MDL = fitcecoc(X,Y,“学习者”,T);
  • MDLClassificationECOC多类模式。

  • Mdl.BinaryLearners一个78乘1的单元数组是CompactClassificationEnsemble楷模。

  • Mdl.BinaryLearners {}Ĵ.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',要么“上”要么“关闭”

什么时候“上”,决策树合并的叶子从同一个父节点发起,并提供风险的总和值大于或等于与父节点相关的风险。什么时候“关闭”,决策树不会合并叶。

对于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)

对于boost和bagged决策树,默认值为2对分类和10回归。对于ECOC模型中的决策树二叉学习者,默认为10

例子:“MinParentSize”4

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

如果训练数据包括许多预测和您要分析预测的重要性,然后指定'NumVariablesToSample'作为'所有'。否则,软件可能无法选择一些预测,低估了它们的重要性。

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

对于ECOC模型中的增强决策树和决策树二叉学习者,默认为'所有'。袋装决策树默认为预测进行分类的数量,或预测回归人数的三分之一的平方根。

例子:“NumVariablesToSample”,3

数据类型:||字符|

算法用于选择在每个节点处的最佳分裂预测器,指定为逗号分隔的一对组成的'PredictorSelection'并在此表中的值。

描述
'allsplits'

标准CART—选择分割预测器,使分割标准在所有预测器的所有可能分割上获得最大化[1]

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

“弯曲”“交互曲率”,如果所有测试都产生p- 值大于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个代理分割决策树发现。

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

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

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

例子:“代孕”,“上”

数据类型:||字符|

对于分类树只

全部收缩

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

描述
'精确' 考虑所有2C-1- 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',1E-4

输出参数

全部收缩

用于分类或合适的用于训练的合奏回归决策树模板(升压和袋装决策树)或纠错输出编码(ECOC)多类模型,返回作为模板对象。通过tfitcensemble, 要么fitrensemble, 要么fitcecoc指定如何创建决策树的分类集成,回归集成,或ECOC模型,分别。

如果显示t在命令窗口中,然后将所有未指定的选项显示为空([])。但是,在训练过程中,软件会将空选项替换为相应的默认值。

算法

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

    1. 确定当前层需要许多分支节点如何是不分开的,这样会有最多MaxNumSplits分支节点。

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

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

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

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

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

    • MaxNumSplits+ 1个分支节点。

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

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

    • 算法不能在一个层内找到一个好的分割(即,修剪标准(见PruneCriterion),不提高层中的所有提议拆分)。这个事件的特殊情况是当所有节点都纯的(即,在节点的所有观察具有相同的类)。

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

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

  • 对生长决策树时选择分割的预测和节点分裂算法的详细信息,请参阅算法分类树算法回归树。

参考

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

[2]铜匠,D.,S. J.香,和J. R. M.霍斯金。“分区决策树标称属性。”数据挖掘和知识发现卷。3,1999年,第197-217。

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

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

介绍了在R2014a