主要内容

提高分类树和回归树

您可以调整树木通过设置名称-值对fitctreefitrtree。这一节的其余部分描述如何确定树的质量,如何决定哪些名称-值对集合,以及如何控制树的大小。

检查Resubstitution错误

Resubstitution错误之间的区别是训练数据和预测的响应响应的树使基于输入训练数据。如果resubstitution误差高,你不能指望树的预测是好的。但是,在低resubstitution错误并不能保证很好的预测新数据。Resubstitution错误往往是一个过于乐观的估计预测误差的新数据。

分类树Resubstitution错误

这个例子展示了如何检查resubstitution错误的分类树。

费雪的虹膜数据加载。

负载fisheriris

火车一个默认使用整个数据集分类树。

Mdl = fitctree(量、种类);

检查resubstitution错误。

resuberror = resubLoss (Mdl)
resuberror = 0.0200

树把几乎所有的费舍尔虹膜数据正确。

交叉验证

为了更好地了解你的树的预测精度的新数据,交叉验证树。默认情况下,交叉验证将训练数据随机分成十个部分。火车10新树,每一个九部分的数据。然后检查每个新树的预测准确性的数据没有包含在训练那棵树。该方法给出了一个估计,预测的准确性产生的树,因为它在新数据测试的新树。

交叉验证回归树

这个例子展示了如何检查resubstitution和交叉验证的准确性预测回归树里程的基础上carsmall数据。

加载carsmall数据集。考虑加速度、位移、马力、和重量MPG的预测因子。

负载carsmallX =(加速度位移马力重量);

使用的所有观测回归树生长。

rtree = fitrtree (X, MPG);

样本计算的错误。

resuberror = resubLoss (rtree)
resuberror = 4.7188

回归树的resubstitution损失均方误差。产生的值表示一个典型的预测误差的树是根号4.7,或者多一点2。

估计交叉验证MSE。

rng“默认”;cvrtree = crossval (rtree);cvloss = kfoldLoss (cvrtree)
cvloss = 23.5706

旨在损失几乎是25,意思是一个典型的树新数据的预测误差约为5。这表明旨在损失通常高于简单resubstitution损失。

选择分割预测选择技术

标准CART算法倾向于选择有许多连续预测的水平。有时候,这样的选择可以假,也可以掩盖更重要的预测因素有更少的层级,如分类预测。即predictor-selection过程在每个节点是有偏见的。同时,标准车往往错过了重要的之间的相互作用对预测和响应。

减轻选择性偏差,提高检测重要的交互,您可以指定使用曲率或交互测试使用“PredictorSelection”名称-值对的论点。使用曲率或交互测试的优势是生产预测重要性估计比标准的车。

这个表总结了predictor-selection技金宝app术支持。

技术 “PredictorSelection”价值 描述 训练速度 当指定
标准车[1] 默认的

选择最大化的分割预测拆分条件获得超过所有可能的分裂的预测因子。

基线进行比较

指定如果任何这些条件是正确的:

  • 所有的预测都是连续的

  • 预测重要性分析的目标

  • 推动决策树

弯曲测试[2][3] “弯曲” 选择分割预测,最小化p卡方测试的价值每个预测和响应之间的独立性。 与标准的车

指定如果任何这些条件是正确的:

  • 预测变量是异构的

  • 预测是一个分析目标的重要性

  • 增强树的解释

交互测试[3] “interaction-curvature” 选择分割预测,最小化了p卡方测试的价值每个预测和响应之间的独立(即曲率进行测试),最小化了p卡方测试的价值每一对预测和响应之间的独立性。 低于标准车,特别是当数据集包含了许多预测变量。

指定如果任何这些条件是正确的:

  • 预测变量是异构的

  • 你怀疑对预测和响应之间的联系

  • 预测是一个分析目标的重要性

  • 增强树的解释

为更多的细节在预测选择技术:

控制深度或“多叶”

当你种植一个决策树,考虑它的简单性和预测能力。深树和许多树叶在训练数据通常是高度准确的。然而,树是相对精度不能保证显示在一个独立的测试集。绿叶树往往训练过度(或overfit),和其测试精度往往远低于其培训(resubstitution)的准确性。相比之下,一个浅树不达到训练精度高。但浅树可以更强大——它的训练精度可能接近一个代表性的测试集,一个浅树很容易解释。如果你没有足够的数据进行训练和测试,估计树交叉验证的准确性。

fitctreefitrtree有三个名称-值对参数控制生成的决策树的深度:

  • MaxNumSplits——最大数量的分支节点分裂MaxNumSplits每棵树。设置一个较大的值MaxNumSplits深树。默认值是大小(X, 1) - 1

  • MinLeafSize至少,每片叶子MinLeafSize观察。设立小的值MinLeafSize树木的深处。默认值是1

  • MinParentSize——树中的每个分支节点至少有MinParentSize观察。设立小的值MinParentSize树木的深处。默认值是10

