主要内容

Kfoldloss.

交叉验证分类模型的分类损失

    描述

    例子

    l= kfoldLoss (CVMdl返回由交叉验证的分类模型获得的分类损失CVMdl.对于每一个褶皱,Kfoldloss.计算使用在训练折叠观测上培训的分类器进行验证折叠观测的分类损失。cvmdl.x.cvmdl.y.包含两组观察结果。

    例子

    l= kfoldLoss (CVMdl名称,价值返回带有由一个或多个名称-值参数指定的附加选项的分类损失。例如,您可以指定一个自定义的丢失函数。

    例子

    全部收缩

    加载电离层数据集。

    负载电离层

    种植分类树。

    树= 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

    培训交叉验证的广义添加剂模型(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岁没有交叉验证。

    输入参数

    全部收缩

    交叉验证的分区分类器,指定为aClassificationededModel.分类分类型, 要么Classificationededgam.对象。你可以用两种方式创建对象:

    • 将下表中列出的训练过的分类模型传递给它crossval对象功能。

    • 使用下表中列出的函数训练分类模型,并为该函数指定一个交叉验证名称-值参数。

    名称值对参数

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

    例子:Kfoldloss(CVMDL,'折叠',[1 2 3 5])指定使用第一个,第二,第三和第五个折叠来计算分类损耗,而是排除第四个折叠。

    要使用的折叠索引,指定为正整数向量。的元素折叠必须在范围内1cvmdl.kfold.

    该软件仅使用指定的折叠折叠

    例子:'折叠',[1 4 10]

    数据类型:单身的|

    标记以包含模型的交互术语,指定为真的要么.此论证仅对广义可加模型(GAM)有效。也就是说,您只能指定此参数CVMdlClassificationededgam.

    默认值为真的如果模型CVMdlCVMdl。训练有素的)包含交互项。该值必须为如果模型不包含交互术语。

    数据类型:逻辑

    丢失函数,指定为内置丢失函数名称或函数句柄。默认损耗函数取决于模型类型CVMdl

    • 默认值为“classiferror”如果模型类型是集合,广义添加剂模型,神经网络或支持向量机分类器。金宝app

    • 默认值为'Mincost'如果模型类型是判别分析,k最终邻居,天真的贝叶斯或树分类器。

    “classiferror”'Mincost'当你使用默认的成本矩阵时是等价的。看到算法为更多的信息。

    • 此表列出了可用损耗功能。使用其对应的字符向量或字符串标量指定一个。

      价值 描述
      “binodeviance” 二项式偏差
      “classiferror” 小数点被错误分类
      'forrorentropy' 交叉熵损失(仅适用于神经网络)
      '指数' 指数损失
      '合页' 铰链的损失
      分对数的 物流损失
      'Mincost' 最小预期的错误分类成本(用于后验概率的分类分数)
      “二次” 二次损失

      'Mincost'适用于后验概率的分类评分。的预测Kfoldpredict判别分析函数,广义可加模型,k-最近邻、朴素贝叶斯、神经网络和树分类器默认返回这些分数。

      • 用于使用的集合模型“包”要么“子”方法,分类评分默认为后验概率。用于使用的集合模型“AdaBoostM1”“AdaBoostM2”GentleBoost, 要么“LogitBoost”方法中,通过指定双对数分数变换,可以使用后验概率作为分类分数。例如,输入:

        cvmdl.scoretransform ='doublelogit'
        对于所有其他合奏方法,软件不支持后部概率作为分类分数。金宝app

      • 对于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是在课堂上每行。设置行的所有其他元素p0

      • 年代是一个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是折叠的数量。
    '累积'

    请注意

    如果你想指定这个值,CVMdl必须是A.分类分类型对象或者Classificationededgam.对象。

    • 如果CVMdl分类分类型,然后输出是长度的矢量分钟(CVMdl.NumTrainedPerFold).每个元素j是通过使用弱学习者培训的乐队获得的函数获得的所有折叠的平均值1: j

    • 如果CVMdlClassificationededgam.,然后输出值取决于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为所有折页上的平均分类损失。

    • 如果模式“个人”,然后l是A.k-1个数字列向量,其中每个折叠的分类损耗,在哪里k是折叠的数量。

    • 如果模式'累积'CVMdl分类分类型,然后l是A.分钟(CVMdl.NumTrainedPerFold)-1号数字列向量。每个元素j是否该函数通过使用弱学习器训练的集合得到的所有折叠的平均分类损失1: j

    • 如果模式'累积'CVMdlClassificationededgam.,然后输出值取决于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,表示负类或正类(或第一个或第二类一会分别属性)。

      • fXj)为观察(行)的阳性分类评分j预测数据X

      • jyjfXj)为分类观察的分类评分j对应的类yj.积极的价值观j表明正确的分类,并没有为平均损失贡献。负值j表示不正确的分类,并对平均损失显着贡献。

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

      • yj是一个矢量K- 1个零,1在对应于真实的,观察类的位置yj.例如,如果第二个观察的真正类是第三个阶级和K= 4,然后y2= [0 0 1 0] '.类的顺序对应于订单一会输入模型的属性。

      • fXj)是长度K课程的传染媒介观察的j预测数据X.分数的顺序与表中班级的顺序相对应一会输入模型的属性。

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

    • 观测权重jwj.该软件将观测权值归一化,使其和为相应的先验类别概率。软件还将先验概率归一化,使其和为1。因此,

      σ. j 1 n w j 1。

    给定此场景,下表描述了支持的损失函数,可以使用金宝app'lockfun'名称-值对的论点。

    损失函数 的价值LossFun 方程
    二项式偏差 “binodeviance” l σ. j 1 n w j 日志 1 + exp. - 2 j
    小数点被错误分类 “classiferror”

    l σ. j 1 n w j y j y j

    y j 为得分最大的类对应的类标签。·}是指示函数。

    交叉熵损失 'forrorentropy'

    'forrorentropy'仅适用于神经网络模型。

    加权交叉熵损失是

    l - σ. j 1 n w j 日志 j K n

    哪里重量 w j 都归一化为n而不是1。

    指数损失 '指数' l σ. j 1 n w j exp. - j
    铰链的损失 '合页' l σ. j 1 n w j 最大限度 0 1 - j
    分对数损失 分对数的 l σ. j 1 n w j 日志 1 + exp. - 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

    该图比较了损耗功能(除了'forrorentropy''Mincost'超过分数一个观察。某些功能被归一化以通过点(0,1)。

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

    算法

    Kfoldloss.计算相应的分类损失损失对象功能。对于特定于模型的描述,请参阅相应的损失函数参考页面在下表中。

    模型类型 损失功能
    判别分析分类器 损失
    集成分类器 损失
    广义添加剂模型分类器 损失
    k- 最终邻居分类器 损失
    朴素贝叶斯分类器 损失
    神经网络分类器 损失
    金宝app支持向量机器分类器 损失
    用于多类分类的二叉决策树 损失

    扩展能力

    在R2011A介绍