ClassificationPartitionedLinearECOC
包:classreg.learning.partition
超类:ClassificationPartitionedModel
用于高维数据多类分类的交叉验证线性纠错输出码模型
描述
ClassificationPartitionedLinearECOC
是一组纠错输出码(ECOC)模型,由线性分类模型组成,在交叉验证的折叠上训练。使用一个或多个“kfold”函数通过交叉验证评估分类质量:kfoldPredict
,kfoldLoss
,kfoldMargin
,kfoldEdge
.
每个“kfold”方法都使用在折叠内观测上训练的模型来预测折叠外观测的响应。例如,假设您使用五次折叠进行交叉验证。在这种情况下,软件将每个观察结果随机分配到五个大小大致相同的组。的培训褶皱包含四组(即大约4/5的数据)和测试褶皱包含另一组(即大约1/5的数据)。在这种情况下,交叉验证按以下方式进行。
软件训练第一个模型(存储在
CVMdl。训练有素的{1}
)使用后四组的观测值,并保留第一组的观测值进行验证。软件训练第二个模型(存储在
CVMdl。训练有素的{2}
)利用第一组和后三组的观察结果。软件保留第二组的观察结果以供验证。该软件以类似的方式处理第三、第四和第五个模型。
如果通过调用验证kfoldPredict
,它使用第一个模型计算第1组观测值的预测,使用第二个模型计算第2组观测值的预测,依此类推。简而言之,该软件使用在没有该观察的情况下训练的模型来估计每个观察的响应。
请注意
ClassificationPartitionedLinearECOC
模型对象不存储预测器数据集。
建设
CVMdl = fitcecoc(X,Y,'学习者',t,名称,值)
返回一个交叉验证的线性ECOC模型,当:
t
是“线性”
返回的模板对象templateLinear
.的名字
是其中之一“CrossVal”
,“CVPartition”
,“坚持”
,或“KFold”
.
详情请参见fitcecoc
.
属性
CrossValidatedModel
- - - - - -交叉验证的模型名称
特征向量
交叉验证的模型名称,指定为字符向量。
例如,“ECOC”
指定交叉验证的ECOC模型。
数据类型:字符
KFold
- - - - - -交叉验证的折叠数
正整数
交叉验证的折叠数,指定为正整数。
数据类型:双
ModelParameters
- - - - - -交叉验证参数值
对象
交叉验证参数值,例如,作为对象指定的用于交叉验证ECOC分类器的名值对参数值。ModelParameters
不包含估计参数。
访问属性ModelParameters
使用点表示法。
NumObservations
- - - - - -观察次数
正数值标量
训练数据中的观察数,指定为正数值标量。
数据类型:双
分区
- - - - - -数据分区
cvpartition
模型
数据分区,表示软件如何将数据分割为交叉验证折叠,指定为cvpartition
模型。
训练有素的
- - - - - -交叉验证折叠训练的紧凑分类器
单元格阵列CompactClassificationECOC
模型
的单元格数组上训练的紧凑分类器CompactClassificationECOC
模型。训练有素的
有k细胞,k是折叠的数量。
数据类型:细胞
W
- - - - - -观察权重
数值向量
用于交叉验证模型的观察权重,指定为数值向量。W
有NumObservations
元素。
该软件将用于训练的权重规范化,以便sum (W, omitnan)
是1
.
数据类型:单
|双
Y
- - - - - -观察到的类别标签
分类数组|字符数组|逻辑向量|数值向量|字符向量的单元格数组
用于交叉验证模型的观察类标签,指定为类别或字符数组、逻辑或数字向量,或字符向量的单元格数组。Y
有NumObservations
元素,并且是与输入参数相同的数据类型Y
你传给了fitcecoc
交叉验证模型。(该软件将字符串数组视为字符向量的单元格数组。)
每行Y
表示预测器数据中观测值的观测分类。
数据类型:字符
|细胞
|分类
|逻辑
|单
|双
BinaryLoss
- - - - - -二元学习器损失函数
“枢纽”
|“二次”
此属性是只读的。
二元学习器损失函数,指定为表示损失函数名称的字符向量。
默认情况下,如果所有的二元学习器都是使用SVM的线性分类模型,则BinaryLoss
是“枢纽”
.如果所有二元学习器都是使用逻辑回归的线性分类模型,则BinaryLoss
是“二次”
.方法在预测或损失计算过程中指定一个二进制损失函数,以潜在地提高精度BinaryLoss
的名称-值参数kfoldPredict
或kfoldLoss
.
有关支持的二进制损失函数的列表,金宝app请参见二元损失.
数据类型:字符
BinaryY
- - - - - -二元学习者类标签
数字矩阵|[]
二进制学习器类标签,指定为数字矩阵或[]
.
如果编码矩阵在不同折叠间相同,则
BinaryY
是一个NumObservations
——- - - - - -l矩阵,l是二元学习器的数目(大小(CodingMatrix, 2)
).的元素
BinaryY
是-1
,0
,或1
,该值对应于二分类的类赋值。该表描述了如何学习j
分配的观察k
的值对应于的二分类类BinaryY (k, j)
.价值 二分类分配 1
学习者 j
分配的观察k
到一个消极的班级。0
培训前,学习者 j
删除的观察k
从数据集中。1
学习者 j
分配的观察k
去上积极向上的课。如果编码矩阵在不同折叠间变化,则
BinaryY
为空([]
).
数据类型:双
CodingMatrix
- - - - - -指定类分配的代码
数字矩阵|[]
为二进制学习器指定类作业的代码,指定为数值矩阵或[]
.
如果编码矩阵在不同折叠间相同,则
CodingMatrix
是一个K——- - - - - -l矩阵。K是班级的数量和l是二元学习器的数目。的元素
CodingMatrix
是-1
,0
,或1
,该值对应于二分类的类赋值。该表描述了如何学习j
在课堂上布置观察我
的值对应于的二分类类CodingMatrix (i, j)
.价值 二分类分配 1
学习者 j
在课堂上布置观察我
到一个消极的班级。0
培训前,学习者 j
删除类中的观察值我
从数据集中。1
学习者 j
在课堂上布置观察我
去上积极向上的课。如果编码矩阵在不同折叠间变化,则
CodingMatrix
为空([]
).方法获得每个折叠的编码矩阵训练有素的
财产。例如,CVMdl.Trained {1} .CodingMatrix
编码矩阵是否在交叉验证ECOC模型的第一叠CVMdl
.
数据类型:双
|单
|int8
|int16
|int32
|int64
CategoricalPredictors
- - - - - -分类预测指标
正整数向量|[]
分类预测指标,指定为正整数向量。CategoricalPredictors
包含指示相应预测符是分类的索引值。索引值在1和之间p
,在那里p
用于训练模型的预测器的数量。如果没有一个预测符是分类的,则此属性为空([]
).
数据类型:单
|双
一会
- - - - - -唯一的类标签
分类数组|字符数组|逻辑向量|数值向量|字符向量的单元格数组
训练中使用的唯一类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。一会
与类标签具有相同的数据类型Y
.(该软件将字符串数组视为字符向量的单元格数组。)一会
也决定了类的顺序。
数据类型:分类
|字符
|逻辑
|单
|双
|细胞
成本
- - - - - -误分类代价
方形数值矩阵
此属性是只读的。
错误分类代价,指定为方阵数字矩阵。成本
有K行和列,其中K是类的数量。
成本(i, j)
将一个点分类的成本是多少j
如果它真正的阶级是我
.的行和列的顺序成本
中类的顺序对应一会
.
数据类型:双
PredictorNames
- - - - - -预测的名字
字符向量的单元格数组
预测器名称按其在预测器数据中的出现顺序排列,作为字符向量的单元格数组指定。的长度PredictorNames
等于训练数据中变量的数量X
或资源描述
用作预测变量。
数据类型:细胞
之前
- - - - - -先验类概率
数值向量
此属性是只读的。
优先类概率,指定为数值向量。之前
元素的数量和类的数量一样多一会
,元素的顺序对应于类的顺序一会
.
fitcecoc
结合了不同类型二元学习器的错误分类代价。
数据类型:双
ResponseName
- - - - - -响应变量名
特征向量
响应变量名,指定为字符向量。
数据类型:字符
ScoreTransform
- - - - - -分数变换函数
“doublelogit”
|“invlogit”
|“ismax”
|分对数的
|“没有”
|函数处理|……
应用于预测分数的分数转换函数,指定为函数名或函数句柄。
对于线性分类模型和变换前的预测分类评分进行观察x(行向量)为f(x) =xβ+b,在那里β而且b对应于Mdl。β
而且Mdl。偏见
,分别。
要将分数转换函数更改为,例如,函数
,使用点表示法。
对于内置函数,输入此代码并替换
函数
使用表中的值。Mdl。ScoreTransform = '函数”;
价值 描述 “doublelogit”
1 / (1 +e2x) “invlogit”
日志(x/ (1 -x)) “ismax”
将得分最大的类的得分设置为1,并将所有其他类的得分设置为0 “分对数”
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
是类标签的分类向量。
交叉验证一个多类线性分类模型,该模型可以根据页面上的字数确定文档网页来自哪个MATLAB®工具箱。
rng (1);%用于再现性CVMdl = fitcecoc(X,Y,“学习者”,“线性”,“CrossVal”,“上”)
CVMdl = ClassificationPartitionedLinearECOC CrossValidatedModel: 'LinearECOC' ResponseName: 'Y' NumObservations: 31572 KFold: 10 Partition: [1x1 cvpartition] ClassNames: [comm dsp ecoder fixedpoint…]属性,方法
CVMdl
是一个ClassificationPartitionedLinearECOC
旨在模型。因为fitcecoc
默认实现10倍交叉验证,CVMdl。训练有素的
包含10 × 1单元格向量CompactClassificationECOC
包含训练ECOC模型结果的模型,该模型由二元线性分类模型组成。
估计折叠外观察的标签,并通过传递估计泛化误差CVMdl
来kfoldPredict
而且kfoldLoss
,分别。
oofLabels = kfoldPredict(CVMdl);ge = kfoldLoss(cvdl)
Ge = 0.0958
估计泛化误差约为10%的错误分类观测值。
要改善泛化错误,请尝试指定另一个求解器,例如LBFGS。若要更改训练由线性分类模型组成的ECOC模型时的默认选项,请使用templateLinear
,然后将模板传递给fitcecoc
.
使用交叉验证找到好的套索惩罚
为确定由使用逻辑回归学习器的线性分类模型组成的ECOC模型的良好套索惩罚强度,实现5倍交叉验证。
加载NLP数据集。
负载nlpdata
X
是一个稀疏矩阵的预测数据,和Y
是类标签的分类向量。
为简单起见,在所有观察中使用“其他”标签Y
不是这样的“金宝app模型”
,“dsp”
,或“通讯”
.
Y (~ (ismember (Y, {“金宝app模型”,“dsp”,“通讯”}))) =“别人”;
创建一组11个对数间隔的正则化强度 通过 .
Lambda = logspace(-7,-2,11);
创建一个线性分类模型模板,指定使用逻辑回归学习器,使用具有优势的套索惩罚λ
,使用SpaRSA进行训练,并将目标函数梯度上的容差降低到1 e-8
.
t = templatlinear (“学习者”,“物流”,“规划求解”,“sparsa”,...“正规化”,“套索”,“λ”λ,“GradientTolerance”1 e-8);
交叉验证模型。要提高执行速度,可以调换预测器数据,并指定观察值为列。
X = X';rng (10);%用于再现性CVMdl = fitcecoc(X,Y,“学习者”t“ObservationsIn”,“列”,“KFold”5);
CVMdl
是一个ClassificationPartitionedLinearECOC
模型。
解剖CVMdl
,以及其中的每个模型。
numECOCModels = nummel (CVMdl.Trained)
numECOCModels = 5
ECOCMdl1 = CVMdl。训练有素的{1}
ECOCMdl1 = CompactClassificationECOC ResponseName: 'Y' ClassNames: [comm dsp 金宝appsimulink others] ScoreTransform: 'none' BinaryLearners: {6×1 cell} CodingMatrix: [4×6 double]属性,方法
numCLModels = nummel (ECOCMdl1.BinaryLearners)
numCLModels = 6
CLMdl1 = ECOCMdl1。BinaryLearners {1}
CLMdl1 = ClassificationLinear ResponseName: 'Y' ClassNames: [-1 1] ScoreTransform: 'logit' Beta: [34023×11 double]偏差:[-0.3169 -0.3169 -0.3168 -0.3168 -0.3168 -0.3167 -0.1725 -0.0805 -0.1762 -0.3450 -0.5174]Lambda: [1.0000e-07 3.1623e-07 1.0000e-06 3.1623e-05 1.0000e-04 3.1623e-04 1.0000e-03 0.0032 0.0100]学习者:'logistic'属性,方法
因为fitcecoc
实现5倍交叉验证,CVMdl
的5 × 1单元格数组CompactClassificationECOC
软件在每次折叠上训练的模型。的BinaryLearners
各属性CompactClassificationECOC
模型包含ClassificationLinear
模型。的数量ClassificationLinear
每个紧凑型ECOC模型中的模型取决于不同标签和编码设计的数量。因为λ
是一个正则化强度序列,你能想到吗CLMdl1
作为11个模型,每个模型中的正则化强度为1λ
.
通过绘制每个正则化强度的5倍分类误差的平均值来确定模型的泛化程度。确定将网格上的泛化误差最小化的正则化强度。
ce = kfoldLoss(CVMdl);图;plot(log10(Lambda),log10(ce)) [~,minCEIdx] = min(ce);minLambda = Lambda(minCEIdx);持有在情节(log10 (minLambda) log10 (ce (minCEIdx)),“罗”);ylabel ('log_{10} 5倍分类错误')包含(“log_{10}λ的)传说(MSE的,“最小分类错误”)举行从
利用整个数据集训练一个由线性分类模型组成的ECOC模型,并指定最小正则化强度。
t = templatlinear (“学习者”,“物流”,“规划求解”,“sparsa”,...“正规化”,“套索”,“λ”minLambda,“GradientTolerance”1 e-8);MdlFinal = fitcecoc(X,Y,“学习者”t“ObservationsIn”,“列”);
要估计新观测值的标签,请通过MdlFinal
新的数据预测
.
版本历史
在R2016a中引入
Matlab명령
다음matlab명령에해당하는링크를클릭했습니다。
명령을실행하려면matlab명령창에입력하십시오。웹브라우저는matlab명령을지원하지않습니다。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。