如果您指定MinParentSizeMinLeafSize,学习者使用的设定收益率大的树木叶子(即。浅树):

MinParent = max (MinParentSize 2 * MinLeafSize)

如果你提供MaxNumSplits,软件将树直到三分裂标准之一是满意。

另一种方法控制树的深度,明白了修剪

选择合适的树的深度

这个例子展示了如何控制决策树的深度,以及如何选择合适的深度。

加载电离层数据。

负载电离层

生成一个指数间隔设置的值10通过One hundred.代表每个叶节点最小数量的观察。

树叶= logspace (1、2、10);

创建旨在分类树电离层数据。指定使用最小叶大小每棵树生长树叶

rng (“默认”)N =元素个数(树叶);呃= 0 (N, 1);n = 1: n t = fitctree (X, Y,“CrossVal”,“上”,“MinLeafSize”树叶(n));犯错(n) = kfoldLoss (t);结束情节(树叶、犯错);包含(“敏叶大小”);ylabel (“旨在错误”);

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。

最好的叶大小之间20.50观察每叶。

比较算法树至少有40观察每叶用默认的树,它使用10每个父节点和观察1观察每片叶子。

DefaultTree = fitctree (X, Y);视图(DefaultTree,“模式”,“图”)

图分类树查看器包含一个坐标轴对象和其他对象类型uimenu uicontrol。坐标轴对象包含60线类型的对象,文本。

OptimalTree = fitctree (X, Y,“MinLeafSize”,40);视图(OptimalTree,“模式”,“图”)

图分类树查看器包含一个坐标轴对象和其他对象类型uimenu uicontrol。坐标轴对象包含12线类型的对象,文本。

resubOpt = resubLoss (OptimalTree);lossOpt = kfoldLoss (crossval (OptimalTree));resubDefault = resubLoss (DefaultTree);lossDefault = kfoldLoss (crossval (DefaultTree));resubOpt、resubDefault lossOpt lossDefault
resubOpt = 0.0883
resubDefault = 0.0114
lossOpt = 0.1054
lossDefault = 0.1054

树的算法要小得多,给更高resubstitution错误。然而,它给类似旨在数据的准确性。

修剪

修剪优化树深度(叶茂盛)通过合并在同一个树枝叶子。控制深度或“多叶”描述了一个方法,选择最优的树的深度。不像在这部分中,您不需要种植新树每个节点的大小。相反,深树生长,并删除您选择的水平。

修剪树在命令行中使用修剪(分类)或方法修剪方法(回归)。另外,修剪树与树查看器交互:

视图(树,“模式”,“图”)

修剪树,树修剪必须包含一个序列。默认情况下,这两个fitctreefitrtree计算一个修剪树施工顺序。如果你构建的树“删除”名称-值对将“关闭”,或者如果你修剪树一个较小的水平,修剪树不包含完整的序列。生成完整的修剪与序列修剪(分类)或方法修剪方法(回归)。

删除一个分类树

这个示例创建一个分类树电离层数据,并清除它一个良好的水平。

加载电离层数据:

负载电离层

构造一个默认分类树的数据:

树= fitctree (X, Y);

在交互式查看器查看树:

视图(树,“模式”,“图”)

图分类树查看器包含一个坐标轴对象和其他对象类型uimenu uicontrol。坐标轴对象包含60线类型的对象,文本。

找到最优修剪水平通过最小化旨在损失:

[~,~,~,bestlevel] = cvLoss(树,“子树”,“所有”,“TreeSize”,“最小值”)
bestlevel = 6

修剪树的水平6:

视图(树,“模式”,“图”,“删除”6)

图分类树查看器包含一个坐标轴对象和其他对象类型uimenu uicontrol。坐标轴对象包含12线类型的对象,文本。

另外,使用交互式窗口修剪树木。

修剪树的树算法是一样的“选择合适的树深度”的例子。

“TreeSize”“本身”(默认)找到最大的树修剪水平误差不超过误差的最佳水平+一个标准差:

[~,~,~,bestlevel] = cvLoss(树,“子树”,“所有”)
bestlevel = 6

在这种情况下,水平是相同的设置“TreeSize”

修剪树木为其他目的使用它:

树=修剪(树,“水平”6);视图(树,“模式”,“图”)

图分类树查看器包含一个坐标轴对象和其他对象类型uimenu uicontrol。坐标轴对象包含12线类型的对象,文本。

引用

[1]Breiman, L。,J. H. Friedman, R. A. Olshen, and C. J. Stone.分类和回归树。博卡拉顿FL:查普曼&大厅,1984。

[2]Loh,施W.Y.和屈服强度。“分裂选择分类树的方法。”Statistica中央研究院7卷,1997年,页815 - 840。

[3]Loh, W.Y.“回归树与公正的变量选择和交互检测。”Statistica中央研究院12卷,2002年,页361 - 386。

另请参阅

|||||||

相关的话题