主要内容

resubLoss

班级:ClassificationTree

补偿分类错误

语法

L = resubLoss(树)
l = Resubloss(树,名称,值)
L = resubLoss(树的子树,subtreevector)
(L, se) = resubLoss(树的子树,subtreevector)
[L, se, NLeaf] = resubLoss(树的子树,subtreevector)
[l,se,nleaf,bestlevel] = Resubloss(树,'子树',子到rerevector)
[l,...] = resubloss(树,“子树”,subtreevector,名称,值)

描述

l= RERUBLOS(返回重新替换损失,即为该数据计算的损失fitctree用来创造

l= RERUBLOS(名称,值返回由一个或多个指定的附加选项的损失名称,值对论点。您可以以任何顺序指定多个名称值对参数Name1, Value1,…,的家

l= RERUBLOS(“子树”,子到rereevector)返回修剪序列中树的分类错误向量subtreevector

lSE.] = RERUBLOS(“子树”,子到rereevector)返回分类误差的标准误差向量。

lSE.NLeaf] = RERUBLOS(“子树”,子到rereevector)返回修剪序列树中叶节点数量的向量。

lSE.NLeafBestlevel.] = RERUBLOS(“子树”,子到rereevector)属性中定义的最佳修剪级别TreeSize名称值对。默认情况下,Bestlevel.是在最小损失的一个标准偏差内丢失的修剪水平。

[l,...] = resubloss(“子树”,子到rereevector,名称,值返回由一个或多个指定的附加选项的损失统计信息名称,值对论点。您可以以任何顺序指定多个名称值对参数Name1, Value1,…,的家

输入参数

全部展开

构造的分类树fitctree

名称值对参数

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

损失函数,指定为逗号分隔对组成'lockfun'以及一个内置的丢失函数名或函数句柄。

  • 下表列出了可用的损耗函数。使用其对应的字符向量或字符串标量指定一个。

    价值 描述
    “binodeviance” 二项式偏差
    “classiferror” 小数点被错误分类
    “指数” 指数损失
    '合页' 铰链的损失
    分对数的 物流损失
    “mincost” 最小的预期误分类成本(用于后验概率的分类分数)
    “二次” 二次损失

    “mincost”适用于后验概率的分类评分。默认情况下,分类树将后续概率作为分类分数(参见预测).

  • 使用函数句柄表示法指定自己的函数。

    假设n是观测的次数XK为不同类别的数目(numel(tree.classnames)).您的函数必须有这个签名

    lossvalue =损失义务(C、S、W、成本)
    地点:

    • 输出参数失值是一个标量。

    • 选择函数名(损失义务).

    • C是一个n——- - - - - -K具有行的逻辑矩阵,指示相应观察所属的哪个类。中的列顺序对应于类的顺序树.Classnames.

      构造C通过设置c(p,q)= 1如果观察p是在课堂上每行。设置行的所有其他元素p0

    • 年代是一个n——- - - - - -K分类分数的数值矩阵。中的列顺序对应于类的顺序树.Classnames.年代是一个矩阵的分类分数,类似于输出预测

    • W是一个n- 1个数字矢量重量的数字矢量。如果你通过了W,软件将它们的总和标准化1

    • 成本是一个K——- - - - - -K误分类代价的数值矩阵。例如,成本=(k) - 眼睛(k)指定0为正确的分类,和1误分类。

    使用以下命令指定函数“LossFun”@损失义务

有关损失函数的详细信息,请参见分类损失

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

名称,值与修剪子树相关联的参数:

修剪级别,指定为逗号分隔的对,由“子树”一个非负整数的升序或向量“所有”

如果指定向量,则所有元素必须至少0最多马克斯(tree.PruneList)0表示完整的、未修剪的树马克斯(tree.PruneList)表示被完全修剪的树(即根节点)。

如果您指定“所有”,然后resubLoss操作所有的子树(即,整个修剪序列)。这个规范等同于使用0:max(tree.prunelist)

resubLoss李子的每一层子树,然后估计相应的输出参数。的大小子树确定某些输出参数的大小。

调用子树,属性PruneListPrunealpha.必须是不懈的。换句话说,成长通过设置“删除”,“上”,或修剪使用修剪

例子:“子树”,“所有”

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

树大小,指定为逗号分隔对,由'树化'以及下列值之一:

  • “本身”- - - - - -损失返回最高的修剪水平,在最小的一个标准偏差范围内损失(l+SE.,在那里lSE.涉及最小的价值子树).

  • “最小值”- - - - - -损失返回子树以最小的损耗,通常是最小的元素子树

输出参数

l

分类损失,矢量长度子树.错误的含义取决于其中的值权重LossFun

SE.

标准误差的损失,矢量的长度子树

NLeaf

被修剪的子树的叶子(终端节点)的数量,向量的长度子树

Bestlevel.

标量,其值依赖于标量TreeSize

  • TreeSize“本身”- - - - - -损失返回最高的修剪水平,在最小的一个标准偏差范围内损失(l+SE.,在那里lSE.涉及最小的价值子树).

  • TreeSize“最小值”- - - - - -损失返回子树以最小的损耗,通常是最小的元素子树

例子

全部展开

的重新替换分类错误电离层数据。

负载电离层树= fitctree (X, Y);L = resubLoss(树)
L = 0.0114.

未修剪的决策树往往会过度拟合。平衡模型复杂性和样本外性能的一种方法是对树进行修剪(或限制其生长),以使样本内和样本外性能都令人满意。

装载Fisher的Iris数据集。将数据分区为培训(50%)和验证(50%)集。

负载渔民n =尺寸(meas,1);RNG(1)%的再现性idxtrn = false(n,1);IDXTRN(RANDSAMPLE(n,round(0.5 * n)))= true;%培训设定逻辑指数idxval = idxtrn == false;%验证设置逻辑索引

使用培训集生长分类树。

Mdl = fitctree(量(idxTrn:),物种(idxTrn));

查看分类树。

视图(Mdl,“模式”“图”);

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

分类树有四个修剪水平。级别0是完整的未提出的树(显示)。等级3只是根节点(即,没有分割)。

检查除最高层次外的每个子树(或修剪层次)的训练样本分类错误。

m = max(Mdl.PruneList) - 1;trnLoss = resubLoss (Mdl,“子树”,0:m)
trnLoss =3×10.0267 0.0533 0.3067
  • 完整的,未修剪的树大约2.7%的训练观测错误分类。

  • 修剪到第一级的树误分类了5.3%的训练观察结果。

  • 被修剪到2级(即树桩)的树大约有30.6%的训练观测错误分类。

检查排除最高级别的每个级别的验证样本分类错误。

valLoss =损失(Mdl量(idxVal:),物种(idxVal),“子树”,0:m)
valLoss =3×10.0369 0.0237 0.3067
  • 完整的、未修剪的树误分类了大约3.7%的验证观察结果。

  • 树浸到1级错误分类约2.4%的验证观察。

  • 被修剪到2级(即树桩)的树误分类了约30.7%的验证观测结果。

为了平衡模型复杂性和样本外性能,可以考虑剪枝MDL.1级。

prunemdl = prune(mdl,“水平”1);视图(pruneMdl,“模式”“图”

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

更多关于

全部展开