失利

类:ClassificationLinear

线性分类模型分类损失

描述

大号=损失(MDLXÿ返回分类损失为二进制,线性分类模型MDL使用预测数据X和相应的类标签中ÿ大号包含在每个正规化强度分类出错率MDL

大号=损失(___名称,值使用任何一个或多个指定的上一个语法和其他选项的名称,值对参数。例如,您可以指定预测数据对应的是列的意见或指定分类损失函数。

输入参数

展开全部

二元的,线性分类模型,指定为ClassificationLinear模型对象。您可以创建一个ClassificationLinear使用模型对象fitclinear

预测数据,指定为ñ-通过-p全或稀疏矩阵。的这种取向X表明行对应于个人的观察,以及列对应于个体预测变量。

注意

如果你的定位预测矩阵,以便观察对应的列,并指定'ObservationsIn', '列',那么你可能会遇到在计算时间减少显著。

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

数据类型:|

类标签,指定为分类,字符或字符串数​​组,逻辑或数字载体,或字符向量的单元阵列。

  • 的数据类型ÿ必须是相同的数据类型Mdl.ClassNames(该软件把字符串数组作为字符向量的单元阵列。)

  • 在不同的类中ÿ必须是一个子集Mdl.ClassNames

  • 如果ÿ是一个字符阵列,则每个元素必须对应于所述阵列的一行。

  • 长度ÿ和观察的数量X必须相等。

数据类型:明确的|烧焦||合乎逻辑|||细胞

名称 - 值对参数

指定可选的用逗号分隔的对名称,值参数。名称是参数的名称和是对应的值。名称必须出现引号内。您可以按照任何顺序指定多个名称和值对参数名1,值1,...,NameN,值N

损耗函数,指定为逗号分隔的一对组成的'LossFun'和一个内置的,亏损函数名或函数句柄。

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

    描述
    'binodeviance' 二项式越轨
    'classiferror' 分类错误
    “指数” 指数
    '合页' 合页
    'Logit模型' 物流
    'mincost' 最小预期误判成本(对于那些后验概率分类分)
    “二次” 二次

    'mincost'适合于那些后验概率分类分数。对于线性分类模型,回归学生返回后验概率为默认分类分数,但SVM学习者不(见预测)。

  • 通过使用功能手柄符号指定自己的函数。

    ñ是观察在数Xķ是不同的类的数量(numel(Mdl.ClassNames),其中MDL是输入模型)。你的函数必须有这样的签名:

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

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

    • 你选择的函数名(lossfun)。

    • C是一个ñ-通过-ķ与指示所述对应的观测所属的类的行逻辑矩阵。列顺序对应于类顺序Mdl.ClassNames

      构造C通过设置C(P,Q)= 1如果观察p在类q,对于每一行。组行的所有其他元素p0

    • 小号是一个ñ-通过-ķ分类评分的数值矩阵。列顺序对应于类顺序Mdl.ClassNames小号是分类分数的矩阵,类似于的输出预测

    • w ^是一个ñ×1观察权重的数值向量。如果您通过w ^,软件标准化的权重总和为1

    • 成本ķ-通过-ķ误判成本数字矩阵。例如,成本=酮(K) - 眼(K)指定的成本0正确分类,1对于错误分类。

例:'LossFun',@lossfun

数据类型:烧焦||function_handle

预测数据观测尺寸,指定为逗号分隔的一对组成的'ObservationsIn''列'要么“行”

注意

如果你的定位预测矩阵,以便观察对应的列,并指定'ObservationsIn', '列',那么你可能会遇到的优化,执行时间显著减少。

观察权重,指定为逗号分隔的一对组成的“权重”和正值的数值向量。如果您提供的权重,失利计算的加权分类损失。

ñ是观察在数X

  • numel(重量)一定是ñ

  • 默认,权重那些(ñ,1)

失利规格化权重总结在相应类的先验概率的值。

数据类型:|

输出参数

展开全部

分类的损失,返回一个数字标或行向量。的解释大号依赖于取决于权重LossFun

大号的尺寸与相同Mdl.LambdaL(Ĵ是训练使用正则化强度的线性分类模型的分类损失Mdl.Lambda(Ĵ

例子

展开全部

加载NLP的数据集。

加载nlpdata

X是预测数据的稀疏矩阵,并且ÿ是类别标签的分类矢量。有超过两个班中的数据。

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

Ystats = Y ==“统计”;

培养出二元线性分类模型,它可以识别在文档网页中的字数是否来自统计和机器学习工具箱™文档。指定要持币观察的30%。优化利用SpaRSA目标函数。

RNG(1);%用于重现CVMdl = fitclinear(X,Ystats,“求解”'sparsa''坚持',0.30);CMDL = CVMdl.Trained {1};

CVMdlClassificationPartitionedLinear模型。它包含属性熟练,这是一个1×1单元阵列保持ClassificationLinear模型,使用软件中的训练集训练。

提取分区定义的训练和测试数据。

trainIdx =训练(CVMdl.Partition);testIdx =试验(CVMdl.Partition);

估计训练 - 和测试样品分类误差。

ceTrain =损耗(CMDL,X(trainIdx,:),Ystats(trainIdx))
ceTrain = 1.3572e-04
ceTest =损耗(CMDL,X(testIdx,:),Ystats(testIdx))
ceTest = 5.2804e-04

因为在一个正则强CMDLceTrainceTest是数字标量。

加载NLP的数据集。预处理的数据作为估计试验样本分类损失,和转置预测数据。

加载nlpdataYstats = Y ==“统计”;X = X';

培养出二元线性分类模型。指定要持币观察的30%。优化利用SpaRSA目标函数。指定预测意见对应的列。

RNG(1);%用于重现CVMdl = fitclinear(X,Ystats,“求解”'sparsa''坚持',0.30,...'ObservationsIn''列');CMDL = CVMdl.Trained {1};

CVMdlClassificationPartitionedLinear模型。它包含属性熟练,这是一个1×1单元阵列保持ClassificationLinear模型,使用软件中的训练集训练。

提取分区定义的训练和测试数据。

trainIdx =训练(CVMdl.Partition);testIdx =试验(CVMdl.Partition);

创建一个匿名函数,线性措施的损失,也就是说,

大号 = Σ Ĵ - w ^ Ĵ ÿ Ĵ F Ĵ Σ Ĵ w ^ Ĵ

w ^ Ĵ 是用于观察的重量Ĵ ÿ Ĵ 为响应Ĵ(-1为负类,否则为1),和 F Ĵ 是原始分类评分的观察Ĵ。自定义损失函数必须写在一个特定的形式。有关编写自定义的损失函数的规则,请参见LossFun名称 - 值对的参数。

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

估计使用线性损失函数的训练 - 和测试样品分类损失。

ceTrain =损耗(CMDL,X(:,trainIdx),Ystats(trainIdx),'LossFun',linearloss,...'ObservationsIn''列'
ceTrain = -7.8330
ceTest =损耗(CMDL,X(:,testIdx),Ystats(testIdx),'LossFun',linearloss,...'ObservationsIn''列'
ceTest = -7.7383

要确定使用逻辑回归学习线性分类模型良好的套索刑罚强度,比较试验样品的分类错误率。

加载NLP的数据集。预处理的数据作为指定自定义分类损失

加载nlpdataYstats = Y ==“统计”;X = X';RNG(10);%用于重现分区= cvpartition(Ystats,'坚持',0.30);testIdx =试验(分区);XTEST = X(:,testIdx);YTest = Ystats(testIdx);

创建从一组11对数间隔的正规化优势 1 0 - 6 通过 1 0 - 0

波长= LOGSPACE(-6,-0.5,11);

火车二进制使用每个正规化的优势,线性分类模型。优化利用SpaRSA目标函数。降低目标函数的梯度公差1E-8

CVMdl = fitclinear(X,Ystats,'ObservationsIn''列'...'CVPartition',划分,'学习者'“物流”“求解”'sparsa'...“正规化”'套索'“拉姆达”,λ,'GradientTolerance',1E-8)
CVMdl = classreg.learning.partition.ClassificationPartitionedLinear CrossValidatedModel: '线性' ResponseName: 'Y' NumObservations:31572 KFold:1个分区:[1x1的cvpartition]类名:[0 1] ScoreTransform: '无' 的属性,方法

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

MDL = CVMdl.Trained {1}
MDL = ClassificationLinear ResponseName: 'Y' 的类名:[0 1] ScoreTransform: '分对数' 贝塔:[34023x11双]偏压:[1x11双] LAMBDA:[1x11双]学习者: '物流' 的属性,方法

MDLClassificationLinear模型对象。因为LAMBDA是正规化的优势序列,你能想到的MDL作为11款车型,一个在每个正规化强度LAMBDA

估计测试样品分类误差。

CE =损失(MDL,X(:,testIdx),Ystats(testIdx),'ObservationsIn''列');

因为有11分正规化的优势,CE是分类错误率的1×11矢量。

值越大,LAMBDA导致预测变量稀疏,这是一个分类的优良品质。对于每一个正规化的强度,使用整个数据集和,当您交叉验证模型相同的选项列车线性分类模型。确定每个模型的非零系数的数量。

MDL = fitclinear(X,Ystats,'ObservationsIn''列'...'学习者'“物流”“求解”'sparsa'“正规化”'套索'...“拉姆达”,λ,'GradientTolerance',1E-8);numNZCoeff =总和(Mdl.Beta〜= 0);

在同一图中,画出测试样品错误率以及对于每个正则化强度的非零系数的频率。绘制对数刻度的所有变量。

数字;并[h,HL1,HL2] = plotyy(日志10(LAMBDA),日志10(CE),...日志10(LAMBDA),日志10(numNZCoeff + 1));hL1.Marker ='O';hL2.Marker ='O';ylabel(H(1),'LOG_ {10}分类错误')ylabel(H(2),“LOG_ {10}的非零系数频率”)xlabel('LOG_ {10} LAMBDA')标题(“试验采样统计信息”)保持

选择正规化强度指数是平衡预测变量的稀疏性和低分类误差。在这种情况下,之间的值 1 0 - 4 1 0 - 1 应该足够了。

idxFinal = 7;

从模型MDL与所选择的正则化强度。

MdlFinal = selectModels(MDL,idxFinal);

MdlFinalClassificationLinear建模含有一个正则化强度。为了估计新的观察标签,合格MdlFinal和新数据预测

更多关于

展开全部

算法

默认情况下,观察权重是事先类概率。如果您在使用供应权权重,那么软件标准化它们总和为在各自的类中的先验概率。该软件使用权重整化来估计加权分类损失。

扩展功能

介绍了在R2016a