主要内容

kfoldLoss

训练中未使用的观察值的分类损失

描述

例子

l= kfoldLoss (CVMdl返回旨在分类损失得到的交叉验证,二元,线性分类模型CVMdl.也就是说,对于每一次折叠,kfoldLoss估计当它使用所有其他观察进行训练时,对观察的分类损失。

l包含组成的线性分类模型中每个正规化强度的分类损失CVMdl

例子

l= kfoldLoss (CVMdl名称,值使用一个或多个指定的附加选项名称,值对参数。例如,指示哪些折叠用于损失计算或指定分类损失函数。

输入参数

全部展开

交叉验证,二元,线性分类模型,指定为ClassificationPartitionedLinear模型对象。您可以创建ClassificationPartitionedLinear模型使用fitclinear并指定任意一个交叉验证参数,例如名称-值对参数,CrossVal

为了获得估计,kfoldLoss应用了用于交叉验证线性分类模型的相同数据(XY).

名称-值参数

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

用于分类评分预测的折叠索引,指定为逗号分隔对,由“折叠”和一个正整数的数字向量。的元素折叠必须从1通过CVMdl。KFold

例子:“折叠”,[1 4 10]

数据类型:|

损失函数,指定为逗号分隔对组成“LossFun”以及一个内置的丢失函数名或函数句柄。

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

    价值 描述
    “binodeviance” 二项异常
    “classiferror” 十进制错误分类率
    “指数” 指数损失
    “枢纽” 铰链的损失
    分对数的 物流损失
    “mincost” 最小的预期误分类成本(用于后验概率的分类分数)
    “二次” 二次损失

    “mincost”适用于后验概率的分类分数。对于线性分类模型,逻辑回归学习器默认返回后验概率作为分类分数,但支持向量机学习器不返回(参见预测).

  • 使用函数句柄表示法指定你自己的函数。

    n是观测的次数XK为不同类别的数目(元素个数(Mdl.ClassNames)Mdl是输入模型)。您的函数必须有这个签名

    lossvalue =lossfun(C、S、W、成本)
    地点:

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

    • 选择函数名(lossfun).

    • C是一个n——- - - - - -K逻辑矩阵,其行表示相应的观测属于哪一类。中的列顺序对应于类的顺序Mdl。ClassNames

      构造C通过设置C (p, q) = 1如果观察p是在课堂上,每一行。设置行中的所有其他元素p0

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

    • W是一个n-乘1数值向量的观测权值。如果你通过W,软件将它们的总和标准化1

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

    使用以下命令指定函数“LossFun”@lossfun

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

损失聚合级别,指定为逗号分隔对组成“模式”“平均”“个人”

价值 描述
“平均” 回报率损失在所有折线上平均
“个人” 返回每一折的损失

例子:“模式”,“个人”

输出参数

全部展开

旨在分类损失,以数字标量、向量或矩阵的形式返回。的解释l取决于LossFun

R正则化强度的数量是交叉验证的模型(存储在元素个数(CVMdl.Trained {1} .Lambda)),F为存储的折叠数CVMdl。KFold).

  • 如果模式“平均”,然后l是1 -R向量。L (j是否使用正规化强度的交叉验证模型的所有折线上的平均分类损失j

  • 否则,l是一个F——- - - - - -R矩阵。L (j是折页的分类损失吗使用正规化强度的交叉验证模型j

估计lkfoldLoss使用创建的数据CVMdl(见XY).

例子

全部展开

加载NLP数据集。

负载nlpdata

X是预测数据的稀疏矩阵,和Y是类标签的分类向量。数据中有两个以上的类。

模型应该识别网页中的单词计数是否来自统计学和机器学习工具箱™文档。因此,识别与统计和机器学习工具箱™文档网页相对应的标签。

Ystats = Y ==“统计数据”

交叉验证一个二元线性分类模型,该模型可以识别文档网页中的单词计数是否来自统计学和机器学习工具箱™文档。

rng (1);%的再现性Ystats CVMdl = fitclinear (X,“CrossVal”“上”);

CVMdl是一个ClassificationPartitionedLinear模型。默认情况下,该软件实现10倍交叉验证。属性可以改变折叠的数量“KFold”名称-值对的论点。

估计出折叠,分类错误率的平均值。

ce = kfoldLoss (CVMdl)
ce = 7.6017 e-04

或者,您可以通过指定名称-值对来获得每倍分类错误率“模式”,“个人”kfoldLoss

加载NLP数据集。预处理数据,如估计k折交叉验证分类误差,并对预测数据进行转置。

负载nlpdataYstats = Y ==“统计数据”;X = X ';

使用5倍交叉验证对二元线性分类模型进行交叉验证。利用SpaRSA优化目标函数。指定预测器观察值对应于列。

rng (1);%的再现性Ystats CVMdl = fitclinear (X,“规划求解”“sparsa”“KFold”5,...“ObservationsIn”“列”);CMdl = CVMdl.Trained {1};

CVMdl是一个ClassificationPartitionedLinear模型。它包含属性训练有素的,这是一个5 × 1单元格数组,包含一个ClassificationLinear软件使用每个折叠的训练集训练的模型。

创建一个匿名函数来测量线性损失,也就是说,

l j - w j y j f j j w j

w j 重量是用于观察的吗j, y_j为响应j(负类为-1,非负类为1),f_j为观察的原始分类评分j.自定义损失函数必须以特定的形式编写。有关编写自定义损失函数的规则,请参见LossFun名称-值对的论点。因为功能不使用分类费用,使用kfoldLoss忽略它的位置。

linearloss = @ (C, S W ~)和(- W。*总和(S . C * 2) / (W)之和;

估计平均交叉验证分类损失使用线性损失函数。同时,获得每一折的损失。

ce = kfoldLoss (CVMdl,“LossFun”linearloss)
ce = -8.0982
ceFold = kfoldLoss (CVMdl,“LossFun”linearloss,“模式”“个人”
ceFold =5×1-8.3165 -8.7633 -7.4342 -8.0423 -7.9347

为了确定一个良好的套索惩罚强度的线性分类模型使用逻辑回归学习,比较测试样本分类错误率。

加载NLP数据集。预处理数据,如指定自定义分类损失

负载nlpdataYstats = Y ==“统计数据”;X = X ';

创建一组11个对数间隔的正则化强度 1 0 - 6 通过 1 0 0 5

-0.5λ= logspace(6日,11);

交叉验证二元,线性分类模型使用5倍交叉验证,并使用每个正则化强度。利用SpaRSA优化目标函数。将目标函数梯度的容差降低到1 e-8

rng (10);%的再现性Ystats CVMdl = fitclinear (X,“ObservationsIn”“列”...“KFold”5,“学习者”“物流”“规划求解”“sparsa”...“正规化”“套索”“λ”λ,“GradientTolerance”1 e-8)
CVMdl = ClassificationPartitionedLinear CrossValidatedModel: 'Linear' ResponseName: 'Y' NumObservations: 31572 KFold: 5 Partition: [1x1 cvpartition] ClassNames: [0 1] ScoreTransform: 'none'属性,方法

提取经过训练的线性分类模型。

Mdl1 = CVMdl。训练有素的{1}
Mdl1 = ClassificationLinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'logit' Beta: [34023x11 double] Bias:[-13.3808 -13.3808 -13.3808 -13.3808 -13.3808 -13.3808 -13.3808 -13.3808 -13.3808 -13.3808…[1.0000e-06 3.5481e-06 1.2589e-05 4.4668e-05…]学习者:逻辑属性,方法

Mdl1是一个ClassificationLinear模型对象。因为λ你能想到一个正规化强度的序列吗Mdl作为11个模型,每个正规化强度在λ

估计交叉验证的分类误差。

ce = kfoldLoss (CVMdl);

因为有11种正规化强度,ce是分类错误率的1 × 11向量。

更高的值λ导致预测变量的稀疏性,这是一个很好的分类器的品质。对于每个正则化强度,使用整个数据集和交叉验证模型时相同的选项训练线性分类模型。确定每个模型的非零系数的数目。

Mdl = fitclinear (X, Ystats“ObservationsIn”“列”...“学习者”“物流”“规划求解”“sparsa”“正规化”“套索”...“λ”λ,“GradientTolerance”1 e-8);numNZCoeff = (Mdl.Beta ~ = 0)之和;

在同一图中,绘制每个正则化强度的交叉验证、分类错误率和非零系数的频率。在对数尺度上绘制所有变量。

图;[h, hL1, hL2] = plotyy (log10(λ)log10 (ce),...log10(λ)log10 (numNZCoeff));hL1。标志=“o”;hL2。标志=“o”;ylabel (h (1),“log_{10}分类错误”) ylabel (h (2),“log_ {10} nonzero-coefficient频率”)包含(“log_{10}λ的)标题(测试样本统计的)举行

图中包含2个轴对象。标题为Test-Sample Statistics的轴对象1包含一个类型为line的对象。axis对象2包含一个类型为line的对象。

选择平衡预测变量稀疏性和低分类误差的正则化强度指标。在本例中,是介于之间的值 1 0 - 4 1 0 - 1 应该足够了。

idxFinal = 7;

从下面选择模型Mdl与所选择的正规化强度。

idxFinal MdlFinal = selectModels (Mdl);

MdlFinal是一个ClassificationLinear模型包含一个正规化强度。要估计新观测值的标签,请通过MdlFinal和新的数据预测

更多关于

全部展开

介绍了R2016a