交叉验证的多类ECOC模型支持向量机(SVM)等分类万博1manbetx
ClassificationPartitionedECOC
是一组经过交叉验证的折叠训练的错误校正输出码(ECOC)模型。使用一个或多个“kfold”函数估计交叉验证分类的质量:kfoldPredict
,kfoldLoss
,kfoldMargin
,kfoldEdge
,kfoldfun
。
每个受训的“kfold”方法使用模型训练倍(以倍),观察到预测进行验证倍(超出倍)观察的响应。例如,假设您使用5重交叉验证。在这种情况下,软件随机分配各观察分成五组相同大小(大约)的。该培训褶皱包含四个组(大约4/5的数据),以及验证倍包含另一组(大约是数据的1/5)。在这种情况下,交叉验证的过程如下:
该软件训练的第一款车型(存储在CVMdl.Trained {1}
),使用后四组的观察结果,并保留第一组的观察结果以供验证。
软件训练第二种模型(存储在CVMdl.Trained {2}
),利用第一组及后三组的观察资料。软件将观察结果保存在第二组中以备验证。
软件在第三、第四和第五种模型中以类似的方式进行。
如果验证通过使用kfoldPredict
,该软件计算在组观测预测我通过使用我TH模型。总之,软件估计通过使用而没有观察训练的模型中的每个观察响应。
您可以创建一个ClassificationPartitionedECOC
模型有两种方式:
CrossValidatedModel
- - - - - -旨在模型名称交叉验证的模型名称,指定为字符向量。
例如,“ECOC”
指定交叉验证的ECOC模型。
数据类型:烧焦
KFold
- - - - - -交叉验证的褶皱数目交叉验证的褶皱,指定为正整数的数目。
数据类型:双
ModelParameters
- - - - - -交叉验证的参数值交叉验证的参数值,指定为一个对象。的参数值对应于用于交验证ECOC分类的名称 - 值对参数值。ModelParameters
不包含估计参数。
的属性ModelParameters
使用点符号。
NumObservations
- - - - - -观察数训练数据中的观察数,指定为正数值标量。
数据类型:双
划分
- - - - - -数据分区cvpartition
模型数据分区表示软件如何将数据分成交叉验证褶皱,指定为cvpartition
模型。
熟练
- - - - - -经过交叉验证折叠训练的紧凑分类器CompactClassificationECOC
模型在交叉验证折叠上训练的紧凑分类器,指定为的单元格数组CompactClassificationECOC
模型。熟练
有k细胞,k为折叠次数。
数据类型:细胞
W
- - - - - -观察权重用于交验证模型,指定为数值向量观察权重。W
有NumObservations
元素。
该软件标准化用于训练,这样的权重nansum (W)
是1
。
数据类型:单
|双
X
- - - - - -非标准预测数据用于交叉验证分类器的非标准化预测器数据,指定为数值矩阵或表。
每一行的X
对应于一个观测,并且每一列对应于一个变量。
数据类型:单
|双
|表格
Y
- - - - - -观察到的类标签观察到用于交叉验证模型的类标签,指定为分类或字符数组、逻辑或数字向量或字符向量的单元数组。Y
有NumObservations
元件并且具有相同的数据类型作为输入参数Y
你将其传递到fitcecoc
交叉验证模型。(该软件将字符串数组视为字符向量的单元数组。)
每一行的Y
表示的对应行的观察分类X
。
数据类型:明确的
|烧焦
|逻辑
|单
|双
|细胞
BinaryLoss
- - - - - -二进位学习者损失函数“binodeviance”
|“指数”
|“汉明”
|“枢纽”
|“线性”
|分对数的
|“二次”
二进制学习者损失函数,指定为代表的损失函数名称的字符向量。
如果您使用训练使用不同的损失函数的二进制学习者,则该软件集BinaryLoss
至“汉明”
。以潜在地提高精度,通过使用一个预测或损失计算期间指定默认值以外的二元损失函数'BinaryLoss'
的名称-值对参数kfoldPredict
或kfoldLoss
。
数据类型:烧焦
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
包含与包含分类预测器的预测器数据列对应的索引值。如果没有谓词是范畴性的,则此属性为空([]
)。
数据类型:单
|双
一会
- - - - - -独特的类标签在训练中使用的唯一类标签,指定为分类或字符数组、逻辑或数字向量或字符向量的单元数组。一会
数据类型与类标签相同Y
。(该软件将字符串数组视为字符向量的单元数组。)一会
也决定了类的顺序。
数据类型:明确的
|烧焦
|逻辑
|单
|双
|细胞
成本
- - - - - -误分类代价此属性是只读的。
误分类成本,指定为正方形数字矩阵。成本
有K行和列,其中K为类数。
成本(i, j)
是分类的点到类的费用j
如果它的真实类我
。行和列的顺序成本
对应于类的顺序一会
。
fitcecoc
在不同类型的二元学习器中加入不同的误分类代价。
数据类型:双
PredictorNames
- - - - - -预测的名字在他们出现的顺序预测名称的预测数据X
,指定为字符向量的单元阵列。长度PredictorNames
等于列的数量X
。
数据类型:细胞
之前
- - - - - -在此之前类概率此属性是只读的。
先验类概率,指定为数值向量。之前
中元素的数量与类的数量相同一会
中元素的顺序对应于类的顺序一会
。
fitcecoc
在不同类型的二元学习器中加入不同的误分类代价。
数据类型:双
ResponseName
- - - - - -响应变量名响应变量名,指定为字符向量。
数据类型:烧焦
ScoreTransform
- - - - - -分数变换函数,用于预测分数“doublelogit”
|'invlogit'
|'ismax'
|分对数的
|“没有”
|函数处理|……用于预测分数的分数转换函数,指定为函数名或函数句柄。
将分数转换函数更改为函数
,例如,使用点符号。
对于一个内置的功能,输入验证码,更换函数
表中有一个值。
Mdl.ScoreTransform ='函数';
价值 | 描述 |
---|---|
“doublelogit” |
1 /(1 +e-2x) |
'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 |
交叉验证的ECOC模型的分类边缘 |
kfoldLoss |
对于交叉验证ECOC模型分类损失 |
kfoldMargin |
交叉验证的ECOC模型的分类裕度 |
kfoldPredict |
对交叉验证的ECOC模型中的观测结果进行分类 |
kfoldfun |
使用交叉验证的ECOC模型的交叉验证功能 |
用支持向量机二值学习器对ECOC分类器进行交叉验证,并估计广义分类误差。
加载Fisher虹膜数据集。指定预测数据X
和响应数据Y
。
负载fisheririsX =量;Y =物种;rng (1);%用于重现
创建一个SVM模板,并对预测器进行标准化。
T = templateSVM(“标准化”,真正的)
T =用于分类SVM拟合模板。阿尔法:为0x1双] BoxConstraint:[] CacheSize的:[] CachingMethod: '' ClipAlphas:[] DeltaGradientTolerance:[]小量:[] GapTolerance:[] KKTTolerance:[] IterationLimit:[] KernelFunction: '' KernelScale:[]KernelOffset:[] KernelPolynomialOrder:[] NumPrint:[]女:[] OutlierFraction:[] RemoveDuplicates:[] ShrinkagePeriod:[]求解: '' StandardizeData:1个SaveSupportVectors:万博1manbetx[] VerbosityLevel:[]版本:2所述的方法:“SVM'类型:‘分类’
t
为SVM模板。大多数模板对象属性都是空的。在训练ECOC分类器时,软件将适用的属性设置为默认值。
训练ECOC分类,并指定类的顺序。
Mdl = fitcecoc (X, Y,“学习者”,T,...“类名”,{'setosa',“多色的”,“弗吉尼亚”});
Mdl
是ClassificationECOC
分类器。您可以使用点符号访问它的属性。
旨在Mdl
使用10倍交叉验证。
CVMdl = crossval (Mdl);
CVMdl
是ClassificationPartitionedECOC
交叉验证的ECOC分类器。
估计广义分类错误。
genError = kfoldLoss(CVMdl)
genError = 0.0400
广义分类误差为4%,说明ECOC分类器具有较好的泛化能力。
使用火车一抗所有ECOC分类GentleBoost
决策树与代理分割的集成。为了加速训练,bin数值预测器和使用并行计算。只有在以下情况下才有效fitcecoc
使用树形学习者。训练后,使用10倍交叉验证估计分类误差。注意,并行计算需要并行计算工具箱™。
加载示例数据
装入并检查心律失常
数据集。
负载心律失常[N,P] =尺寸(X)
n = 452
P = 279
isLabels =独特(Y);nLabels =元素个数(isLabels)
nLabels = 13
汇总(分类(Y))
值计数百分比1 245 54.20%2 44 9.73%3 15 3.32%4 15 3.32%5 13 2.88%6 25 5.53%7 3 0.66%8 2 0.44%9 9 1.99%10 50 11.06%14 4 0.88%15 5 1.11%16 22 4.87%
数据集包含279
预测因子,和样本容量452
相对较小。在16个不同标签中,只有13个在回应中出现(Y
)。每个标签描述不同程度的心律失常,54.20%的观察结果在课堂上进行1
。
训练单一对所有ECOC分类器
创建一个合奏的模板。您必须指定至少三个参数:一个方法,许多学习者,和学习者的类型。在这个例子中,指定“GentleBoost”
该方法,One hundred.
以及一个决策树模板,该决策树模板使用代理分割,因为存在缺失的观察结果。
tTree = templateTree(“代孕”,“上”);tEnsemble = templateEnsemble(“GentleBoost”,100,tTree);
tEnsemble
是模板对象。它的大多数属性是空的,但是软件在训练时用默认值填充它们。
使用决策树的集合作为二进制学习器来训练一个对所有的ECOC分类器。为了加快训练速度,可以使用并行计算。
分档('NumBins',50
) - 当你有一个大的训练数据集,可以加快使用培训(精度可能减少)'NumBins'
名称 - 值对的参数。该参数才有效fitcecoc
使用树形学习者。如果你指定'NumBins'
值,然后软件将每个数值预测器放入指定数量的等概率箱子中,然后在箱子索引(而不是原始数据)上生长树。你可以试着'NumBins',50
第一,然后更改'NumBins'
值取决于精度和训练速度。
并行计算('选项',statset( 'UseParallel',真)
) - 用一个并行计算工具箱许可证,则可以加快通过使用并行计算,它发送每个二进制学习者到池中一个工人的计算。工人的数量取决于您的系统配置。当您使用决策树二进制学习者,fitcecoc
使用英特尔线程构建模块(TBB)为双核系统和上述平行化的训练。因此,指定“UseParallel”
选项不是一台计算机上有帮助。使用群集此选项。
另外,指定先验概率为1/K,其中K= 13是不同的类的数量。
选项= statset(“UseParallel”,真正的);Mdl = fitcecoc (X, Y,“编码”,'onevsall',“学习者”tEnsemble,...“在此之前”,'制服','NumBins',50岁,“选项”、选择);
使用“本地”配置文件启动并行池(parpool)…连接到并行池(worker数量:6)。
Mdl
是ClassificationECOC
模型。
交叉验证
交叉验证使用10倍交叉验证的ECOC分类器。
CVMdl = crossval (Mdl,“选项”、选择);
警告:一个或多个折叠没有从所有组中包含了点。
CVMdl
是ClassificationPartitionedECOC
模型。该警告表明,当软件至少进行了一次训练时,有些类没有被表示出来。因此,这些折叠不能预测缺失类的标签。您可以使用单元索引和点表示法检查折叠的结果。例如,通过输入来访问第一个折叠的结果CVMdl.Trained {1}
。
使用交叉验证的ECOC分类器来预测验证折叠标签。你可以使用confusionchart
。通过更改内部位置属性移动图表并调整其大小,以确保百分比显示在行摘要中。
oofLabel = kfoldPredict(CVMdl,“选项”、选择);ConfMat = confusionchart (Y, oofLabel,'RowSummary',“total-normalized”);ConfMat。InnerPosition = [0.10 0.12 0.85 0.85];
重现离散化数据
利用BinEdges
训练模型的性质和离散化
函数。
X = Mdl.X;%的预测数据Xbinned =零(大小(X));边缘= Mdl.BinEdges;%查找分级预测的指标。idxNumeric =找到(〜cellfun(@的isEmpty,边缘));如果iscolumn(idxNumeric) = idxNumeric';结束为idxNumeric x = x (:,j);%将x转换为数组,如果x是一个表。如果istable(X)X = table2array(X);结束%组通过使用离散化函数X到箱中。xbinned =离散化(x,[无穷;边缘{};正]);Xbinned (:, j) = Xbinned;结束
Xbinned
包含二进制位索引,取值范围为1到箱柜的数目,对于数值预测因子。Xbinned
值是0
分类预测。如果X
包含南
s,则相应Xbinned
值是南
年代。
您点击了对应于以下MATLAB命令的链接:
在MATLAB命令窗口中输入它运行的命令。Web浏览器不支持MATLAB的命令。万博1manbetx
您也可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。