神经网络分类器的分类损失
返回分类损失用于训练的神经网络分类器l
=损失(Mdl
,资源描述
,ResponseVarName
)Mdl
使用表中的预测数据资源描述
的类标签ResponseVarName
表变量。
l
作为标量值返回,默认情况下该标量值表示分类错误。
除了前面语法中的任何输入参数组合外,还使用一个或多个名称-值参数指定选项。例如,可以指定预测器数据中的列与观测值对应、指定损失函数或提供观测值权重。l
=损失(___,名称,值
)
计算神经网络分类器的测试集分类误差。
加载病人
数据集。从数据集创建一个表。每一行对应一个病人,每一列对应一个诊断变量。使用吸烟者
变量作为响应变量,其余变量作为预测变量。
负载病人台=表(舒张压、收缩压、性别、身高、体重、年龄、吸烟);
将数据分离到一个训练集tblTrain
和一个测试集tblTest
通过使用分层的抵抗层分区。该软件为测试数据集保留大约30%的观察值,并将其余的观察值用于训练数据集。
rng (“默认”)分区的再现性c = cvpartition(资源描述。抽烟,“坚持”, 0.30);trainingIndices =培训(c);testIndices =测试(c);tblTrain =(资源(trainingIndices:);tblTest =(资源(testIndices:);
使用训练集训练神经网络分类器。指定吸烟者
列的tblTrain
作为响应变量。指定以标准化数值预测器。
Mdl = fitcnet (tblTrain,“抽烟”,...“标准化”,真正的);
计算测试集分类错误。分类错误是神经网络分类器的默认损失类型。
testError =损失(Mdl tblTest,“抽烟”)
testError = 0.0671
testAccuracy = 1 - testror
testAccuracy = 0.9329
神经网络模型正确地分类了大约93%的测试集观测值。
通过比较测试集分类边缘、边缘、错误和预测来进行特征选择。将使用所有预测器训练的模型的测试集度量与仅使用预测器子集训练的模型的测试集度量进行比较。
加载示例文件fisheriris.csv
,其中包括鸢尾资料,包括萼片长度,萼片宽度,花瓣长度,花瓣宽度和种类型。将文件读入表中。
fishertable = readtable (“fisheriris.csv”);
将数据分离到一个训练集trainTbl
和一个测试集testTbl
通过使用分层的抵抗层分区。该软件为测试数据集保留大约30%的观察值,并将其余的观察值用于训练数据集。
rng (“默认”) c = cvpartition(钓鱼台。物种,“坚持”, 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,…,的家
.
损失(Mdl,台“响应”,“LossFun”、“crossentropy”)
指定计算模型的交叉熵损失Mdl
.
“LossFun”
- - - - - -损失函数“classiferror”
(默认)|“binodeviance”
|“crossentropy”
|“指数”
|“枢纽”
|分对数的
|“mincost”
|“二次”
|函数处理损失函数,指定为内置的损失函数名称或函数句柄。
该表列出了可用的损耗函数。使用其对应的字符向量或字符串标量指定一个。
价值 | 描述 |
---|---|
“binodeviance” |
二项异常 |
“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
误分类代价的数值矩阵。例如,Cost = ones(K) - eye(K)
指定0
正确分类及1
误分类。
例子:“LossFun”、“crossentropy”
数据类型:字符
|字符串
|function_handle
“ObservationsIn”
- - - - - -预测数据观测维数“行”
(默认)|“列”
预测器数据观测维数,指定为“行”
或“列”
.
请注意
如果您对预测器矩阵进行定位,使观察结果与列对应并指定“ObservationsIn”、“列”
,那么您可能会经历计算时间的显著减少。你不能指定“ObservationsIn”、“列”
用于表中的预测器数据。
数据类型:字符
|字符串
“重量”
- - - - - -观察权重资源描述
分类损失函数测量分类模型的预测不准确性。当你在许多模型中比较同一类型的损失时,损失越低表明预测模型越好。
考虑以下场景。
l为加权平均分类损失。
n为样本量。
二进制分类:
yj是被观察的类标签。软件将其编码为-1或1,表示负类或正类(或中第一类或第二类)一会
分别属性)。
f(Xj)为观察(行)的阳性分类评分j预测数据的X.
米j=yjf(Xj)为分类观察的分类评分j对应的类yj.积极的价值观米j表明正确的分类,对平均损失贡献不大。负的米j指出错误的分类,并对平均损失有很大的贡献。
对于支持多类分类的算法(即,万博1manbetxK≥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。因此,
给定此场景,下表描述了支持的损失函数,可以使用万博1manbetx“LossFun”
名称-值对的论点。
损失函数 | 的价值LossFun |
方程 |
---|---|---|
二项异常 | “binodeviance” |
|
十进制错误分类率 | “classiferror” |
为得分最大的类对应的类标签。我{·}是指示函数。 |
叉损失 | “crossentropy” |
加权交叉熵损失是
的权重 都归一化为n而不是1。 |
指数损失 | “指数” |
|
铰链的损失 | “枢纽” |
|
分对数损失 | 分对数的 |
|
最小的误分类成本 | “mincost” |
该软件计算加权最小期望分类成本使用这一程序的观察j= 1,…,n.
最小期望误分类代价损失的加权平均值为
如果使用默认代价矩阵(其元素值为0表示正确分类,1表示不正确分类),则 |
二次损失 | “二次” |
这个数字比较的损失函数(除了“crossentropy”
和“mincost”
超过分数米一个观察。一些函数被归一化通过点(0,1)。
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。