kfoldLoss
分类损失旨在分类模型
描述
例子
旨在估计分类错误
加载电离层
数据集。
负载电离层
一个分类树生长。
树= fitctree (X, Y);
旨在使用10倍交叉验证的分类树。
cvtree = crossval(树);
估计旨在分类错误。
L = kfoldLoss (cvtree)
L = 0.1083
旨在估计分类错误
加载电离层
数据集。
负载电离层
训练一个分类的100使用AdaBoostM1决策树。指定树桩作为弱的学习者。
t = templateTree (“MaxNumSplits”1);实体= fitcensemble (X, Y,“方法”,“AdaBoostM1”,“学习者”t);
旨在整体使用10倍交叉验证。
cvens = crossval (ens);
估计旨在分类错误。
L = kfoldLoss (cvens)
L = 0.0655
找到最优数量的树木GAM使用kfoldLoss
训练旨在广义相加模型(GAM) 10倍。然后,用kfoldLoss
计算累积交叉验证分类错误(错误分类率小数)。使用错误来确定最优数量的树木每预测(预测线性项)和最优数量的树/交互项。
或者,你可以找到的最优值fitcgam
通过使用名称-值参数OptimizeHyperparameters名称-值参数。例如,看到的优化使用OptimizeHyperparameters联欢。
加载电离层
数据集。这个数据集有34个预测因子和351二进制响应雷达回报,要么坏(“b”
)或好(‘g’
)。
负载电离层
通过使用默认创建一个旨在GAM交叉验证选择。指定“CrossVal”
名称-值参数为“上”
。指定包含所有可用的交互方面的p值不大于0.05。
rng (“默认”)%的再现性CVMdl = fitcgam (X, Y,“CrossVal”,“上”,“互动”,“所有”,“MaxPValue”,0.05);
如果您指定“模式”
作为“累积”
为kfoldLoss
,那么函数返回累积误差,获得的平均错误折叠所有使用相同数量的树木为每一个褶皱。显示的数量为每个折叠树。
CVMdl.NumTrainedPerFold
ans =结构体字段:PredictorTrees: [59 65 64 61 60 66 65 62 64 61] InteractionTrees: [1 2 2 2 2 1 2 2 2 2]
kfoldLoss
可以计算累计错误使用多达59预测树和一个交互树。
情节的累积,旨在10倍、分类错误(错误分类率小数)。指定“IncludeInteractions”
作为假
排除交互方面的计算。
L_noInteractions = kfoldLoss (CVMdl,“模式”,“累积”,“IncludeInteractions”、假);图绘制(0:min (CVMdl.NumTrainedPerFold.PredictorTrees) L_noInteractions)
的第一个元素L_noInteractions
是所有折叠的平均误差仅使用拦截获得(常数)。(J + 1
)th元素的L_noInteractions
使用拦截获得的平均误差项和第一J
预测树/线性项。绘制累计损失允许您监控误差变化预测树GAM数量的增加。
找到最小误差和预测树的数量达到最小误差。
[M,我]= min (L_noInteractions)
M = 0.0655
我= 23
GAM达到最小误差,它包括22个预测树。
计算分类累积误差同时使用线性项和交互项。
L = kfoldLoss (CVMdl,“模式”,“累积”)
L =2×10.0712 - 0.0712
的第一个元素l
获得的平均误差都折叠使用拦截(常数)项和所有预测树/线性项。第二个元素的l
使用拦截获得的平均误差项,所有预测树每线性项和一个交互树/交互项。错误交互条款时不会减少。
如果你满意错误预测树的数量是22时,您可以创建一个由训练单变量预测模型GAM和指定“NumTreesPerPredictor”, 22岁
没有交叉验证。
输入参数
CVMdl
- - - - - -旨在分区分类器
ClassificationPartitionedModel
对象|ClassificationPartitionedEnsemble
对象|ClassificationPartitionedGAM
对象
旨在分区分类,指定为一个ClassificationPartitionedModel
,ClassificationPartitionedEnsemble
,或ClassificationPartitionedGAM
对象。你可以通过两种方式创建对象:
通过训练分类模型下面的表中列出的
crossval
对象的功能。训练分类模型使用一个函数中列出下表,并指定一个交叉验证函数的名称参数。
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:kfoldLoss (CVMdl“折叠”,[1 2 3 5])
指定使用第一,第二,第三,和第五折叠计算分类损失,但排除第四折。
折叠
- - - - - -褶皱指标使用
1:CVMdl.KFold
(默认)|正整数向量
褶皱指标使用,指定为一个正整数向量。的元素折叠
一定范围内1
来CVMdl.KFold
。
在指定的软件只使用折叠折叠
。
例子:“折叠”,[1 4 10]
数据类型:单
|双
IncludeInteractions
- - - - - -标志包括交互方面
真正的
|假
标志包括交互模型,指定为真正的
或假
。这个论点是有效的只有一个广义相加模型(GAM)。也就是说,您可以指定这个论点只有当CVMdl
是ClassificationPartitionedGAM
。
默认值是真正的
如果模型CVMdl
(CVMdl.Trained
)包含交互方面。的值必须假
如果模型不包含交互方面。
数据类型:逻辑
LossFun
- - - - - -损失函数
“binodeviance”
|“classifcost”
|“classiferror”
|“crossentropy”
|“指数”
|“枢纽”
|分对数的
|“mincost”
|“二次”
|函数处理
损失函数,指定为一个内置的损失函数名或一个函数处理。违约损失函数取决于类型的模型CVMdl
。
默认值是
“classiferror”
如果模型类型是一个合奏或支持向量机分类器。万博1manbetx默认值是
“mincost”
如果模型类型是判别分析,k最近的邻居,朴素贝叶斯、神经网络或树分类器。如果模型类型是广义相加模型分类器,默认值是
“mincost”
如果ScoreTransform
输入模型对象的属性(
)是CVMdl
.ScoreTransform分对数的
;否则,默认值是“classiferror”
。
“classiferror”
和“mincost”
当你使用默认成本矩阵是等价的。看到算法为更多的信息。
此表列出了可用的损失函数。指定一个使用其相应的特征向量或字符串标量。
价值 描述 “binodeviance”
二项异常 “classifcost”
观察到的误分类代价 “classiferror”
被误诊率小数 “crossentropy”
叉损失(神经网络) “指数”
指数损失 “枢纽”
铰链的损失 分对数的
物流损失 “mincost”
最小的预期的误分类代价(后验概率的分类评分) “二次”
二次损失 “mincost”
适合分类后验概率的分数。的预测
和kfoldPredict
判别分析的函数,广义加性模型,k最近的邻居,朴素贝叶斯、神经网络和树分类器返回默认这样的分数。使用的整体模型
“包”
或“子”
默认方法、分类分数后验概率。使用的整体模型“AdaBoostM1”
,“AdaBoostM2”
,GentleBoost
,或“LogitBoost”
方法,您可以使用后验概率作为分类的分数通过指定double-logit分数变换。例如,输入:CVMdl。年代c或eTransform =“doublelogit”;
对于支持向量机模型,您可以指定使用后验概率作为分类分数设置
“FitPosterior”,真的
当你旨在模型使用fitcsvm
。
指定你自己的函数使用函数处理符号。
假设
n
在训练数据的观测数量(CVMdl.NumObservations
),K
类的数量(元素个数(CVMdl.ClassNames)
)。你的函数必须有签名lossvalue =
,地点:lossfun
(C、S、W、成本)输出参数
lossvalue
是一个标量。你指定函数名(
lossfun
)。C
是一个n
——- - - - - -K
逻辑矩阵行指示相应的观察所属的类。列顺序对应于类顺序CVMdl.ClassNames
。构造
C
通过设置C (p, q) = 1
如果观察p
是在课堂上问
,为每一行。设置所有其他元素的行p
来0
。年代
是一个n
——- - - - - -K
数字矩阵分类的分数。列顺序对应于类顺序CVMdl.ClassNames
。输入年代
类似的输出参数分数
的kfoldPredict
。W
是一个n
1数字的观察向量权重。如果你通过W
,软件使其元素和规范化1
。成本
是一个K
——- - - - - -K
数字矩阵的误分类代价。例如,成本= 1 (K) -眼(K)
指定了一个成本0
正确的分类,1
误分类。
指定你的函数使用
“LossFun”@
。lossfun
损失函数的更多细节,请参阅分类损失。
例子:“LossFun”、“枢纽”
数据类型:字符
|字符串
|function_handle
模式
- - - - - -聚合级输出
“平均”
(默认)|“个人”
|“累积”
聚合级的输出,指定为“平均”
,“个人”
,或“累积”
。
价值 | 描述 |
---|---|
“平均” |
输出是一个标量平均折叠。 |
“个人” |
的输出是一个向量的长度k包含一个值/褶皱,k是折叠的数量。 |
“累积” |
请注意 如果你想指定这个值,
|
例子:“模式”,“个人”
输出参数
l
——分类损失
数字标量|数字列向量
分类损失,作为一个数字返回标量或数字列向量。
如果
模式
是“平均”
,然后l
所有折叠的平均分类损失。如果
模式
是“个人”
,然后l
是一个k1数字列向量包含分类损失对于每一个褶皱,k是折叠的数量。如果
模式
是“累积”
和CVMdl
是ClassificationPartitionedEnsemble
,然后l
是一个分钟(CVMdl.NumTrainedPerFold)
1数字列向量。每个元素j
的平均分类损失所有的折叠功能获得通过使用乐团训练较差的学习者1:j
。如果
模式
是“累积”
和CVMdl
是ClassificationPartitionedGAM
,然后输出值取决于IncludeInteractions
价值。如果
IncludeInteractions
是假
,然后l
是一个(1 +分钟(NumTrainedPerFold.PredictorTrees))
1数字列向量。的第一个元素l
平均分类损失获得所有折叠,只使用拦截(常数)。的(j + 1)
th元素l
平均损失获得使用截距项和第一个吗j
预测树/线性项。如果
IncludeInteractions
是真正的
,然后l
是一个(1 +分钟(NumTrainedPerFold.InteractionTrees))
1数字列向量。的第一个元素l
平均分类损失所有的折叠是获得使用拦截(常数)项和所有预测树/线性项。的(j + 1)
th元素l
是使用截距项,获得的平均损失的所有预测树/线性项,第一j
交互树/交互项。
更多关于
分类损失
分类损失函数度量分类模型的预测误差。当你在考虑对比许多相同类型的损失模型,较低的损失表示一个更好的预测模型。
考虑以下场景。
l是加权平均分类损失。
n是样本容量。
二进制分类:
yj是观察到的类标签。软件代码为1或1,表明消极或积极类(或第一或第二课
一会
分别属性)。f(Xj观察)是positive-class分类评分(行)j预测的数据X。
米j=yjf(Xj)是分类的分类评分观察j相对应的类yj。积极的价值观米j显示正确的分类,不为平均损失作出多少贡献。负的米j显示不正确的分类和对平均损失作出了重大贡献。
对于支持多级分类的算法(即万博1manbetxK≥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。软件可实现观察权重,这样他们和前到相应的类存储在概率
之前
财产。因此,
鉴于这种情况,下表描述了支持损失函数,您可以指定使用万博1manbetxLossFun
名称-值参数。
损失函数 | 的价值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)。
算法
kfoldLoss
计算分类中描述相应的损失损失
对象的功能。模型相关的描述,看到合适的损失
下面的表函数引用页面。
扩展功能
GPU数组
加速代码运行在一个图形处理单元(GPU)使用并行计算工具箱™。
使用笔记和限制:
这个函数完全支持GPU以下旨在模型对象的万博1manbetx数组:
系综分类器训练
fitcensemble
k最近的邻居分类器训练
fitcknn
万博1manbetx支持向量机分类器训练
fitcsvm
二叉决策树的多类分类培训
fitctree
有关更多信息,请参见运行在GPU MATLAB函数(并行计算工具箱)。
版本历史
介绍了R2011aR2022a:kfoldLoss
返回一个不同的值,旨在支持向量机和系综分类器默认的成本矩阵
行为改变R2022a
如果你指定一个默认的成本矩阵时旨在支持向量机的输入模型对象或系综分类模型,kfoldLoss
函数返回一个不同的值与以前版本相比。
的kfoldLoss
函数使用存储在观察权重W
财产。此外,函数使用矩阵的存储成本成本
如果你指定属性LossFun
名称-值参数为“classifcost”
或“mincost”
。这个函数使用的方式W
和成本
属性值没有改变。然而,属性值存储在旨在支持向量机的输入模型对象改变了整体模型对象和一个默认的成本矩阵,所以函数可以返回不同的值。
属性值变化的细节,请参阅成本属性存储指定的成本矩阵(旨在支持向量机分类器)或成本属性存储指定的成本矩阵(旨在系综分类器)。
如果你想要处理的软件成本矩阵,先验概率,和观察权重在以前的版本中,调整默认的成本的先验概率和观察权重矩阵,描述调整先验概率和观察权重误分类代价矩阵。然后,当你训练一个分类模型,指定调整先验概率和观察权重通过使用之前
和权重
名称-值参数,分别使用默认成本矩阵。
R2022a:默认LossFun
值已经改变了旨在GAM和神经网络分类器
行为改变R2022a
从R2022a的缺省值LossFun
名称参数变化对广义相加模型(GAM)和神经网络模型,这样kfoldLoss
函数使用“mincost”
选项(最小的预期错误分类成本)作为默认当旨在分类对象使用后验概率进行分类的分数。
如果输入的模型类型模型对象
CVMdl
GAM分类器,默认值是“mincost”
如果ScoreTransform
的属性CVMdl
(
)是CVMdl
.ScoreTransform分对数的
;否则,默认值是“classiferror”
。如果模型的类型
CVMdl
是一个神经网络模式分类器,默认值是什么“mincost”
。
在以前的版本中,默认值“classiferror”
。
您不需要对代码进行任何更改,如果你使用默认成本矩阵的元素值为0为不正确的分类正确的分类和1)。的“mincost”
选择是等效的“classiferror”
选择默认成本矩阵。
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。