主要内容

损失

神经网络分类器分类损失

自从R2021a

    描述

    例子

    l=损失(Mdl,资源描述,ResponseVarName)返回分类损失训练的神经网络分类器Mdl使用预测数据表资源描述和类标签ResponseVarName表变量。

    l作为一个标量返回值代表默认分类错误。

    l=损失(Mdl,资源描述,Y)返回分类器的分类损失Mdl使用预测数据表资源描述和类标签向量Y

    l=损失(Mdl,X,Y)返回训练神经网络分类器分类损失Mdl使用预测数据X和相应的类标签Y

    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,“子集预测”)

    图包含2轴对象。坐标轴对象1标题预测,包含观察,ylabel边缘包含一个对象类型的酒吧。预测的坐标轴对象2标题子集,包含观察,ylabel边缘包含一个对象类型的酒吧。

    比较测试集分类边缘,或意味着利润率的分类,两个模型。

    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)标题(“预测”)

    图包含一个ConfusionMatrixChart类型的对象。图表ConfusionMatrixChart标题所有类型的预测。

    subsetLabels =预测(subsetMdl testTbl);图confusionchart (testTbl.Species subsetLabels)标题(“子集预测”)

    图包含一个ConfusionMatrixChart类型的对象。ConfusionMatrixChart类型的图表标题预测的子集。

    模型训练使用所有测试集的分类预测因子四个观察。模型训练使用的一个子集预测分类只有一个测试集的观察。

    鉴于测试集两种模型的性能,考虑使用该模型使用所有的预测,除了训练PetalWidth

    输入参数

    全部折叠

    训练神经网络分类器,指定为一个ClassificationNeuralNetwork模型对象或CompactClassificationNeuralNetwork模型对象返回的fitcnet紧凑的,分别。

    样本数据,指定为一个表。每一行的资源描述对应于一个观察,每一列对应一个预测变量。可选地,资源描述为响应变量可以包含一个额外的列。资源描述必须包含所有的预测用于火车Mdl。多列变量和细胞数组以外的细胞阵列的特征向量是不允许的。

    • 如果资源描述包含响应变量用于火车Mdl,那么你不需要指定ResponseVarNameY

    • 如果你训练Mdl使用样本数据包含在一个表中,然后输入数据损失也必须在一个表中。

    • 如果你设置“标准化”,真的fitcnet当训练Mdl,那么软件标准化的数字列预测数据使用对应的均值和标准差。

    数据类型:

    响应变量名称,指定为一个变量的名字资源描述。如果资源描述包含响应变量用于火车Mdl,那么你不需要指定ResponseVarName

    如果您指定ResponseVarName,那么你必须指定它作为特征向量或字符串标量。例如,如果响应变量是存储为Tbl.Y,然后指定ResponseVarName作为“Y”。否则,软件将所有列资源描述,包括Tbl.Y预测因子。

    响应变量必须分类,字符,或字符串数组;一个逻辑或数值向量;或一个单元阵列的特征向量。如果响应变量是一个字符数组,数组的每个元素都必须对应一行。

    数据类型:字符|字符串

    指定的类标签,分类,特点,或字符串数组;逻辑或数值向量;或细胞的特征向量。

    • 的数据类型Y的数据类型必须相同吗Mdl.ClassNames(软件对字符串数组作为细胞阵列特征向量)。

    • 的不同的类Y必须是一个子集的Mdl.ClassNames

    • 如果Y每个元素是一个字符数组,那么必须对应一个数组的行。

    • 的长度Y必须等于观测的数量X资源描述

    数据类型:分类|字符|字符串|逻辑|||细胞

    预测数据,指定为一个数字矩阵。默认情况下,损失假定每一行X对应于一个观察,每一列对应一个预测变量。

    请注意

    如果你东方预测矩阵,以便观察并指定对应列“ObservationsIn”、“列”,那么你可能会经历显著减少计算时间。

    的长度Y和观察的数量X必须是相等的。

    如果你设置“标准化”,真的fitcnet当训练Mdl,那么软件标准化的数字列预测数据使用对应的均值和标准差。

    数据类型:|

    名称-值参数

    指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

    R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

    例子:损失(Mdl,台“响应”,“LossFun”、“crossentropy”)指定计算熵损失模型Mdl

    损失函数,指定为一个内置的损失函数名或一个函数处理。

    • 此表列出了可用的损失函数。指定一个使用其相应的特征向量或字符串标量。

      价值 描述
      “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是在课堂上,为每一行。设置所有其他元素的行p0

      • 年代是一个n——- - - - - -K数字矩阵分类的分数。列顺序对应于类顺序Mdl.ClassNames年代分类是一个矩阵得分,类似的输出预测

      • W是一个n1数字的观察向量权重。

      • 成本是一个K——- - - - - -K数字矩阵的误分类代价。例如,成本= 1 (K) -眼(K)指定了一个成本0正确的分类和1误分类。

    例子:“LossFun”、“crossentropy”

    数据类型:字符|字符串|function_handle

    预测数据观察维度,指定为“行”“列”

    请注意

    如果你东方预测矩阵,以便观察并指定对应列“ObservationsIn”、“列”,那么你可能会经历显著减少计算时间。你不能指定“ObservationsIn”、“列”预测数据表。

    数据类型:字符|字符串

    观察体重、指定为一个非负数字向量或一个变量的名字资源描述。软件中每个观察权重X资源描述与相应的价值权重。的长度权重必须等于观测的数量吗X资源描述

    如果您指定输入数据表资源描述,然后权重可以是一个变量的名字资源描述包含一个数字向量。在这种情况下,您必须指定权重作为一个特征向量或字符串标量。例如,如果权重向量W存储为Tbl.W,然后指定它' W '

    默认情况下,权重的(n, 1),在那里n观察的数量吗X资源描述

    如果你提供重量,那么损失计算加权分类损失和规范权重和先验概率的值在相应的类中。

    数据类型:||字符|字符串

    更多关于

    全部折叠

    分类损失

    分类损失函数度量分类模型的预测误差。当你在考虑对比许多相同类型的损失模型,较低的损失表示一个更好的预测模型。

    考虑以下场景。

    • 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的标量分类评分模型预测真实,观察类。

    • 观察的重量jwj。软件可实现观察权重,这样他们和前到相应的类存储在概率之前财产。因此,

      j = 1 n w j = 1。

    鉴于这种情况,下表描述了支持损失函数,您可以指定使用金宝appLossFun名称-值参数。

    损失函数 的价值LossFun 方程
    二项异常 “binodeviance” l = j = 1 n w j 日志 { 1 + 经验值 ( 2 j ] }
    观察到的误分类代价 “classifcost”

    l = j = 1 n w j c y j y ^ j ,

    在哪里 y ^ j 是最大的类标签对应类分数,然后呢 c y j y ^ j 分类的用户指定的成本是一个观察到课吗 y ^ j 当它真正的类yj

    被误诊率小数 “classiferror”

    l = j = 1 n w j { y ^ j y j } ,

    在哪里{·}是指标函数。

    叉损失 “crossentropy”

    “crossentropy”只适用于神经网络模型。

    加权熵损失

    l = j = 1 n w ˜ j 日志 ( j ) K n ,

    的权重 w ˜ j 规范化和吗n而不是1。

    指数损失 “指数” l = j = 1 n w j 经验值 ( j )
    铰链的损失 “枢纽” l = j = 1 n w j 马克斯 { 0 , 1 j }
    分对数损失 分对数的 l = j = 1 n w j 日志 ( 1 + 经验值 ( j ) )
    最小的预期错误分类成本 “mincost”

    “mincost”只有分类是合适的分数是后验概率。

    软件计算加权最小分类会带来成本使用这个过程观察j= 1,…,n

    1. 估计预期的错误分类的分类成本观察Xj到类k:

      γ j k = ( f ( X j ) C ) k

      f(Xj)的列向量类的后验概率的观察XjC中存储的成本矩阵吗成本模型的属性。

    2. 为观察j,预测类标签对应最小的预期的误分类代价:

      y ^ j = argmin k = 1 , , K γ j k

    3. 使用C识别成本(cj)进行预测。

    加权平均的误分类代价最小的预期损失

    l = j = 1 n w j c j

    二次损失 “二次” l = j = 1 n w j ( 1 j ) 2

    如果你使用默认成本矩阵的元素值为0为不正确的分类正确的分类和1),那么损失值“classifcost”,“classiferror”,“mincost”都是相同的。模型与一个默认的成本矩阵,“classifcost”等于损失“mincost”大部分的时间损失。这些损失可以是不同如果预测到最大后验概率的类是不同的从预测到类以最小的预期成本。请注意,“mincost”只有分类是合适的分数是后验概率。

    这个图比较了损失函数(除了“classifcost”,“crossentropy”,“mincost”)得分一个观察。一些函数归一化通过点(0,1)。

    比较不同的损失函数的分类损失

    版本历史

    介绍了R2021a

    全部展开