损失
描述
返回分类损失训练的神经网络分类器l
=损失(Mdl
,资源描述
,ResponseVarName
)Mdl
使用预测数据表资源描述
和类标签ResponseVarName
表变量。
l
作为一个标量返回值代表默认分类错误。
指定选项使用一个或多个名称参数除了任何输入参数组合在以前的语法。例如,您可以指定列对应于观测的预测数据,指定损失函数,或供应观察权重。l
=损失(___,名称,值
)
请注意
如果预测数据X
或资源描述
包含任何缺失的值LossFun
没有设置为“classifcost”
,“classiferror”
,或“mincost”
,损失
函数可以返回NaN。更多细节,请参阅损失可以返回NaN预测数据缺失值。
例子
测试集分类神经网络误差
计算测试集分类误差的神经网络分类器。
加载病人
从数据集中数据集。创建一个表,每一行对应一个病人和每一列对应一个诊断变量。使用吸烟者
变量作为响应变量,其余变量的预测因子。
负载病人台=表(舒张压、收缩压、性别、身高、体重、年龄、吸烟);
单独的数据训练集tblTrain
和一个测试集tblTest
通过使用分层抵抗分区。软件储备大约30%的测试数据集,并使用其余的观察观察的训练数据集。
rng (“默认”)%的再现性分区c = cvpartition (tbl.Smoker“坚持”,0.30);trainingIndices =培训(c);testIndices =测试(c);tblTrain =(资源(trainingIndices:);tblTest =(资源(testIndices:);
使用训练集训练神经网络分类器。指定吸烟者
列的tblTrain
作为反应变量。指定标准化数值预测。
Mdl = fitcnet (tblTrain,“抽烟”,…“标准化”,真正的);
计算测试集分类错误。分类错误是默认损失类型神经网络分类器。
testError =损失(Mdl tblTest,“抽烟”)
testError = 0.0671
testAccuracy = 1 - testError
testAccuracy = 0.9329
神经网络模型正确分类大约93%的测试集观测。
选择特性包括在神经网络分类器
进行特征选择通过比较测试集分类的利润率,边缘,错误,和预测。比较的测试集的度量模型训练使用所有测试集的预测指标对模型训练使用只有一个子集的预测。
加载示例文件fisheriris.csv
,其中包含虹膜数据包括花萼长度、宽度萼片,花瓣长度,花瓣宽度,和物种类型。读取文件成一个表。
fishertable = readtable (“fisheriris.csv”);
单独的数据训练集trainTbl
和一个测试集testTbl
通过使用分层抵抗分区。软件储备大约30%的测试数据集,并使用其余的观察观察的训练数据集。
rng (“默认”)c = cvpartition (fishertable.Species“坚持”,0.3);trainTbl = fishertable(培训(c):);testTbl = fishertable(测试(c):);
训练一个神经网络分类器使用中的所有预测训练集,并使用所有的预测,除了训练另一个分类器PetalWidth
。对于这两种模型,指定物种
作为响应变量,预测和规范。
allMdl = fitcnet (trainTbl,“物种”,“标准化”,真正的);subsetMdl = fitcnet (trainTbl,“物种~ SepalLength + SepalWidth + PetalLength”,…“标准化”,真正的);
两个模型计算测试集分类的利润。因为测试集只包含45观察,显示利润使用条形图。
对于每个观察,分类边界的区别是真正的类的分类评分和虚假的最大分数类。因为神经网络分类器返回分类后验概率的分数,利润率值接近1表示有信心分类和负利润值指示错误分类。
tiledlayout (2, 1)%顶轴ax₁= nexttile;allMargins =利润率(allMdl testTbl);栏(ax₁, allMargins)包含(ax₁“观察”)ylabel (ax₁,“保证金”)标题(ax₁,“预测”)%底部轴ax2 = nexttile;subsetMargins =利润率(subsetMdl testTbl);栏(ax2 subsetMargins)包含(ax2,“观察”)ylabel (ax2,“保证金”)标题(ax2,“子集预测”)
比较测试集分类边缘,或意味着利润率的分类,两个模型。
allEdge =边缘(allMdl testTbl)
allEdge = 0.8198
subsetEdge =边缘(subsetMdl testTbl)
subsetEdge = 0.9556
根据测试集分类利润率和边缘,模型训练的一个子集预测似乎比模型训练所有的预测因子。
比较两个模型的测试集分类错误。
allError =损失(allMdl testTbl);allAccuracy = 1-allError
allAccuracy = 0.9111
subsetError =损失(subsetMdl testTbl);subsetAccuracy = 1-subsetError
subsetAccuracy = 0.9778
再次,模型训练使用只有一个子集的预测似乎执行比模型训练使用所有的预测因子。
可视化测试集分类结果采用混淆矩阵。
allLabels =预测(allMdl testTbl);图confusionchart (testTbl.Species allLabels)标题(“预测”)
subsetLabels =预测(subsetMdl testTbl);图confusionchart (testTbl.Species subsetLabels)标题(“子集预测”)
模型训练使用所有测试集的分类预测因子四个观察。模型训练使用的一个子集预测分类只有一个测试集的观察。
鉴于测试集两种模型的性能,考虑使用该模型使用所有的预测,除了训练PetalWidth
。
输入参数
Mdl
- - - - - -训练神经网络分类器
ClassificationNeuralNetwork
模型对象|CompactClassificationNeuralNetwork
模型对象
训练神经网络分类器,指定为一个ClassificationNeuralNetwork
模型对象或CompactClassificationNeuralNetwork
模型对象返回的fitcnet
或紧凑的
,分别。
资源描述
- - - - - -样本数据
表
样本数据,指定为一个表。每一行的资源描述
对应于一个观察,每一列对应一个预测变量。可选地,资源描述
为响应变量可以包含一个额外的列。资源描述
必须包含所有的预测用于火车Mdl
。多列变量和细胞数组以外的细胞阵列的特征向量是不允许的。
如果
资源描述
包含响应变量用于火车Mdl
,那么你不需要指定ResponseVarName
或Y
。如果你训练
Mdl
使用样本数据包含在一个表中,然后输入数据损失
也必须在一个表中。如果你设置
“标准化”,真的
在fitcnet
当训练Mdl
,那么软件标准化的数字列预测数据使用对应的均值和标准差。
数据类型:表
ResponseVarName
- - - - - -响应变量名
变量的名字资源描述
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:损失(Mdl,台“响应”,“LossFun”、“crossentropy”)
指定计算熵损失模型Mdl
。
LossFun
- - - - - -损失函数
“mincost”
(默认)|“binodeviance”
|“classifcost”
|“classiferror”
|“crossentropy”
|“指数”
|“枢纽”
|分对数的
|“二次”
|函数处理
损失函数,指定为一个内置的损失函数名或一个函数处理。
此表列出了可用的损失函数。指定一个使用其相应的特征向量或字符串标量。
价值 描述 “binodeviance”
二项异常 “classifcost”
观察到的误分类代价 “classiferror”
被误诊率小数 “crossentropy”
叉损失(神经网络) “指数”
指数损失 “枢纽”
铰链的损失 分对数的
物流损失 “mincost”
最小的预期的误分类代价(后验概率的分类评分) “二次”
二次损失 损失函数的更多细节,请参阅分类损失。
指定一个自定义的损失函数,利用函数处理符号。函数必须有这种形式:
lossvalue =
lossfun
(C、S、W、成本)输出参数
lossvalue
是一个标量。你指定函数名(
lossfun
)。C
是一个n
——- - - - - -K
逻辑矩阵行指示相应的观察所属的类。n
观察的数量吗资源描述
或X
,K
不同的类的数目(元素个数(Mdl.ClassNames)
)。列顺序对应于类顺序Mdl.ClassNames
。创建C
通过设置C (p, q) = 1
,如果观察p
是在课堂上问
,为每一行。设置所有其他元素的行p
来0
。年代
是一个n
——- - - - - -K
数字矩阵分类的分数。列顺序对应于类顺序Mdl.ClassNames
。年代
分类是一个矩阵得分,类似的输出预测
。W
是一个n
1数字的观察向量权重。成本
是一个K
——- - - - - -K
数字矩阵的误分类代价。例如,成本= 1 (K) -眼(K)
指定了一个成本0
正确的分类和1
误分类。
例子:“LossFun”、“crossentropy”
数据类型:字符
|字符串
|function_handle
ObservationsIn
- - - - - -预测数据观察维度
“行”
(默认)|“列”
预测数据观察维度,指定为“行”
或“列”
。
请注意
如果你东方预测矩阵,以便观察并指定对应列“ObservationsIn”、“列”
,那么你可能会经历显著减少计算时间。你不能指定“ObservationsIn”、“列”
预测数据表。
数据类型:字符
|字符串
权重
- - - - - -观察权重
非负数字矢量|变量的名字资源描述
更多关于
分类损失
分类损失函数度量分类模型的预测误差。当你在考虑对比许多相同类型的损失模型,较低的损失表示一个更好的预测模型。
考虑以下场景。
l是加权平均分类损失。
n是样本容量。
二进制分类:
yj是观察到的类标签。软件代码为1或1,表明消极或积极类(或第一或第二课
一会
分别属性)。f(Xj观察)是positive-class分类评分(行)j预测的数据X。
米j=yjf(Xj)是分类的分类评分观察j相对应的类yj。积极的价值观米j显示正确的分类,不为平均损失作出多少贡献。负的米j显示不正确的分类和对平均损失作出了重大贡献。
对于支持多级分类的算法(即金宝appK≥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。软件可实现观察权重,这样他们和前到相应的类存储在概率
之前
财产。因此,
鉴于这种情况,下表描述了支持损失函数,您可以指定使用金宝appLossFun
名称-值参数。
损失函数 | 的价值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)。
版本历史
介绍了R2021aR2022a:默认的LossFun
值已经改变了
从R2022a,损失
函数使用“mincost”
选项(误分类代价最小的预期)的默认值LossFun
名称-值参数。的“mincost”
当分数后验概率分类选项是合适的。在以前的版本中,默认值“classiferror”
。
您不需要对代码进行任何更改为默认成本矩阵元素值为0的(正确的分类和不正确的分类1)。
R2022a:损失
可以返回NaN和缺失值预测数据
的损失
函数不再省略了一个观察与南得分计算加权平均分类损失。因此,损失
现在可以返回NaN当预测数据X
或预测变量资源描述
包含任何缺失值,名称参数LossFun
不是指定为“classifcost”
,“classiferror”
,或“mincost”
。在大多数情况下,如果测试集观测不含缺失的预测,损失
函数不返回NaN。
这一变化提高了分类模型的自动选择,当你使用fitcauto
。这种变化之前,软件可能会选择一个模型(最好将分类新数据)和一些non-NaN预测。
如果损失
在您的代码返回NaN,你可以更新你的代码来避免这一结果通过下列之一:
通过删除或替换缺失值
rmmissing
或fillmissing
,分别。指定名称的参数
LossFun
作为“classifcost”
,“classiferror”
,或“mincost”
。
下面的表显示了分类模型的损失
目标函数可以返回NaN。更多细节,请参见兼容性的考虑损失
函数。
模型类型 | 全部或紧凑的模型对象 | 损失 目标函数 |
---|---|---|
判别分析分类模型 | ClassificationDiscriminant ,CompactClassificationDiscriminant |
损失 |
系综分类的学习者 | ClassificationEnsemble ,CompactClassificationEnsemble |
损失 |
高斯核函数分类模型 | ClassificationKernel |
损失 |
k最近的邻居分类模型 | ClassificationKNN |
损失 |
线性分类模型 | ClassificationLinear |
损失 |
神经网络分类模型 | ClassificationNeuralNetwork ,CompactClassificationNeuralNetwork |
损失 |
金宝app支持向量机(SVM)分类模型 | 损失 |
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。