主要内容

ClassificationPartitionedLinear

包裹:classreg.learning.partition
超:ClassificationPartitionedModel

用于高维数据二值分类的交叉验证线性模型

描述

ClassificationPartitionedLinear是一组在交叉验证褶皱上训练的线性分类模型。为了得到一个交叉验证的线性分类模型,使用fitclinear并指定交叉验证选项之一。你可以使用一种或多种“kfold”方法来估计分类的质量,或者线性分类模型的泛化程度:kfoldPredictkfoldLosskfoldMargin,kfoldEdge

每次训练的对折的意见“kfold”方法使用模型来预测出倍观测的响应。例如,假设用5重,你交叉验证。在这种情况下,软件随机分配各观察为五个大致同样大小的组。这培训倍包含基团的四(即,大致数据的4/5)和测试倍包含另一组(即大约1/5的数据)。在这种情况下,交叉验证的过程如下:

  1. 软件训练第一个模型(存储在CVMdl.Trained{1}),使用后四组的观察结果,保留第一组的观察结果作验证。

  2. 软件训练第二个模型,它被储存在CVMdl.Trained {2},利用第一组和最后三组的观察结果。该软件保留第二组的观察结果以供验证。

  3. 在第三到第五个模型中,软件以类似的方式运行。

如果验证通过调用kfoldPredict,它用第一种模型计算第一组观测结果的预测,用第二种模型计算第二组观测结果的预测,以此类推。简而言之,该软件对每一个观察结果都使用未经观察而训练的模型进行估计。

笔记

ClassificationPartitionedLinear模型对象不存储预测数据集。

建设

CVMdl = fitclinear (X, Y,名称,值)创建一个交叉验证,线性分类模型时的名字或者是'CrossVal'“CVPartition”“坚持”,或“KFold”.有关详细信息,请参见fitclinear

属性

全部展开

交叉验证属性

交叉验证的型号名称,指定为特征向量。

例如“线性”指定用于二元分类或回归交叉验证的线性模型。

数据类型:字符

交叉验证的折叠数,指定为正整数。

数据类型:

交叉验证的参数值,例如,用于交验证线性模型的名称 - 值对的参数值,指定为一个对象。ModelParameters不包含估计参数。

的访问属性ModelParameters使用点符号。

在训练数据的观测,指定为正数的标量的数量。

数据类型:

数据分区,指示软件如何将数据分割成交叉验证折叠,指定为cvpartition模型。

上训练交叉验证褶皱线性分类模型,指定为的单元阵列ClassificationLinear模型。训练有素的K.细胞,其中K.为折叠次数。

数据类型:细胞

用于交叉验证模型的观测权重,指定为数值向量。W.NumObservations元素。

该软件可实现W.使得特定类中的观测的权重加起来为该类的先验概率。

数据类型:|

用于交验证模型中观察到类标签,指定为绝对或字符阵列,逻辑或数字载体,或字符向量的单元阵列。yNumObservations元素,并且是与输入参数相同的数据类型y你通过了fitclinear交叉验证模型。(该软件把字符串数组作为字符向量的单元阵列。)

每一行的y表示在所述预测数据对应的观察被观察者的分类。

数据类型:分类|字符|逻辑|||细胞

其他分类属性

分类预测指标,指定为一个正整数向量。CategoricalPredictors包含指示对应的预测器是分类的索引值。索引值在1到之间P.,在那里P.为用于训练模型的预测器数量。如果没有任何预测器是绝对的,则此属性为空([])。

数据类型:|

训练中使用的唯一类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元数组。类名具有相同的数据类型作为类别标签y(该软件把字符串数组作为字符向量的单元阵列。)类名也决定了类的顺序。

数据类型:分类|字符|逻辑|||细胞

此属性是只读的。

误分类代价,指定为方阵数值矩阵。成本K.行和列,其中K.是的类的数量。

成本(一世j将一个点分类的成本是多少j如果它真正的阶级是一世.的行和列的顺序成本对应于类的顺序类名

数据类型:

预测器名称按其在预测器数据中的出现顺序排列,指定为字符向量的单元格数组。的长度PredictorNames等于训练数据中变量的个数X资源描述用作预测变量。

数据类型:细胞

此属性是只读的。

先验类概率,指定为数字向量。之前有和类一样多的元素类名,元素的顺序与元素的顺序相对应类名

数据类型:

响应变量名,指定为字符向量。

数据类型:字符

分数转换功能应用到预测的分数,指定为函数的名称或函数句柄。

对于线性分类模型和变换前,预测的分类评分为观测值X(行向量)FX) =Xβ+B.,在那里βB.相当于Mdl.BetaMdl.Bias, 分别。

