交叉验证分类模型的分类损失
加载电离层
数据集。
负载电离层
种植分类树。
树= fitctree (X, Y);
使用10倍交叉验证对分类树进行交叉验证。
cvtree = crossval(树);
估计交叉验证的分类误差。
L = kfoldLoss (cvtree)
L = 0.1083.
加载电离层
数据集。
负载电离层
使用Adaboostm1培训100个决策树的分类集合。将树桩指定为弱学习者。
t = templatetree(“MaxNumSplits”1);实体= fitcensemble (X, Y,'方法',“AdaBoostM1”,“学习者”t);
使用10倍交叉验证对集成进行交叉验证。
cvens = crossval(ens);
估计交叉验证的分类误差。
l = kfoldloss(cvens)
L = 0.0655
Kfoldloss.
培训交叉验证的广义添加剂模型(GAM),10倍。然后,使用Kfoldloss.
计算累积交叉验证分类误差(十进制误分类率)。利用误差来确定每个预测器的最佳树数(预测器的线性项)和每个交互项的最佳树数。
或者,您可以找到最佳值Fitcgam.
使用该名称 - 值参数bayesopt
函数。例如,请参见使用Bayesopt优化交叉验证的GAM.
加载电离层
数据集。此数据集具有34个预测器和351个雷达返回的二进制响应,无论是坏的吗('B'
)或好('G'
).
负载电离层
使用默认的交叉验证选项创建一个交叉验证的GAM。指定“CrossVal”
名称 - 值参数为“上”
.指定包含所有可用的交互术语p-Values不大于0.05。
rng (“默认”)%的再现性CVMdl = fitcgam (X, Y,“CrossVal”,“上”,“互动”,'全部','maxpvalue', 0.05);
如果您指定“模式”
作为'累积'
为Kfoldloss.
然后,该函数返回累积误差,这是每个折叠使用相同数量的树木获得的所有折叠的平均错误。显示每个折叠的树数。
CVMdl。NumTrainedPerFold
ans =.结构与字段:InteractionTrees: [1 2 2 2 2 2]
Kfoldloss.
可以使用多达59个预测树和一个交互树计算累积误差。
绘制累积的、经过交叉验证的10倍的分类错误(误分类率十进制)。指定'internalideraction'
作为假
将相互作用项从计算中排除。
L_noInteractions = kfoldLoss (CVMdl,“模式”,'累积','internalideraction',错误的);图绘图(0:min(cvmdl.numtrainerperfold.predictortrees),l_nointactions)
第一个元素L_noInteractions
是仅使用拦截(常量)术语获得的所有折叠的平均误差。这 (J + 1
) th元素的L_noInteractions
是使用截距项和第一个获得的平均错误J
每个线性术语的预测树木。绘制累积损失允许您监视错误如何随着GAM中的预测格数而变化的变化。
找出最小误差和用于达到最小误差的预测树的数目。
[m,i] = min(l_nointactions)
m = 0.0655.
我= 23
GAM在包含22树上的最小错误时达到最小错误。
使用线性术语和交互术语计算累积分类错误。
L = kfoldLoss (CVMdl,“模式”,'累积')
l =2×10.0712 - 0.0712
第一个元素l
为使用截距(常数)项和所有预测树每个线性项获得的所有折叠的平均误差。第二要素l
是使用截距项获得的平均误差,每个线性术语的所有预测树,以及每个交互项的一个交互树。添加交互术语时,错误不会减少。
如果在预测器树的数量为22时对错误感到满意,则可以通过再次培训单变量游戏并指定来创建预测模型“NumTreesPerPredictor”,22岁
没有交叉验证。
CVMdl
- - - - - -交叉验证的分区分类器ClassificationededModel.
对象|分类分类型
对象|Classificationededgam.
对象交叉验证的分区分类器,指定为aClassificationededModel.
,分类分类型
, 要么Classificationededgam.
对象。你可以用两种方式创建对象:
将下表中列出的训练过的分类模型传递给它crossval
对象功能。
使用下表中列出的函数训练分类模型,并为该函数指定一个交叉验证名称-值参数。
指定可选的逗号分隔的对名称,价值
参数。名称
参数名和价值
是相应的价值。名称
必须出现在引号内。您可以以任何顺序指定多个名称和值对参数Name1, Value1,…,的家
.
Kfoldloss(CVMDL,'折叠',[1 2 3 5])
指定使用第一个,第二,第三和第五个折叠来计算分类损耗,而是排除第四个折叠。
“折叠”
- - - - - -折叠使用索引1:cvmdl.kfold.
(默认)|正整数矢量要使用的折叠索引,指定为正整数向量。的元素折叠
必须在范围内1
到cvmdl.kfold.
.
该软件仅使用指定的折叠折叠
.
例子:'折叠',[1 4 10]
数据类型:单身的
|双
'internalideraction'
- - - - - -标志包括互动条款真的
|假
标记以包含模型的交互术语,指定为真的
要么假
.此论证仅对广义可加模型(GAM)有效。也就是说,您只能指定此参数CVMdl
是Classificationededgam.
.
默认值为真的
如果模型CVMdl
(CVMdl。训练有素的
)包含交互项。该值必须为假
如果模型不包含交互术语。
数据类型:逻辑
'lockfun'
- - - - - -损失函数“classiferror”
|“binodeviance”
|'forrorentropy'
|'指数'
|'合页'
|分对数的
|'Mincost'
|“二次”
|函数处理丢失函数,指定为内置丢失函数名称或函数句柄。默认损耗函数取决于模型类型CVMdl
.
默认值为“classiferror”
如果模型类型是集合,广义添加剂模型,神经网络或支持向量机分类器。金宝app
默认值为'Mincost'
如果模型类型是判别分析,k最终邻居,天真的贝叶斯或树分类器。
“classiferror”
和'Mincost'
当你使用默认的成本矩阵时是等价的。看到算法为更多的信息。
此表列出了可用损耗功能。使用其对应的字符向量或字符串标量指定一个。
价值 | 描述 |
---|---|
“binodeviance” |
二项式偏差 |
“classiferror” |
小数点被错误分类 |
'forrorentropy' |
交叉熵损失(仅适用于神经网络) |
'指数' |
指数损失 |
'合页' |
铰链的损失 |
分对数的 |
物流损失 |
'Mincost' |
最小预期的错误分类成本(用于后验概率的分类分数) |
“二次” |
二次损失 |
'Mincost'
适用于后验概率的分类评分。的预测
和Kfoldpredict
判别分析函数,广义可加模型,k-最近邻、朴素贝叶斯、神经网络和树分类器默认返回这些分数。
用于使用的集合模型“包”
要么“子”
方法,分类评分默认为后验概率。用于使用的集合模型“AdaBoostM1”
,“AdaBoostM2”
,GentleBoost
, 要么“LogitBoost”
方法中,通过指定双对数分数变换,可以使用后验概率作为分类分数。例如,输入:
cvmdl.scoretransform ='doublelogit';
对于SVM模型,可以通过设置指定使用后验概率作为分类评分“FitPosterior”,真的
当您使用fitcsvm
.
使用函数句柄表示法指定自己的函数。
假设n
是培训数据中的观测数量(cvmdl.numobservations.
),K
为班级数(numel(cvmdl.classnames)
).您的函数必须有签名lossvalue =
, 在哪里:损失义务
(C,S,W,成本)
输出参数失值
是一个标量。
指定函数名(损失义务
).
C
是一个n
——- - - - - -K
逻辑矩阵,其行表示相应的观测所属的类。中的列顺序对应于类的顺序cvmdl.classnames.
.
构造C
通过设置c(p,q)= 1
如果观察p
是在课堂上问
每行。设置行的所有其他元素p
到0
.
年代
是一个n
——- - - - - -K
分类分数的数值矩阵。中的列顺序对应于类的顺序cvmdl.classnames.
.输入年代
类似于输出参数分数
的Kfoldpredict
.
W
是一个n
- 1个数字矢量重量的数字矢量。如果你通过了W
,软件将其元素标准化为总和1
.
成本
是A.K
——- - - - - -K
误分类代价的数值矩阵。例如,Cost = ones(K) - eye(K)
指定0
为正确的分类,和1
误分类。
使用以下命令指定函数“LossFun”@
.损失义务
有关损失函数的详细信息,请参见分类损失.
例子:“LossFun”、“枢纽”
数据类型:字符
|细绳
|function_handle
“模式”
- - - - - -输出聚合级别'平均'
(默认)|“个人”
|'累积'
输出的聚合级别,指定为'平均'
,“个人”
, 要么'累积'
.
价值 | 描述 |
---|---|
'平均' |
输出是所有折叠的标量平均值。 |
“个人” |
输出是一个长度向量k每个折叠包含一个值,其中k是折叠的数量。 |
'累积' |
请注意 如果你想指定这个值,
|
例子:“模式”,“个人”
l
- 分类损失分类丢失,作为数字标量或数字列向量返回。
如果模式
是'平均'
,然后l
为所有折页上的平均分类损失。
如果模式
是“个人”
,然后l
是A.k-1个数字列向量,其中每个折叠的分类损耗,在哪里k是折叠的数量。
如果模式
是'累积'
和CVMdl
是分类分类型
,然后l
是A.分钟(CVMdl.NumTrainedPerFold)
-1号数字列向量。每个元素j
是否该函数通过使用弱学习器训练的集合得到的所有折叠的平均分类损失1: j
.
如果模式
是'累积'
和CVMdl
是Classificationededgam.
,然后输出值取决于IncludeInteractions
价值。
如果IncludeInteractions
是假
,然后l
是A.(1 + min(numtrainerfold.predictortrees))
-1号数字列向量。第一个元素l
是仅使用截距(常数)术语获得的所有折叠的平均分类损失。的(j + 1)
th元素l
是使用截距项和第一个获得的平均损失j
每个线性术语的预测树木。
如果IncludeInteractions
是真的
,然后l
是A.(1 + min(numtrainerperfold.interactiontrees))
-1号数字列向量。第一个元素l
是使用截距(常数)术语和每个线性术语的所有预测测量树获得的所有折叠的平均分类损失。的(j + 1)
th元素l
是使用截距期获得的平均损失,每个线性术语的所有预测格树,以及第一个j
每个交互项的交互树。
分类损失功能测量分类模型的预测不准确性。当您在许多模型之间比较相同类型的损耗时,较低的损耗表示更好的预测模型。
考虑以下情景。
l为加权平均分类损失。
n为样本量。
对于二进制分类:
yj是观察到的类标签。软件将其代码为-1或1,表示负类或正类(或第一个或第二类一会
分别属性)。
f(Xj)为观察(行)的阳性分类评分j预测数据X.
米j=yjf(Xj)为分类观察的分类评分j对应的类yj.积极的价值观米j表明正确的分类,并没有为平均损失贡献。负值米j表示不正确的分类,并对平均损失显着贡献。
对于支持多类分类的算法(即,金宝appK≥3):
yj*是一个矢量K- 1个零,1在对应于真实的,观察类的位置yj.例如,如果第二个观察的真正类是第三个阶级和K= 4,然后y2*= [0 0 1 0] '.类的顺序对应于订单一会
输入模型的属性。
f(Xj)是长度K课程的传染媒介观察的j预测数据X.分数的顺序与表中班级的顺序相对应一会
输入模型的属性。
米j=yj*”f(Xj).因此,米j标量分类得分是模型预测真实的观察类。
观测权重j是wj.该软件将观测权值归一化,使其和为相应的先验类别概率。软件还将先验概率归一化,使其和为1。因此,
给定此场景,下表描述了支持的损失函数,可以使用金宝app'lockfun'
名称-值对的论点。
损失函数 | 的价值LossFun |
方程 |
---|---|---|
二项式偏差 | “binodeviance” |
|
小数点被错误分类 | “classiferror” |
为得分最大的类对应的类标签。我{·}是指示函数。 |
交叉熵损失 | 'forrorentropy' |
加权交叉熵损失是
哪里重量 都归一化为n而不是1。 |
指数损失 | '指数' |
|
铰链的损失 | '合页' |
|
分对数损失 | 分对数的 |
|
最小预期错误分类费用 | 'Mincost' |
该软件计算加权最小期望分类成本使用这一程序的观察j= 1,......,n.
最小预期错误分类成本损失的加权平均值是
如果使用默认代价矩阵(其元素值为0表示正确分类,1表示不正确分类),则 |
二次损失 | “二次” |
该图比较了损耗功能(除了'forrorentropy'
和'Mincost'
超过分数米一个观察。某些功能被归一化以通过点(0,1)。
Kfoldloss.
计算相应的分类损失损失
对象功能。对于特定于模型的描述,请参阅相应的损失
函数参考页面在下表中。
你点击一个链接对应于这个MATLAB命令:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。