主要内容

损失

描述

l=损失(资源描述ResponseVarName返回一个表示好程度的标量中的数据进行分类资源描述,当资源描述。ResponseVarName包含真实的分类。

计算损失时,损失中的类概率规范化Y用于训练的类概率,存储在之前的属性

l=损失(资源描述Y返回一个表示好程度的标量中的数据进行分类资源描述,当Y包含真实的分类。

l=损失(XY返回一个表示好程度的标量中的数据进行分类X,当Y包含真实的分类。

l=损失(___名称,值返回由一个或多个指定的附加选项的丢失名称,值对参数,使用任何前面的语法。例如,您可以指定损失函数或观测权重。

lseNLeafbestlevel] =损失(___也返回分类错误的标准错误向量(se),为修剪序列树中叶节点数的向量(NLeaf的最佳修剪水平TreeSize名称-值对(bestlevel).

输入参数

全部展开

训练过的分类树,指定为ClassificationTreeCompactClassificationTree模型对象。也就是说,是否返回经过训练的分类模型fitctree紧凑的

示例数据,指定为表。每一行的资源描述对应一个观察结果,每一列对应一个预测变量。可选地,资源描述可以包含用于响应变量和观察权重的附加列。资源描述必须包含用于训练的所有预测器.不允许多列变量和字符向量的单元格数组以外的单元格数组。

如果资源描述包含用于训练的响应变量,则不需要指定ResponseVarNameY

如果你训练中包含的样例数据表格,则此方法的输入数据也必须在表中。

数据类型:表格

要分类的数据,指定为数值矩阵。每一行的X表示一个观察结果,每一列表示一个预测器。X必须具有与用于训练的数据相同的列数X必须具有与元素数量相同的行数Y

数据类型:|

中指定为变量名的响应变量名资源描述.如果资源描述包含用于训练的响应变量,则不需要指定ResponseVarName

如果您指定ResponseVarName,则必须以字符向量或字符串标量的形式执行。例如,如果响应变量存储为资源描述。响应,然后将其指定为“响应”.的所有列资源描述,包括资源描述。ResponseVarName预测因子。

响应变量必须是类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。如果响应变量是字符数组,则每个元素必须对应数组中的一行。

数据类型:字符|字符串

类标签,指定为类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。Y必须与用于训练的分类类型相同,其元素的数量必须等于的行数X

数据类型:分类|字符|字符串|逻辑|||细胞

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

损失函数,指定为逗号分隔的对,由“LossFun”和内置的损失函数名或函数句柄。

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

    价值 描述
    “binodeviance” 二项异常
    “classifcost” 观察到的误分类代价
    “classiferror” 错误的十进制率分类
    “指数” 指数损失
    “枢纽” 铰链的损失
    分对数的 物流损失
    “mincost” 最小预期误分类代价(对于后验概率分类分数)
    “二次” 二次损失

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

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

    假设n的观察数X而且K为不同类的数量(元素个数(tree.ClassNames)).你的函数必须有这个签名

    lossvalue =lossfun(C、S、W、成本)
    地点:

    • 输出参数lossvalue是一个标量。

    • 选择函数名(lossfun).

    • C是一个n——- - - - - -K逻辑矩阵,用行表示对应的观察结果属于哪一类。列顺序与中的类顺序对应树。ClassNames

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

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

    • W是一个n-by-1观察权重的数值向量。如果你通过W时,软件将其归一化并求和1

    • 成本是一个K——- - - - - -K错误分类成本的数字矩阵。例如,成本=个数(K) -眼数(K)的成本。0为了正确的分类,和1误分类。

    使用以下命令指定函数“LossFun”@lossfun

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

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

观察权值,用逗号分隔的对表示“重量”和一个正数值向量或者一个变量的名字资源描述

如果您指定权重作为一个数字向量,则的大小权重必须等于的行数X资源描述

如果您指定权重的变量名资源描述,必须以字符向量或字符串标量的形式进行。例如,如果权重存储为资源描述。W,然后将其指定为' W '.的所有列资源描述,包括资源描述。W预测因子。

损失将权重归一化,使每个类别的观察权重之和等于该类别的先验概率。当你供应权重损失计算加权分类损失。

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

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

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

如果指定了一个向量,那么所有元素必须是至少的0在大多数马克斯(tree.PruneList)0指示未修剪的完整树和马克斯(tree.PruneList)表示完全修剪的树(即仅根节点)。

如果您指定“所有”,然后损失操作所有子树(即整个修剪序列)。这个规范相当于使用0:马克斯(tree.PruneList)

损失李子中所示的每一级子树,然后估计相应的输出参数。的大小子树确定一些输出参数的大小。

调用子树,属性PruneList而且PruneAlpha必须非空的。换句话说,就是成长通过设置“删除”,“上”,或通过修剪使用修剪

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

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

树大小,指定为逗号分隔的对,由“TreeSize”和以下值之一:

  • “本身”- - - - - -损失返回与最小值(l+se,在那里l而且se中的最小值子树).

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

输出参数

全部展开

分类损失,作为长度的向量返回子树.中的值决定了错误的含义权重而且LossFun

的标准误差,作为长度的向量返回子树

修剪过的子树中叶(终端节点)的数量,作为长度的向量返回子树

定义的最佳修剪水平TreeSize名称-值对,作为标量返回,其值依赖于TreeSize

  • TreeSize“本身”- - - - - -损失返回与最小值(l+se,在那里l而且se中的最小值子树).

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

默认情况下,bestlevel是使损失在最小损失的一个标准偏差内的修剪级别。

例子

全部展开

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

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

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

载入费雪的虹膜数据集。将数据划分为训练集(50%)和验证集(50%)。

负载fisheriris1) n =大小(量;rng (1)%的再现性idxTrn = false (n, 1);idxTrn (randsample (n,圆(0.5 * n))) = true;训练集逻辑索引idxVal = idxTrn == false;验证集逻辑索引

使用训练集生长一个分类树。

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

查看分类树。

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

{

分类树有四个修剪级别。级别0是完整的、未修剪的树(如图所示)。第3级只是根节点(即,没有拆分)。

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

m = max(mml . prunelist) - 1;trnLoss = resubLoss (Mdl,“子树”0米):
trnLoss =3×10.0267 0.0533 0.3067
  • 完整的、未修剪的树对2.7%的训练观察结果分类错误。

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

  • 修剪到第2级(即树桩)的树对约30.6%的训练观察结果分类错误。

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

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

  • 修剪到第1级的树错误分类了大约2.4%的验证观察结果。

  • 修剪到第2级(即树桩)的树对约30.7%的验证观察结果分类错误。

为了平衡模型复杂性和样本外性能,可以考虑修剪Mdl1级。

pruneMdl =修剪(Mdl,“水平”1);视图(pruneMdl,“模式”“图”

{

更多关于

全部展开

扩展功能

Baidu
map