主要内容

resubLoss

替换分类损失

    描述

    例子

    l= resubLoss (Mdl返回分类损失通过替换(L),或样本内分类损失,对训练的分类模型Mdl使用存储的训练数据Mdl。X并将相应的类标签存储在Mdl。Y

    解读l取决于损失函数(“LossFun”)及加权方案(Mdl。W).一般来说,更好的分类器产生更小的分类损失值。默认的“LossFun”值根据模型对象的不同而不同Mdl

    例子

    l= resubLoss (Mdl名称,值使用一个或多个名称-值参数指定其他选项。例如,“LossFun”、“binodeviance”将损失函数设置为二项偏差函数。

    例子

    全部折叠

    确定朴素贝叶斯分类器的样本内分类错误(替换损失)。一般来说,损失越小表示分类器越好。

    加载fisheriris数据集。创建X这个数字矩阵包含了150个虹膜的四个测量值。创建Y作为包含相应虹膜种类的字符向量的单元数组。

    负载fisheririsX = meas;Y =物种;

    使用预测器训练朴素贝叶斯分类器X和类标签Y.推荐的做法是指定类名。fitcnb假设每个预测因子都是条件正态分布的。

    Mdl = fitcnb(X,Y,“类名”, {“setosa”“多色的”“virginica”})
    Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 DistributionNames: {'normal' 'normal' 'normal' 'normal'} DistributionParameters: {3x4 cell}属性,方法

    Mdl是经过训练的ClassificationNaiveBayes分类器。

    估计样本内分类误差。

    L = resubLoss(Mdl)
    L = 0.0400

    朴素贝叶斯分类器对4%的训练观察结果分类错误。

    加载电离层数据集。该数据集有34个预测器和351个雷达返回二进制响应,坏的(“b”)或好(‘g’).

    负载电离层

    训练支持向量机分金宝app类器。标准化数据并指定‘g’是正类。

    SVMModel = fitcsvm(X,Y,“类名”, {“b”‘g’},“标准化”,真正的);

    SVMModel是经过训练的ClassificationSVM分类器。

    估计样本内铰链损耗。

    L = resubLoss(SVMModel,“LossFun”“枢纽”
    L = 0.1603

    铰链损耗为0.1603.铰链损耗接近0的分类器是首选的。

    训练一个包含线性项和交互项的广义加性模型(GAM),估计有交互项和没有交互项的分类损失。指定在估计训练和测试数据的分类损失时是否包括交互项。

    加载电离层数据集。该数据集有34个预测器和351个雷达返回二进制响应,坏的(“b”)或好(‘g’).

    负载电离层

    将数据集划分为两个集:一个包含训练数据,另一个包含新的、未观察到的测试数据。为新的测试数据集保留50个观察值。

    rng (“默认”%用于重现性n = size(X,1);newInds = randsample(n,50);inds = ~ismember(1:n,newInds);XNew = X(newInds,:);YNew = Y(newInds);

    使用预测器训练GAMX和类标签Y.推荐的做法是指定类名。指定包含10个最重要的交互术语。

    Mdl = fitcgam(X(inds,:),Y(inds),“类名”, {“b”‘g’},“互动”, 10)
    Mdl = ClassificationGAM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'logit' Intercept: 2.0026 interaction: [10x2 double] NumObservations: 301 Properties, Methods

    Mdl是一个ClassificationGAM模型对象。

    计算有交互项和无交互项的替换分类损失Mdl.要排除交互术语,请指定“IncludeInteractions”,假的

    resubl = resubLoss(Mdl)
    Resubl = 0
    resubl_nointeraction = resubLoss(Mdl,“IncludeInteractions”假)
    Resubl_nointeraction = 0

    估计有和没有交互项的分类损失Mdl

    l = loss(Mdl,XNew,YNew)
    L = 0.0615
    l_nointeraction = loss(Mdl,XNew,YNew,“IncludeInteractions”假)
    L_nointeraction = 0.0615

    包含交互项并不改变分类损失Mdl.经过训练的模型对所有训练样本进行了正确分类,并对大约6%的测试样本进行了错误分类。

    输入参数

    全部折叠

    分类机器学习模型,指定为一个完整的分类模型对象,如下表所示的支持模型。金宝app

    模型 分类模型对象
    广义加性模型 ClassificationGAM
    k-最近邻模型 ClassificationKNN
    朴素贝叶斯模型 ClassificationNaiveBayes
    神经网络模型 ClassificationNeuralNetwork
    金宝app单类和二元分类的支持向量机 ClassificationSVM

    名称-值参数

    指定逗号分隔的可选对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

    例子:resubLoss (Mdl LossFun,分对数)估计logit替换损失。

    标记以包括模型的交互术语,指定为真正的.这个论点仅对广义加性模型(GAM)有效。也就是说,只有当MdlClassificationGAM

    默认值为真正的如果Mdl包含交互项。取值必须为如果模型不包含交互项。

    数据类型:逻辑

    丢失函数,指定为内置丢失函数名或函数句柄。

    • 该表列出了可用的损耗函数。使用对应的字符向量或字符串标量指定一个。

      价值 描述
      “binodeviance” 二项异常
      “classiferror” 错误的十进制率分类
      “crossentropy” 交叉熵损失(仅适用于神经网络)
      “指数” 指数损失
      “枢纽” 铰链的损失
      分对数的 物流损失
      “mincost” 最小预期误分类代价(对于后验概率分类分数)
      “二次” 二次损失

      默认值取决于训练的模型(Mdl).

      • 默认值为“classiferror”如果Mdl是一个ClassificationGAMClassificationNeuralNetwork,或ClassificationSVM对象。

      • 默认值为“mincost”如果Mdl是一个ClassificationKNNClassificationNaiveBayes对象。

      有关损失函数的更多详细信息,请参见分类损失

    • 要指定自定义丢失函数,请使用函数句柄表示法。函数必须有这样的形式:

      lossvalue =lossfun(C、S、W、成本)

      • 输出参数lossvalue是一个标量。

      • 指定函数名(lossfun).

      • C是一个n——- - - - - -K逻辑矩阵,用行表示对应的观察结果所属的类别。n观察的数量在吗资源描述X,K是不同类的数量(元素个数(Mdl.ClassNames).列顺序与中的类顺序对应Mdl。ClassNames.创建C通过设置C(p,q) = 1如果观察p在课堂上,为每一行。设置row的所有其他元素p0

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

      • W是一个n-by-1观察权重的数值向量。

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

    例子:“LossFun”、“binodeviance”

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

    更多关于

    全部折叠

    分类损失

    分类损失函数度量分类模型的预测不准确性。当你在许多模型中比较同一类型的损失时,较低的损失表示较好的预测模型。

    考虑以下场景。

    • l为加权平均分类损失。

    • n是样本容量。

    • 二元分类:

      • yj是观察到的类标签。软件将其编码为-1或1,表示负数或正类(或中的第一个或第二个类)一会分别属性)。

      • fXj)为观察正级分类分数(行)j预测数据X

      • jyjfXj)为分类观察的分类分数j成对应的类yj.的正数值j指出正确的分类和不贡献太多的平均损失。的负值j指出不正确的分类和对平均损失有显著贡献。

    • 对于支持多类分类的算法(即金宝appK≥3):

      • yj是的向量K- 1个0,其中1在对应于真实的观察类的位置yj.例如,如果第二次观测的真类是第三类和K= 4,然后y2= [0 0 1 0] '.类的顺序对应于一会属性。

      • fXj)为长度K班级成绩的观察向量j预测数据X.分数的顺序与课程的顺序相对应一会属性。

      • jyjfXj).因此,j是模型为真实的、观察到的类预测的标量分类分数。

    • 观察权重jwj.软件对观察权重进行归一化处理,使其之和等于相应的先验类概率。该软件还将先验概率归一化,使其和为1。因此,

      j 1 n w j 1.

    对于这种场景,下表描述了可以使用金宝app“LossFun”名称-值对参数。

    损失函数 的价值LossFun 方程
    二项异常 “binodeviance” l j 1 n w j 日志 1 + 经验值 2 j
    错误的十进制率分类 “classiferror”

    l j 1 n w j y 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

      fXj)为观测的二类和多类分类的类后验概率列向量XjC成本矩阵是否存储在成本模型的属性。

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

      y j argmin k 1 ... K γ j k

    3. 使用C,确定所产生的成本(cj)进行预测。

    最小期望误分类成本损失的加权平均值为

    l j 1 n w j c j

    如果使用默认代价矩阵(其元素值为0表示正确分类,为1表示错误分类),则“mincost”损失相当于“classiferror”的损失。

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

    该图比较了损失函数(除“crossentropy”而且“mincost”)超过分数有一个观察。一些函数经过点(0,1)被归一化。

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

    算法

    resubLoss计算相应的分类损失损失对象的函数(Mdl).有关特定于模型的描述,请参见损失下表中的函数参考页。

    模型 分类模型对象(Mdl 损失目标函数
    广义加性模型 ClassificationGAM 损失
    k-最近邻模型 ClassificationKNN 损失
    朴素贝叶斯模型 ClassificationNaiveBayes 损失
    神经网络模型 ClassificationNeuralNetwork 损失
    金宝app单类和二元分类的支持向量机 ClassificationSVM 损失

    扩展功能

    在R2012a中介绍