主要内容

kfoldPredict

预测不用于训练的观察结果的标签

描述

例子

标签= kfoldPredict (CVMdl返回由交叉验证的二进制线性分类模型预测的交叉验证类标签CVMdl.也就是说,对于每一次折叠,kfoldPredict在使用所有其他观测值进行训练时,预测它所提供的观测值的类标签。

标签包含组成的线性分类模型中每个正则化强度的预测类标签CVMdl

例子

标签分数= kfoldPredict(CVMdl也返回交叉验证的结果分类的分数对于两个类。分数中每个正则化强度的分类分数CVMdl

输入参数

全部展开

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

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

输出参数

全部展开

交叉验证、预测的类标签,返回为类别或字符数组、逻辑或数字矩阵或字符向量的单元格数组。

在大多数情况下,标签是一个n——- - - - - -l数组的数据类型与观察到的类标签相同(请参阅Y)用来创建CVMdl(该软件将字符串数组视为字符向量的单元格数组。)n预测器数据中的观察数(见X),l正则化强度的数量在吗CVMdl.Trained {1} .Lambda.也就是说,标签(j预测的类别标签是否用于观察采用正则化强度较高的线性分类模型CVMdl.Trained {1} .Lambda (j

如果Y字符数组和l> 1标签是类标签的单元格数组。

旨在分类的分数,作为n2 -l数字数组。n所创建的预测器数据中的观察数是多少CVMdl(见X),l正则化强度的数量在吗CVMdl.Trained {1} .Lambda评分(kj这是观察分类的分数吗成类k采用正则化强度较高的线性分类模型CVMdl.Trained {1} .Lambda (jCVMdl。一会存储类的顺序。

如果CVMdl.Trained{1}去了解“物流”,则分类分数为后验概率。

例子

全部展开

加载NLP数据集。

负载nlpdata

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

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

Ystats = Y ==“统计数据”

使用整个数据集交叉验证二进制线性分类模型,该模型可以识别文档网页中的字数是否来自统计和机器学习工具箱™文档。

rng (1);%用于再现性CVMdl = fitclinear(X,Ystats,“CrossVal”“上”);Mdl1 = CVMdl。训练有素的{1}
Mdl1 = ClassificationLinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'none' Beta: [34023x1 double]偏差:-1.0008 Lambda: 3.5193e-05学习者:'svm'属性,方法

CVMdl是一个ClassificationPartitionedLinear模型。默认情况下,该软件实现10倍交叉验证。控件可以更改折叠数“KFold”名称-值对参数。

预测观察结果的标签fitclinear没有用于训练折叠。

label = kfoldPredict(CVMdl);

因为有一个正则化的强度Mdl1标签预测的列向量包含的行数是否与观察的行数相同X

构造一个混淆矩阵。

confusitrain = confusichart (Ystats,label);

图包含一个confusimatrixchart类型的对象。

该模型错误地分类了15个“统计数据”“统计和机器学习工具箱”文档之外的文档页,并将9个页面错误地分类为“统计数据”页面。

线性分类模型只返回逻辑回归学习者的后验概率。

加载NLP数据集并对其进行预处理,如预测k-fold交叉验证标签.转置预测器数据矩阵。

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

使用5倍交叉验证交叉验证二元线性分类模型。利用SpaRSA对目标函数进行优化。将目标函数的梯度公差降低到1 e-8

rng (10);%用于再现性CVMdl = fitclinear(X,Ystats,“ObservationsIn”“列”...“KFold”5,“学习者”“物流”“规划求解”“sparsa”...“正规化”“套索”“GradientTolerance”1 e-8);

预测未用于训练每次折叠的观测的后验类概率。

[~,posterior] = kfoldPredict(CVMdl);CVMdl。一会
ans =2x1逻辑阵列0 1

因为有一个正则化的强度CVMdl是一个矩阵,有2列和2行等于观测值的数量。列包含后验概率Mdl.ClassNames(我)给定一个特定的观察结果。

计算ROC曲线的性能指标(真阳性率和假阳性率),并通过创建的方法找到ROC曲线下的面积(AUC)值rocmetrics对象。

rocObj = rocmetrics(Ystats,posterior,CVMdl.ClassNames);

绘制第二类的ROC曲线情节的函数rocmetrics

情节(rocObj一会= CVMdl.ClassNames (2))

图中包含一个轴对象。标题为ROC Curve的坐标轴对象包含3个ROC曲线、散点、直线类型的对象。这些对象表示true (AUC = 0.999), true模型工作点。

ROC曲线表明,该模型几乎完美地分类了验证观察值。

为了确定使用逻辑回归学习器的线性分类模型的良好套索惩罚强度,比较交叉验证的AUC值。

加载NLP数据集。预处理数据,如估计k倍交叉验证后验类概率

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

测试样本中有9471个观测值。

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

Lambda = logspace(-6,-0.5,11);

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

rng (10)%用于再现性CVMdl = fitclinear(X,Ystats,“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]偏差:[-13.3823 -13.3823 -13.3823 -13.3823 -13.3823 -13.3823…[Lambda: [1.0000e-06 3.5481e-06 1.2589e-05 4.4668e-05…]学习者:“逻辑”属性,方法

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

预测交叉验证的标签和后验类概率。

[label,posterior] = kfoldPredict(CVMdl);CVMdl.ClassNames;[n,K,L] = size(后验)
N = 31572
K = 2
L = 11
后(3、1、5)
Ans = 1.0000

标签是一个31572 × 11的预测标签矩阵。每一列对应于使用相应的正则化强度训练的模型的预测标签。是一个31572 × 2 × 11的后验类别概率矩阵。列对应类,页对应正则化强度。例如,后(3、1、5)表示第一类(标签)的后验概率0)由所使用的模型分配到观测3λ(5)作为正则化强度是1.0000。

对于每个模型,通过使用计算AUCrocmetrics

auc = 1:数字(Lambda);%预先配置j = 1: nummel (Lambda) rocObj = rocmetrics(Ystats,posterior(:,:,j),CVMdl.ClassNames);auc(j) = rocObj.AUC(1);结束

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

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

在同一图中,绘制每个正则化强度的测试样本错误率和非零系数的频率。在对数尺度上画出所有变量。

图yyaxis情节(log10(λ)log10 (auc),“啊——”) ylabel (“log_ {10} AUC的) yyaxis正确的plot(log10(Lambda),log10(numNZCoeff + 1),“啊——”) ylabel ('log_{10}非零系数频率')包含(“log_{10}λ的)标题(“旨在统计”)举行

图中包含一个轴对象。标题为Cross-Validated Statistics的axes对象包含2个类型为line的对象。

选择正则化强度指数,以平衡预测变量稀疏性和高AUC。在本例中,为之间的值 1 0 - 3. 1 0 - 1 应该足够了。

idxFinal = 9;

Mdl用所选的正则化强度。

MdlFinal = selectModels(Mdl,idxFinal);

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

更多关于

全部展开

版本历史

在R2016a中引入