损失
分类错误
语法
描述
返回一个表示好程度的标量l
=损失(树
,资源描述
,ResponseVarName
)树
中的数据进行分类资源描述
,当资源描述。ResponseVarName
包含真实的分类。
计算损失时,损失
中的类概率规范化Y
用于训练的类概率,存储在之前
的属性树
.
输入参数
树
- - - - - -训练有素的分类树
ClassificationTree
模型对象|CompactClassificationTree
模型对象
训练过的分类树,指定为ClassificationTree
或CompactClassificationTree
模型对象。也就是说,树
是否返回经过训练的分类模型fitctree
或紧凑的
.
资源描述
- - - - - -样本数据
表格
示例数据,指定为表。每一行的资源描述
对应一个观察结果,每一列对应一个预测变量。可选地,资源描述
可以包含用于响应变量和观察权重的附加列。资源描述
必须包含用于训练的所有预测器树
.不允许多列变量和字符向量的单元格数组以外的单元格数组。
如果资源描述
包含用于训练的响应变量树
,则不需要指定ResponseVarName
或Y
.
如果你训练树
中包含的样例数据表格
,则此方法的输入数据也必须在表中。
数据类型:表格
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
LossFun
- - - - - -损失函数
“mincost”
(默认)|“binodeviance”
|“classifcost”
|“classiferror”
|“指数”
|“枢纽”
|分对数的
|“二次”
|函数处理
损失函数,指定为逗号分隔的对,由“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的所有其他元素p
来0
.年代
是一个n
——- - - - - -K
分类分数的数字矩阵。列顺序与中的类顺序对应树。ClassNames
.年代
是一个分类分数矩阵,类似的输出预测
.W
是一个n
-by-1观察权重的数值向量。如果你通过W
时,软件将其归一化并求和1
.成本
是一个K——- - - - - -K
错误分类成本的数字矩阵。例如,成本=个数(K) -眼数(K)
的成本。0
为了正确的分类,和1
误分类。
使用以下命令指定函数
“LossFun”@
.lossfun
有关损失函数的更多详细信息,请参见分类损失.
数据类型:字符
|字符串
|function_handle
权重
- - - - - -观察权重
(大小(X, 1), 1)
(默认)|中的变量名资源描述
|正数值的数值向量
观察权值,用逗号分隔的对表示“重量”
和一个正数值向量或者一个变量的名字资源描述
.
如果您指定权重
作为一个数字向量,则的大小权重
必须等于的行数X
或资源描述
.
如果您指定权重
的变量名资源描述
,必须以字符向量或字符串标量的形式进行。例如,如果权重存储为资源描述。W
,然后将其指定为' W '
.的所有列资源描述
,包括资源描述。W
预测因子。
损失
将权重归一化,使每个类别的观察权重之和等于该类别的先验概率。当你供应权重
,损失
计算加权分类损失。
数据类型:单
|双
|字符
|字符串
名称,值
与修剪子树相关的参数:
子树
- - - - - -修剪水平
0(默认)|非负整数的向量|“所有”
修剪级别,指定为逗号分隔的对,由“子树”
和一个由非负整数按升序或“所有”
.
如果指定了一个向量,那么所有元素必须是至少的0
在大多数马克斯(tree.PruneList)
.0
指示未修剪的完整树和马克斯(tree.PruneList)
表示完全修剪的树(即仅根节点)。
如果您指定“所有”
,然后损失
操作所有子树(即整个修剪序列)。这个规范相当于使用0:马克斯(tree.PruneList)
.
损失
李子树
中所示的每一级子树
,然后估计相应的输出参数。的大小子树
确定一些输出参数的大小。
调用子树
,属性PruneList
而且PruneAlpha
的树
必须非空的。换句话说,就是成长树
通过设置“删除”,“上”
,或通过修剪树
使用修剪
.
例子:“子树”,“所有”
数据类型:单
|双
|字符
|字符串
TreeSize
- - - - - -树的大小
“本身”
(默认)|“最小值”
树大小,指定为逗号分隔的对,由“TreeSize”
和以下值之一:
“本身”
- - - - - -损失
返回与最小值(l
+se
,在那里l
而且se
中的最小值子树
).“最小值”
- - - - - -损失
返回元素的子树
用最小的损失,通常是最小的元素子树
.
输出参数
l
——分类损失
标量值向量
分类损失,作为长度的向量返回子树
.中的值决定了错误的含义权重
而且LossFun
.
se
-丢失的标准误差
标量值向量
的标准误差,作为长度的向量返回子树
.
NLeaf
—叶节点数
整数值的向量
修剪过的子树中叶(终端节点)的数量,作为长度的向量返回子树
.
bestlevel
-最佳修剪水平
标量值
定义的最佳修剪水平TreeSize
名称-值对,作为标量返回,其值依赖于TreeSize
:
TreeSize
=“本身”
- - - - - -损失
返回与最小值(l
+se
,在那里l
而且se
中的最小值子树
).TreeSize
=“最小值”
- - - - - -损失
返回元素的子树
用最小的损失,通常是最小的元素子树
.
默认情况下,bestlevel
是使损失在最小损失的一个标准偏差内的修剪级别。
例子
计算样本内分类误差
检查每个子树的分类错误
未经修剪的决策树容易过拟合。平衡模型复杂性和样本外性能的一种方法是修剪一棵树(或限制其生长),使样本内和样本外性能都令人满意。
载入费雪的虹膜数据集。将数据划分为训练集(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%的验证观察结果分类错误。
为了平衡模型复杂性和样本外性能,可以考虑修剪Mdl
1级。
pruneMdl =修剪(Mdl,“水平”1);视图(pruneMdl,“模式”,“图”)
更多关于
分类损失
分类损失函数度量分类模型的预测不准确性。当你在许多模型中比较同一类型的损失时,较低的损失表示较好的预测模型。
考虑以下场景。
l为加权平均分类损失。
n是样本容量。
二进制分类:
yj是观察到的类标签。软件将其编码为-1或1,表示负数或正类(或中的第一个或第二个类)
一会
分别属性)。f(Xj)为观察正级分类分数(行)j预测数据X.
米j=yjf(Xj)为分类观察的分类分数j成对应的类yj.积极的价值观米j指出正确的分类和不贡献太多的平均损失。负的米j指出不正确的分类和对平均损失有显著贡献。
对于支持多类分类的算法(即K≥3):
yj*是的向量K- 1个0,其中1在对应于真实的观察类的位置yj.例如,如果第二次观测的真类是第三类和K= 4,然后y2*= (
0 0 1 0
]“.类的顺序对应于一会
属性。f(Xj)为长度K班级成绩的观察向量j预测数据X.分数的顺序与课程的顺序相对应
一会
属性。米j=yj*′f(Xj).因此,米j是模型为真实的、观察到的类预测的标量分类分数。
观察权重j是wj.软件对观察权重进行归一化处理,使其与存储在
之前
财产。因此,
对于这种场景,下表描述了可以使用LossFun
名称-值参数。
损失函数 | 的价值LossFun |
方程 |
---|---|---|
二项异常 | “binodeviance” |
|
观察到的误分类代价 | “classifcost” |
在哪里 类标签是否与分数最大的类对应,和 将观察结果分类的成本是用户指定的吗 当它真正的阶级是yj. |
错误的十进制率分类 | “classiferror” |
在哪里我{·}为指示函数。 |
叉损失 | “crossentropy” |
加权交叉熵损失为
的权重 和是归一化的吗n而不是1。 |
指数损失 | “指数” |
|
铰链的损失 | “枢纽” |
|
分对数损失 | 分对数的 |
|
最小的预期错误分类成本 | “mincost” |
软件利用此方法计算加权最小期望分类成本j= 1,…,n.
最小期望误分类成本损失的加权平均值为
|
二次损失 | “二次” |
如果使用默认代价矩阵(其元素值为0表示正确分类,为1表示错误分类),则损失值为“classifcost”
,“classiferror”
,“mincost”
都是相同的。对于具有非默认代价矩阵的模型,“classifcost”
损失相当于“mincost”
大部分时间都是损失。如果对具有最大后验概率的类的预测不同于对具有最小期望代价的类的预测,则这些损失可能是不同的。请注意,“mincost”
仅当分类分数为后验概率时才适用。
该图比较了损失函数(除“classifcost”
,“crossentropy”
,“mincost”
)超过分数米一个观察。一些函数经过点(0,1)被归一化。
真正的误分类代价
真正的错误分类代价是将观察结果分类为错误类别的代价。
方法可以设置每个类的真实错误分类代价“成本”
创建分类器时的名称-值参数。成本(i, j)
将观察结果分类的成本是多少j
当它真正的阶级是我
.默认情况下,成本(i, j) = 1
如果我~ = j
,成本(i, j) = 0
如果我=我
.换句话说,成本是0
正确的分类和1
不正确的分类。
预期的误分类代价
每个观测结果的预期错误分类代价是将观测结果分类到每一类的平均代价。
假设你有脑袋
你想用训练有素的分类器对观察结果进行分类,你有K
类。你把观察结果放入一个矩阵中X
每行一个观察值。
预期成本矩阵CE
有大小脑袋
——- - - - - -K
.每一行的CE
包含将观察结果分类为每个的预期(平均)成本K
类。CE (n,k)
是
地点:
K是类的数量。
是类的后验概率吗我为观察X(n).
将观察结果分类的真正错误分类成本是k当它真正的阶级是我.
分数(树)
对于树木,分数叶节点分类的后验概率是该节点分类的后验概率。一个节点上分类的后验概率是指向该分类节点的训练序列个数除以指向该节点的训练序列个数。
示例请参见分类树的后验概率定义.
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。