支持向量机等分类器的交叉验证多类ECOC模型金宝app
ClassificationPartitionedECOC
是在交叉验证褶皱上训练的一组纠错输出码(ECOC)模型。使用一个或多个“kfold”函数估计交叉验证分类的质量:kfoldPredict
,kfoldLoss
,kfoldMargin
,kfoldEdge
,kfoldfun
.
每一种“kfold”方法都使用在训练折叠(内折叠)观测上训练的模型来预测验证折叠(外折叠)观测的响应。例如,假设您使用5倍交叉验证。在这种情况下,软件将每个观察结果随机分配到大小相同(大致)的五组。的培训褶皱包含四组(大约是数据的4/5)验证褶皱包含另一组(约占数据的1/5)。在这种情况下,交叉验证的过程如下:
软件训练第一个模型(存储在CVMdl。训练有素的{1}
),并保留第一组的观测值作验证。
软件训练第二个模型(存储在CVMdl。训练有素的{2}
),利用第一组和最后三组的观察结果。该软件保留第二组的观察结果以供验证。
对于第三、第四和第五种模型,软件以类似的方式进行。
如果您使用kfoldPredict
,该软件计算出对小组观测结果的预测我通过使用我模型。简而言之,该软件通过使用未经该观察而训练的模型来估计每个观察的响应。
您可以创建ClassificationPartitionedECOC
模型有两种方式:
CrossValidatedModel
- - - - - -旨在模型名称交叉验证的模型名称,指定为字符向量。
例如,“ECOC”
指定一个交叉验证的ECOC模型。
数据类型:字符
KFold
- - - - - -交叉验证褶皱的数目交叉验证的折叠数,指定为正整数。
数据类型:双
ModelParameters
- - - - - -交叉验证的参数值作为对象指定的交叉验证参数值。参数值对应于用于交叉验证ECOC分类器的名称-值对参数值。ModelParameters
不包含估计参数。
的属性ModelParameters
使用点符号。
NumObservations
- - - - - -数量的观察训练数据中的观测数,指定为正数值标量。
数据类型:双
分区
- - - - - -数据分区cvpartition
模型数据分区,指示软件如何将数据分割成交叉验证折叠,指定为cvpartition
模型。
训练有素的
- - - - - -经过交叉验证褶皱训练的紧凑分类器CompactClassificationECOC
模型在交叉验证折叠上训练的紧凑分类器,指定为单元格数组CompactClassificationECOC
模型。训练有素的
有k细胞,k为折叠次数。
数据类型:细胞
W
- - - - - -观察权重观测权值用于交叉验证模型,指定为数值向量。W
有NumObservations
元素。
软件将用于训练的权重标准化,这样sum (W, omitnan)
是1
.
数据类型:单
|双
X
- - - - - -Unstandardized预测数据用于交叉验证分类器的非标准化预测数据,指定为数字矩阵或表。
每一行的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
包含指示对应的预测器是分类的索引值。索引值在1到之间p
,在那里p
为用于训练模型的预测器数量。如果没有任何预测器是绝对的,则此属性为空([]
).
数据类型:单
|双
一会
- - - - - -独特的类标签训练中使用的唯一类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元数组。一会
具有与类标签相同的数据类型Y
.(该软件将字符串数组视为字符向量的单元格数组。)一会
也决定了类的顺序。
数据类型:分类
|字符
|逻辑
|单
|双
|细胞
成本
- - - - - -误分类代价此属性是只读的。
误分类代价,指定为方阵数值矩阵。成本
有K行和列,其中K为类数。
成本(i, j)
将一个点分类的成本是多少j
如果它真正的阶级是我
.的行和列的顺序成本
中类的顺序一会
.
fitcecoc
在不同类型的二元学习者中,采用不同的误分类成本。
数据类型:双
PredictorNames
- - - - - -预测的名字预测器名称按其在预测器数据中的出现顺序排列X
,指定为字符向量的单元格数组。的长度PredictorNames
等于X
.
数据类型:细胞
之前
- - - - - -前类概率此属性是只读的。
先验类概率,指定为数字向量。之前
元素的数量和类的数量一样多一会
,元素的顺序与类的顺序相对应一会
.
fitcecoc
在不同类型的二元学习者中,采用不同的误分类成本。
数据类型:双
ResponseName
- - - - - -响应变量名响应变量名,指定为字符向量。
数据类型:字符
ScoreTransform
- - - - - -分数变换函数应用于预测分数“doublelogit”
|“invlogit”
|“ismax”
|分对数的
|“没有”
|函数处理|……用于预测分数的分数转换函数,指定为函数名或函数句柄。
将分数转换函数改为函数
,例如,使用点符号。
对于内置函数,输入此代码并替换函数
使用表中的值。
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
收集 |
收集的属性统计和机器学习工具箱对象从GPU |
kfoldEdge |
交叉验证ECOC模型的分类边缘 |
kfoldLoss |
交叉验证ECOC模型的分类损失 |
kfoldMargin |
交叉验证ECOC模型的分类裕度 |
kfoldPredict |
在交叉验证的ECOC模型中对观测结果进行分类 |
kfoldfun |
使用交叉验证ECOC模型进行交叉验证 |
用支持向量机二值学习器交叉验证ECOC分类器,估计广义分类误差。
载入费雪的虹膜数据集。指定预测器数据X
以及响应数据Y
.
负载fisheririsX =量;Y =物种;rng (1);%的再现性
创建一个支持向量机模板,并标准化预测器。
t = templateSVM (“标准化”,真正的)
t =适合分类支持向量机的模板。α:[0 x1双]BoxConstraint: [] CacheSize: [] CachingMethod:“ClipAlphas: [] DeltaGradientTolerance:[]ε:[]GapTolerance: [] KKTTolerance: [] IterationLimit: [] KernelFunction:“KernelScale: [] KernelOffset: [] KernelPolynomialOrder: [] NumPrint:[]ν:[]OutlierFraction: [] RemoveDuplicates: [] ShrinkagePeriod:[]解算器:"标准化数据:1 SaveSupportVector金宝apps: [] VerbosityLevel:[]版本:2方法:'SVM'类型:'分类'
t
是一个支持向量机模板。大多数模板对象属性都是空的。在训练ECOC分类器时,软件将适用属性设置为默认值。
训练ECOC分类器,并指定类的顺序。
Mdl = fitcecoc (X, Y,“学习者”t...“类名”, {“setosa”,“多色的”,“virginica”});
Mdl
是一个ClassificationECOC
分类器。您可以使用点符号来访问它的属性。
旨在Mdl
使用10倍交叉验证。
CVMdl = crossval (Mdl);
CVMdl
是一个ClassificationPartitionedECOC
旨在ECOC分类器。
估计广义分类误差。
genError = kfoldLoss (CVMdl)
genError = 0.0400
广义分类误差为4%,表明ECOC分类器具有较好的泛化能力。
使用a训练一个单一对所有ECOC分类器GentleBoost
具有代理分割的决策树集成。为了加快训练速度,bin数值预测器并使用并行计算。Binning仅在以下情况下有效fitcecoc
使用树学习者。训练后,使用10倍交叉验证估计分类误差。请注意,并行计算需要parallel computing Toolbox™。
加载示例数据
装入并检查心律失常
数据集。
负载心律失常(氮、磷)大小(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% 73 0.66% 8 2 0.44% 99 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,真的)
) -使用并行计算工具箱许可证,您可以通过使用并行计算来加快计算速度,并行计算将每个二进制学习器发送给池中的worker。worker的数量取决于您的系统配置。当你对二进制学习者使用决策树时,fitcecoc
使用英特尔®线程构建块(TBB)并行训练双核或以上系统。因此,指定“UseParallel”
选项在单个计算机上没有帮助。在集群上使用此选项。
另外,指定先验概率为1/K,在那里K= 13是不同类别的数目。
选择= statset (“UseParallel”,真正的);Mdl = fitcecoc (X, Y,“编码”,“onevsall”,“学习者”tEnsemble,...“之前”,“统一”,“NumBins”, 50岁,“选项”、选择);
使用“local”配置文件启动并行池(parpool)…连接到并行池(工作人员数量:6)。
Mdl
是一个ClassificationECOC
模型。
交叉验证
使用10倍交叉验证交叉验证ECOC分类器。
CVMdl = crossval (Mdl,“选项”、选择);
警告:一个或多个折叠不包含所有组的点。
CVMdl
是一个ClassificationPartitionedECOC
模型。警告表明,当软件训练至少一倍时,有些类没有表示。因此,这些折叠不能预测缺失类的标签。可以使用单元格索引和点表示法检查折叠的结果。例如,通过输入来访问第一次折叠的结果CVMdl。训练有素的{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 = 0(大小(X));边缘= Mdl.BinEdges;找到被分类的预测器的指数。idxNumeric =找到(~ cellfun (@isempty边缘));如果iscolumn(idxNumeric) idxNumeric = idxNumeric';结束为j = idxNumeric x = x (:,j);%如果x是一个表,则将x转换为数组。如果Istable (x) x = table2array(x);结束%使用离散函数将x分组到bins中。xbinned =离散化(x,[无穷;边缘{};正]);Xbinned (:, j) = Xbinned;结束
Xbinned
包含用于数字预测器的容器索引,范围从1到容器数量。Xbinned
值是0
分类预测。如果X
包含南
S,然后对应的Xbinned
值是南
年代。
您avez cliqué sur un lien qui对应à cette command MATLAB:
Pour exécuter la command, saisissez-la dans la fenêtre de command de MATLAB。Les navigateurs web ne支金宝app持pas Les命令MATLAB。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。