例如,要将分数转换函数更改为:函数,使用点表示法。

  • 对于内置函数,输入此代码并替换函数使用表中的值。

    Mdl。ScoreTransform = '函数'

    价值 描述
    “doublelogit” 1 / (1 +E.2X
    “invlogit” 日志(X/ (1 -X)))
    “ismax” 将分数最大的班级的分数设置为1,并将所有其他班级的分数设置为0
    “Logit模型” 1 / (1 +E.-X
    “没有任何”“身份” X(转换)
    “标志” 1X<0
    为0X= 0.
    1X> 0
    “对称” 2X- 1
    “symmetricismax” 将分数最大的班级的分数设置为1,并将所有其他班级的分数设置为-1
    “symmetriclogit” 2 / (1 +E.-X) - 1

  • 对于一个MATLAB®函数或您定义的函数,输入其函数句柄。

    Mdl。ScoreTransform = @函数;

    函数必须接受每个类的原始分数矩阵,然后返回一个大小相同的矩阵,表示每个类的转换分数。

数据类型:字符|function_handle.

方法

kfoldEdge 未用于训练的观测值的分类边缘
kfoldLoss 训练中未使用的观察值的分类损失
kfoldMargin 训练中未使用的观察值的分类边距
kfoldPredict 预测不用于训练的观察值的标签

复制语义

价值。要了解值类如何影响复制操作,请参见复制对象

例子

全部收缩

加载NLP数据集。

加载nlpdata

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

识别与统计和机器学习工具箱™文档网页对应的标签。

Ystats = Y ==“统计数据”;

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

rng (1);%的再现性CVMdl=fitclinear(X,y测试,'CrossVal''在'
CVMdl = ClassificationPartitionedLinear CrossValidatedModel: 'Linear' ResponseName: 'Y' NumObservations: 31572 KFold: 10 Partition: [1x1 cvpartition] ClassNames: [0 1] ScoreTransform: 'none'属性,方法

CVMdl是一个ClassificationPartitionedLinear交叉验证模型。因为fitclinear默认情况下实现10倍交叉验证,CVMdl.Trained包含十ClassificationLinear包含的训练线性分类模型为每个褶皱的效果模型。

估计未折叠观测的标签,并通过传递估计泛化误差CVMdlkfoldPredictkfoldLoss, 分别。

oofLabels = kfoldPredict (CVMdl);通用电气= kfoldLoss (CVMdl)
通用电气(ge) = 7.6017 e-04

估计的概化误差小于0.1%的错误分类观测。

为了确定一个良好的套索惩罚强度的线性分类模型使用逻辑回归学习者,实施5倍交叉验证。

加载NLP数据集。

加载nlpdata

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

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

Ystats = Y ==“统计数据”;

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

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

旨在模型。要提高执行速度,可以调换预测器数据并指定观察结果在列中。使用SpaRSA估计系数。将目标函数梯度的容差降低到1 e-8

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

CVMdl是一个ClassificationPartitionedLinear模型。因为fitclinear实现5倍交叉验证,CVMdl包含5ClassificationLinear模型上的每个褶皱的软件列车。

显示第一个训练的线性分类模型。

Mdl1 = CVMdl。训练有素的{1}
Mdl1 = ClassificationLinear ResponseName: 'Y' 的类名:[0 1] ScoreTransform: '分对数' 贝塔:[34023x11双]偏压:[-13.3808 -13.3808 -13.3808 -13.3808 -13.3808 ...] LAMBDA:1.0000e-06 3.5481E-06 1.2589e-05 4.4668e-05 ...]学习者: '后勤' 的属性,方法

Mdl1是一个ClassificationLinear模型对象。fitclinear构造Mdl1通过对前四个褶皱培训。因为LAMBDA你能想到一个正规化强度的序列吗Mdl1作为11个模型,其中每个正则化强度对应一个模型LAMBDA

估计交叉验证分类错误。

ce = kfoldLoss (CVMdl);

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

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

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

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

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

图包含2级轴的对象。轴对象1职称考试,采样统计信息包含的线路类型的对象。轴对象2包含型线的对象。

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

idxFinal = 7;

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

MdlFinal = selectModels(MDL,idxFinal);

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

介绍了在R2016a