主要内容gydF4y2Ba

fitcecocgydF4y2Ba

为支持向量机或其他分类器拟合多类模型金宝appgydF4y2Ba

描述gydF4y2Ba

MdlgydF4y2Ba= fitcecoc (gydF4y2Ba资源描述gydF4y2Ba,gydF4y2BaResponseVarNamegydF4y2Ba)gydF4y2Ba返回一个完整的,经过训练的,多类,gydF4y2Ba纠错输出码(ECOC)模型gydF4y2Ba使用表中的预测器gydF4y2Ba资源描述gydF4y2Ba类标签在里面gydF4y2Ba资源描述。ResponseVarNamegydF4y2Ba.gydF4y2BafitcecocgydF4y2Ba使用gydF4y2BaKgydF4y2Ba(gydF4y2BaKgydF4y2Ba- 1)/2二进制支持向量机金宝app(SVM)模型采用一对一gydF4y2Ba编码设计gydF4y2Ba,在那里gydF4y2BaKgydF4y2Ba是唯一类标签(级别)的数量。gydF4y2BaMdlgydF4y2Ba是一个gydF4y2BaClassificationECOCgydF4y2Ba模型。gydF4y2Ba

MdlgydF4y2Ba= fitcecoc (gydF4y2Ba资源描述gydF4y2Ba,gydF4y2Ba公式gydF4y2Ba)gydF4y2Ba使用表中的预测器返回一个ECOC模型gydF4y2Ba资源描述gydF4y2Ba还有班级标签。gydF4y2Ba公式gydF4y2Ba是否有响应的解释模型和预测变量的子集gydF4y2Ba资源描述gydF4y2Ba用于训练。gydF4y2Ba

MdlgydF4y2Ba= fitcecoc (gydF4y2Ba资源描述gydF4y2Ba,gydF4y2BaYgydF4y2Ba)gydF4y2Ba使用表中的预测器返回一个ECOC模型gydF4y2Ba资源描述gydF4y2Ba类的标签是向量gydF4y2BaYgydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

MdlgydF4y2Ba= fitcecoc (gydF4y2BaXgydF4y2Ba,gydF4y2BaYgydF4y2Ba)gydF4y2Ba返回使用预测器训练的ECOC模型gydF4y2BaXgydF4y2Ba还有类别标签gydF4y2BaYgydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

MdlgydF4y2Ba= fitcecoc (gydF4y2Ba___gydF4y2Ba,gydF4y2Ba名称,值gydF4y2Ba)gydF4y2Ba返回一个ECOC模型,其中包含一个或多个指定的附加选项gydF4y2Ba名称,值gydF4y2Ba对参数,使用前面的任何语法。gydF4y2Ba

例如,指定不同的二进制学习器、不同的编码设计或交叉验证。方法进行交叉验证是一种良好的实践gydF4y2BaKfoldgydF4y2Ba名称,值gydF4y2Ba对参数。交叉验证结果决定了模型的泛化程度。gydF4y2Ba

(gydF4y2BaMdlgydF4y2Ba,gydF4y2BaHyperparameterOptimizationResultsgydF4y2Ba= fitcecocgydF4y2Ba___gydF4y2Ba,gydF4y2Ba名称,值gydF4y2Ba)gydF4y2Ba属性时,还返回超参数优化详细信息gydF4y2BaOptimizeHyperparametersgydF4y2Ba名值对参数,并使用线性或核二进制学习器。为其他gydF4y2Ba学习者gydF4y2Ba,gydF4y2BaHyperparameterOptimizationResultsgydF4y2Ba的属性gydF4y2BaMdlgydF4y2Ba包含结果。gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

使用支持向量机(SVM)二元学习器训练多类纠错输出代码(ECOC)模型。金宝appgydF4y2Ba

加载费雪的虹膜数据集。指定预测器数据gydF4y2BaXgydF4y2Ba以及响应数据gydF4y2BaYgydF4y2Ba.gydF4y2Ba

负载gydF4y2BafisheririsgydF4y2BaX = meas;Y =物种;gydF4y2Ba

使用默认选项训练一个多类ECOC模型。gydF4y2Ba

Mdl = fitcecoc(X,Y)gydF4y2Ba
Mdl = ClassificationECOC ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' BinaryLearners: {3x1 cell} CodingName: 'onevsone'属性,方法gydF4y2Ba

MdlgydF4y2Ba是一个gydF4y2BaClassificationECOCgydF4y2Ba模型。默认情况下,gydF4y2BafitcecocgydF4y2Ba使用SVM二元学习器和一对一编码设计。你可以访问gydF4y2BaMdlgydF4y2Ba使用点表示法的属性。gydF4y2Ba

显示类名和编码设计矩阵。gydF4y2Ba

Mdl。Cl一个年代年代的名字年代gydF4y2Ba
ans =gydF4y2Ba3 x1细胞gydF4y2Ba{'setosa'} {'versicolor'} {'virginica'}gydF4y2Ba
编码垫= Mdl。CodingMatrixgydF4y2Ba
CodingMat =gydF4y2Ba3×3gydF4y2Ba1 1 0 -1 0 0 -1 -1gydF4y2Ba

针对三个类的一对一编码设计产生三个二进制学习器。的列gydF4y2BaCodingMatgydF4y2Ba对应于学习器,行对应于类。类的顺序与in的顺序相同gydF4y2BaMdl。Cl一个年代年代的名字年代gydF4y2Ba.例如,gydF4y2BaCodingMat (: 1)gydF4y2Ba是gydF4y2Ba(1;1;0]gydF4y2Ba并表明该软件使用分类为的所有观测值来训练第一个支持向量机二元学习器gydF4y2Ba“setosa”gydF4y2Ba而且gydF4y2Ba“多色的”gydF4y2Ba.因为gydF4y2Ba“setosa”gydF4y2Ba对应于gydF4y2Ba1gydF4y2Ba,是正类;gydF4y2Ba“多色的”gydF4y2Ba对应于gydF4y2Ba1gydF4y2Ba,所以它是负类。gydF4y2Ba

您可以使用单元索引和点表示法访问每个二进制学习器。gydF4y2Ba

Mdl。BinaryLearners {1}gydF4y2Ba第一个二元学习者gydF4y2Ba
ans = CompactClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [-1 1] ScoreTransform: 'none' Beta: [4x1 double]偏差:1.4492 KernelParameters: [1x1 struct]属性,方法gydF4y2Ba

计算再替换分类误差。gydF4y2Ba

error = resubLoss(Mdl)gydF4y2Ba
误差= 0.0067gydF4y2Ba

训练数据的分类误差很小,但分类器可能是一个过拟合模型。可以使用交叉验证分类器gydF4y2BacrossvalgydF4y2Ba然后计算交叉验证分类误差。gydF4y2Ba

训练一个由多个二元线性分类模型组成的ECOC模型。gydF4y2Ba

加载NLP数据集。gydF4y2Ba

负载gydF4y2BanlpdatagydF4y2Ba

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

创建一个默认的线性分类模型模板。gydF4y2Ba

t = templatlinear ();gydF4y2Ba

若要调整默认值,请参见gydF4y2Ba名称-值对参数gydF4y2Ba在gydF4y2BatemplateLineargydF4y2Ba页面。gydF4y2Ba

训练一个由多个二进制线性分类模型组成的ECOC模型,该模型可以根据文档网页上单词的频率分布来识别产品。为了更快的训练时间,转置预测器数据,并指定观察值对应于列。gydF4y2Ba

X = X';rng (1);gydF4y2Ba%用于再现性gydF4y2BaMdl = fitcecoc(X,Y,gydF4y2Ba“学习者”gydF4y2BatgydF4y2Ba“ObservationsIn”gydF4y2Ba,gydF4y2Ba“列”gydF4y2Ba)gydF4y2Ba
Mdl = CompactClassificationECOC ResponseName: 'Y' ClassNames: [1x13 categorical] ScoreTransform: 'none' BinaryLearners: {78x1 cell} CodingMatrix: [13x78 double]属性,方法gydF4y2Ba

或者,您可以使用以下方法训练由默认线性分类模型组成的ECOC模型gydF4y2Ba“学习者”,“线性”gydF4y2Ba.gydF4y2Ba

为了保存记忆,gydF4y2BafitcecocgydF4y2Ba返回由线性分类学习器组成的训练ECOC模型gydF4y2BaCompactClassificationECOCgydF4y2Ba模型对象。gydF4y2Ba

对ECOC分类器与SVM二元学习器进行交叉验证,并估计广义分类误差。gydF4y2Ba

加载费雪的虹膜数据集。指定预测器数据gydF4y2BaXgydF4y2Ba以及响应数据gydF4y2BaYgydF4y2Ba.gydF4y2Ba

负载gydF4y2BafisheririsgydF4y2BaX = meas;Y =物种;rng (1);gydF4y2Ba%用于再现性gydF4y2Ba

创建SVM模板,并标准化预测器。gydF4y2Ba

t = templateSVM(gydF4y2Ba“标准化”gydF4y2Ba,真正的)gydF4y2Ba
t =拟合分类支持向量机模板。Alpha: [0x1 double] BoxConstraint: [] CacheSize: [] CachingMethod: " ClipAlphas: [] DeltaGradientTolerance: [] Epsilon: [] GapTolerance: [] kkttolance: [] IterationLimit: [] KernelFunction: " KernelScale: [] KernelOffset: [] kernelpoliialorder: [] NumPrint: [] Nu: [] OutlierFraction: [] removeduplicate: [] ShrinkagePeriod: [] Solver: " StandardizeData: 1 SaveSupportVe金宝appctors: [] VerbosityLevel: [] Version: 2 Method: 'SVM' Type: 'classification'gydF4y2Ba

tgydF4y2Ba为支持向量机模板。大多数模板对象属性是空的。在训练ECOC分类器时,软件将适用的属性设置为默认值。gydF4y2Ba

训练ECOC分类器,并指定分类顺序。gydF4y2Ba

Mdl = fitcecoc(X,Y,gydF4y2Ba“学习者”gydF4y2BatgydF4y2Ba...gydF4y2Ba“类名”gydF4y2Ba, {gydF4y2Ba“setosa”gydF4y2Ba,gydF4y2Ba“多色的”gydF4y2Ba,gydF4y2Ba“virginica”gydF4y2Ba});gydF4y2Ba

MdlgydF4y2Ba是一个gydF4y2BaClassificationECOCgydF4y2Ba分类器。您可以使用点表示法访问它的属性。gydF4y2Ba

旨在gydF4y2BaMdlgydF4y2Ba使用10倍交叉验证。gydF4y2Ba

CVMdl = crossval(Mdl);gydF4y2Ba

CVMdlgydF4y2Ba是一个gydF4y2BaClassificationPartitionedECOCgydF4y2Ba交叉验证ECOC分类器。gydF4y2Ba

估计广义分类误差。gydF4y2Ba

genError = kfoldLoss(cvdl)gydF4y2Ba
genError = 0.0400gydF4y2Ba

广义分类误差为4%,说明ECOC分类器泛化效果较好。gydF4y2Ba

使用支持向量机二元学习器训练ECOC分类器。首先预测训练样本标签和类后验概率。然后预测网格中每个点的最大类后验概率。可视化结果。gydF4y2Ba

加载费雪的虹膜数据集。指定花瓣尺寸作为预测器,指定物种名称作为响应。gydF4y2Ba

负载gydF4y2BafisheririsgydF4y2BaX = meas(:,3:4);Y =物种;rng (1);gydF4y2Ba%用于再现性gydF4y2Ba

创建SVM模板。标准化预测器,并指定高斯核。gydF4y2Ba

t = templateSVM(gydF4y2Ba“标准化”gydF4y2Ba,真的,gydF4y2Ba“KernelFunction”gydF4y2Ba,gydF4y2Ba“高斯”gydF4y2Ba);gydF4y2Ba

tgydF4y2Ba为支持向量机模板。它的大部分属性都是空的。当软件训练ECOC分类器时,它将适用的属性设置为默认值。gydF4y2Ba

使用SVM模板训练ECOC分类器。将分类分数转换为类后验概率(由gydF4y2Ba预测gydF4y2Ba或gydF4y2BaresubPredictgydF4y2Ba)使用gydF4y2Ba“FitPosterior”gydF4y2Ba名称-值对参数。类指定类顺序gydF4y2Ba“类名”gydF4y2Ba名称-值对参数。控件在培训期间显示诊断消息gydF4y2Ba“详细”gydF4y2Ba名称-值对参数。gydF4y2Ba

Mdl = fitcecoc(X,Y,gydF4y2Ba“学习者”gydF4y2BatgydF4y2Ba“FitPosterior”gydF4y2Ba,真的,gydF4y2Ba...gydF4y2Ba“类名”gydF4y2Ba, {gydF4y2Ba“setosa”gydF4y2Ba,gydF4y2Ba“多色的”gydF4y2Ba,gydF4y2Ba“virginica”gydF4y2Ba},gydF4y2Ba...gydF4y2Ba“详细”gydF4y2Ba2);gydF4y2Ba
用50个消极和50个积极的观察来训练二元学习者1 (SVM)。负类指标:2正类指标:1拟合学习者1的后验概率(SVM)。用50个消极和50个积极的观察来训练二元学习者2 (SVM)。负类指标:3正类指标:1拟合学习者2的后验概率(SVM)。用50个消极和50个积极的观察来训练二元学习者3 (SVM)。负类指标:3正类指标:2拟合学习者3的后验概率(SVM)。gydF4y2Ba

MdlgydF4y2Ba是一个gydF4y2BaClassificationECOCgydF4y2Ba模型。相同的SVM模板适用于每个二元学习器,但是您可以通过传入模板的单元格向量来调整每个二元学习器的选项。gydF4y2Ba

预测训练样本标签和类后验概率。方法在计算标签和类后验概率期间显示诊断消息gydF4y2Ba“详细”gydF4y2Ba名称-值对参数。gydF4y2Ba

[label,~,~,Posterior] = resubPredict(Mdl,gydF4y2Ba“详细”gydF4y2Ba1);gydF4y2Ba
所有学习者的预测都经过计算。已计算了所有观测值的损失。计算后验概率……gydF4y2Ba
Mdl。BinaryLossgydF4y2Ba
Ans = '二次元'gydF4y2Ba

该软件将观测值分配给产生最小平均二进制损失的类。因为所有二元学习器都在计算后验概率,所以二元损失函数为gydF4y2Ba二次gydF4y2Ba.gydF4y2Ba

显示一组随机结果。gydF4y2Ba

idx = randsample(size(X,1),10,1);Mdl。Cl一个年代年代的名字年代gydF4y2Ba
ans =gydF4y2Ba3 x1细胞gydF4y2Ba{'setosa'} {'versicolor'} {'virginica'}gydF4y2Ba
表(Y (idx)、标签(idx)、后(idx:)gydF4y2Ba...gydF4y2Ba“VariableNames”gydF4y2Ba, {gydF4y2Ba“TrueLabel”gydF4y2Ba,gydF4y2Ba“PredLabel”gydF4y2Ba,gydF4y2Ba“后”gydF4y2Ba})gydF4y2Ba
ans =gydF4y2Ba10×3表gydF4y2BaTrueLabel PredLabel后路____________________________ ______________________________________ {'virginica'} {'virginica'} 0.0039322 0.003987 0.99208 {'virginica'} 0.017067 0.018263 0.96467 {'virginica'} 0.014948 0.015856 0.9692 {' vericolor '} {' vericolor '} 0.02197e -14 0.87318 0.12682 {' settosa '} {' settosa '} 0.999 0.00025092 0.00074638 {'versicolor'} 2.2195e-14 0.05943 0.94057 {'versicolor'} {'versicolor'} 2.2194e-14 0.97001 0.029985 {' settosa '}} {'setosa' } 0.999 0.00024991 0.0007474 {'versicolor'} {'versicolor'} 0.0085642 0.98259 0.0088487 {'setosa' } {'setosa' } 0.999 0.00025013 0.00074717

的列gydF4y2Ba后gydF4y2Ba对应的类顺序gydF4y2BaMdl。Cl一个年代年代的名字年代gydF4y2Ba.gydF4y2Ba

在观察到的预测器空间中定义一个值网格。预测网格中每个实例的后验概率。gydF4y2Ba

xMax = max(X);xMin = min(X);x1Pts = linspace(xMin(1),xMax(1));x2Pts = linspace(xMin(2),xMax(2));[x1Grid,x2Grid] = meshgrid(x1Pts,x2Pts);[~, ~, ~, PosteriorRegion] =预测(Mdl, [x1Grid (:), x2Grid (:)));gydF4y2Ba

对于网格上的每个坐标,绘制所有类之间的最大类后验概率。gydF4y2Ba

contourf (x1Grid x2Grid,gydF4y2Ba...gydF4y2Ba重塑(max (PosteriorRegion[], 2),大小(x1Grid, 1),大小(x1Grid, 2)));H = colorbar;h.YLabel.String =gydF4y2Ba最大后验的gydF4y2Ba;h.YLabel.FontSize = 15;持有gydF4y2Ba在gydF4y2Bagh = gscatter(X(:,1),X(:,2),Y,gydF4y2Ba“krk”gydF4y2Ba,gydF4y2Ba‘* xd‘gydF4y2Ba8);gh(2)。l我neW我dth = 2; gh(3).LineWidth = 2; title(“虹膜花瓣测量和最大后部”gydF4y2Ba)包含(gydF4y2Ba“花瓣长度(厘米)”gydF4y2Ba) ylabel (gydF4y2Ba“花瓣宽度(厘米)”gydF4y2Ba)轴gydF4y2Ba紧gydF4y2Ba传奇(gh,gydF4y2Ba“位置”gydF4y2Ba,gydF4y2Ba“西北”gydF4y2Ba)举行gydF4y2Ba从gydF4y2Ba

图中包含一个轴。标题为“虹膜花瓣测量”和“最大后验”的轴包含4个对象的类型轮廓线、线条。这些物品代表了setosa, versicolica, virgica。gydF4y2Ba

训练一个单一对所有的ECOC分类器gydF4y2BaGentleBoostgydF4y2Ba具有代理分割的决策树集合。为了加快训练速度,将数值预测器放入垃圾箱,并使用并行计算。Binning仅在以下情况有效gydF4y2BafitcecocgydF4y2Ba使用树学习器。训练结束后,使用10倍交叉验证估计分类误差。注意,并行计算需要并行计算工具箱™。gydF4y2Ba

加载样例数据gydF4y2Ba

装载和检查gydF4y2Ba心律失常gydF4y2Ba数据集。gydF4y2Ba

负载gydF4y2Ba心律失常gydF4y2Ba[n,p] = size(X)gydF4y2Ba
N = 452gydF4y2Ba
P = 279gydF4y2Ba
isLabels =唯一的(Y);nLabels = number (isLabels)gydF4y2Ba
nLabels = 13gydF4y2Ba
汇总(分类(Y))gydF4y2Ba
数值计数百分比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%gydF4y2Ba

数据集包含gydF4y2Ba279gydF4y2Ba的预测因子和样本量gydF4y2Ba452gydF4y2Ba相对较小。在16个不同的标签中,只有13个在响应中表示(gydF4y2BaYgydF4y2Ba).每个标签描述了不同程度的心律失常,54.20%的观察是在课堂上进行的gydF4y2Ba1gydF4y2Ba.gydF4y2Ba

训练一对全ECOC分类器gydF4y2Ba

创建集成模板。您必须指定至少三个参数:一个方法、若干个学习器和学习器的类型。对于本例,请指定gydF4y2Ba“GentleBoost”gydF4y2Ba对于这个方法,gydF4y2BaOne hundred.gydF4y2Ba对于学习者的数量,以及使用代理分割的决策树模板,因为存在缺失的观察。gydF4y2Ba

树= templateTree(gydF4y2Ba“代孕”gydF4y2Ba,gydF4y2Ba“上”gydF4y2Ba);tEnsemble =模板集成(gydF4y2Ba“GentleBoost”gydF4y2Ba, 100年,tTree);gydF4y2Ba

tEnsemblegydF4y2Ba模板对象。它的大部分属性都是空的,但在训练期间,软件会用默认值填充它们。gydF4y2Ba

使用决策树集合作为二叉学习器来训练一个单一对所有ECOC分类器。为了加快训练速度,可以使用宾箱和并行计算。gydF4y2Ba

  • 装箱(gydF4y2Ba“NumBins”,50岁gydF4y2Ba) -当你有一个大的训练数据集,你可以通过使用加速训练(潜在的准确性下降)gydF4y2Ba“NumBins”gydF4y2Ba名称-值对参数。此论点仅当gydF4y2BafitcecocgydF4y2Ba使用树学习器。如果您指定gydF4y2Ba“NumBins”gydF4y2Ba值,然后软件将每个数值预测器放入指定数量的等概率容器中,然后在容器索引上生长树,而不是原始数据。你可以试试gydF4y2Ba“NumBins”,50岁gydF4y2Ba先改,再改gydF4y2Ba“NumBins”gydF4y2Ba值取决于准确性和训练速度。gydF4y2Ba

  • 并行计算(gydF4y2Ba“选项”,statset (UseParallel,真的)gydF4y2Ba-使用并行计算工具箱许可证,您可以通过使用并行计算来加快计算速度,它将每个二进制学习器发送给池中的工作器。worker的数量取决于您的系统配置。当你对二叉学习器使用决策树时,gydF4y2BafitcecocgydF4y2Ba并行训练使用英特尔®线程构建块(TBB)双核及以上系统。因此,指定gydF4y2Ba“UseParallel”gydF4y2Ba选项在单台计算机上没有帮助。在集群上使用此选项。gydF4y2Ba

此外,指定先验概率为1/gydF4y2BaKgydF4y2Ba,在那里gydF4y2BaKgydF4y2Ba= 13是不同类的数量。gydF4y2Ba

选项= statset(gydF4y2Ba“UseParallel”gydF4y2Ba,真正的);Mdl = fitcecoc(X,Y,gydF4y2Ba“编码”gydF4y2Ba,gydF4y2Ba“onevsall”gydF4y2Ba,gydF4y2Ba“学习者”gydF4y2BatEnsemble,gydF4y2Ba...gydF4y2Ba“之前”gydF4y2Ba,gydF4y2Ba“统一”gydF4y2Ba,gydF4y2Ba“NumBins”gydF4y2Ba, 50岁,gydF4y2Ba“选项”gydF4y2Ba、选择);gydF4y2Ba
使用“本地”配置文件启动并行池(parpool)…连接到并行池(工人数:6)。gydF4y2Ba

MdlgydF4y2Ba是一个gydF4y2BaClassificationECOCgydF4y2Ba模型。gydF4y2Ba

交叉验证gydF4y2Ba

使用10倍交叉验证交叉验证ECOC分类器。gydF4y2Ba

CVMdl = crossval(Mdl,gydF4y2Ba“选项”gydF4y2Ba、选择);gydF4y2Ba
警告:一个或多个折叠不包含所有组中的点。gydF4y2Ba

CVMdlgydF4y2Ba是一个gydF4y2BaClassificationPartitionedECOCgydF4y2Ba模型。该警告表明,当软件至少训练一次时,某些类没有被表示。因此,这些折叠不能预测缺失类的标签。可以使用单元格索引和点表示法检查折叠的结果。例如,通过输入访问第一次折叠的结果gydF4y2BaCVMdl。训练有素的{1}gydF4y2Ba.gydF4y2Ba

使用交叉验证的ECOC分类器来预测验证折叠标签。计算混淆矩阵的方法为gydF4y2BaconfusionchartgydF4y2Ba.通过更改内部位置属性来移动图表并调整其大小,以确保百分比显示在行摘要中。gydF4y2Ba

oolabel = kfoldPredict(cvdl,gydF4y2Ba“选项”gydF4y2Ba、选择);ConfMat =混淆表(Y, oolabel,gydF4y2Ba“RowSummary”gydF4y2Ba,gydF4y2Ba“total-normalized”gydF4y2Ba);ConfMat。在nerPosition = [0.10 0.12 0.85 0.85];

复制二进制数据gydF4y2Ba

方法重新生成已分箱的预测器数据gydF4y2BaBinEdgesgydF4y2Ba属性gydF4y2Ba离散化gydF4y2Ba函数。gydF4y2Ba

X = Mdl.X;gydF4y2Ba预测数据gydF4y2BaXbinned = 0(大小(X));edges = mld . binedges;gydF4y2Ba查找已分类预测符的索引。gydF4y2BaidxNumeric = find(~cellfun(@isempty,edges));gydF4y2Ba如果gydF4y2Baiscolumn(idxNumeric) idxNumeric = idxNumeric';gydF4y2Ba结束gydF4y2Ba为gydF4y2Baj = idxNumeric x = x (:,j);gydF4y2Ba如果x是一个表,则将x转换为数组。gydF4y2Ba如果gydF4y2Bastable(x) x = table2array(x);gydF4y2Ba结束gydF4y2Ba使用离散化函数将x分组到箱子中。gydF4y2BaXbinned =离散化(x,[-inf;边缘{};正]);Xbinned(:,j) = Xbinned;gydF4y2Ba结束gydF4y2Ba

XbinnedgydF4y2Ba包含数值预测器的容器索引,范围从1到容器数。gydF4y2BaXbinnedgydF4y2Ba值是gydF4y2Ba0gydF4y2Ba对于分类预测器。如果gydF4y2BaXgydF4y2Ba包含gydF4y2Ba南gydF4y2BaS,然后是对应的gydF4y2BaXbinnedgydF4y2Ba值是gydF4y2Ba南gydF4y2Ba年代。gydF4y2Ba

自动使用超参数优化gydF4y2BafitcecocgydF4y2Ba.gydF4y2Ba

加载gydF4y2BafisheririsgydF4y2Ba数据集。gydF4y2Ba

负载gydF4y2BafisheririsgydF4y2BaX = meas;Y =物种;gydF4y2Ba

通过使用自动超参数优化,找到最小化5倍交叉验证损失的超参数。为了重现性,设置随机种子并使用gydF4y2Ba“expected-improvement-plus”gydF4y2Ba采集功能。gydF4y2Ba

rnggydF4y2Ba默认的gydF4y2BaMdl = fitcecoc(X,Y,gydF4y2Ba“OptimizeHyperparameters”gydF4y2Ba,gydF4y2Ba“汽车”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“HyperparameterOptimizationOptions”gydF4y2Ba结构(gydF4y2Ba“AcquisitionFunctionName”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“expected-improvement-plus”gydF4y2Ba))gydF4y2Ba
|====================================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar编码| | BoxConstraint | KernelScale | | |结果| |运行时| | (estim(观察) .) | | | | |====================================================================================================================| | 最好1 | | 0.10667 | 0.98396 | 0.10667 | 0.10667 | onevsone | 5.6939 | 200.36 | | 2 | | 0.066667 |最好3..6612|0.066667 | 0.068735 | onevsone | 94.849 | 0.0032549 | | 3 | Accept | 0.08 | 0.4554 | 0.066667 | 0.066837 | onevsall | 0.01378 | 0.076021 | | 4 | Accept | 0.08 | 0.24984 | 0.066667 | 0.066676 | onevsall | 889 | 38.798 | | 5 | Best | 0.04 | 0.52661 | 0.04 | 0.040502 | onevsone | 0.021561 | 0.01569 | | 6 | Accept | 0.04 | 0.32599 | 0.04 | 0.039999 | onevsone | 0.48338 | 0.02941 | | 7 | Accept | 0.04 | 0.33704 | 0.04 | 0.039989 | onevsone | 305.45 | 0.18647 | | 8 | Best | 0.026667 | 0.36611 | 0.026667 | 0.026674 | onevsone | 0.0010168 | 0.10757 | | 9 | Accept | 0.086667 | 0.24971 | 0.026667 | 0.026669 | onevsone | 0.001007 | 0.3275 | | 10 | Accept | 0.046667 | 1.3398 | 0.026667 | 0.026673 | onevsone | 736.18 | 0.071026 | | 11 | Accept | 0.04 | 0.35546 | 0.026667 | 0.035679 | onevsone | 35.928 | 0.13079 | | 12 | Accept | 0.033333 | 0.31774 | 0.026667 | 0.030065 | onevsone | 0.0017593 | 0.11245 | | 13 | Accept | 0.026667 | 0.26496 | 0.026667 | 0.026544 | onevsone | 0.0011306 | 0.062222 | | 14 | Accept | 0.026667 | 0.34133 | 0.026667 | 0.026089 | onevsone | 0.0011124 | 0.079161 | | 15 | Accept | 0.026667 | 0.24303 | 0.026667 | 0.026184 | onevsone | 0.0014395 | 0.073096 | | 16 | Best | 0.02 | 0.207 | 0.02 | 0.021144 | onevsone | 0.0010299 | 0.035054 | | 17 | Accept | 0.02 | 0.33381 | 0.02 | 0.020431 | onevsone | 0.0010379 | 0.03138 | | 18 | Accept | 0.033333 | 0.25211 | 0.02 | 0.024292 | onevsone | 0.0011889 | 0.02915 | | 19 | Accept | 0.02 | 0.31439 | 0.02 | 0.022327 | onevsone | 0.0011336 | 0.042445 | | 20 | Best | 0.013333 | 0.32092 | 0.013333 | 0.020178 | onevsone | 0.0010854 | 0.048345 | |====================================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | Coding | BoxConstraint| KernelScale | | | result | | runtime | (observed) | (estim.) | | | | |====================================================================================================================| | 21 | Accept | 0.5 | 13.143 | 0.013333 | 0.020718 | onevsall | 689.42 | 0.001007 | | 22 | Accept | 0.33333 | 0.33577 | 0.013333 | 0.018299 | onevsall | 0.0011091 | 1.2155 | | 23 | Accept | 0.33333 | 0.38918 | 0.013333 | 0.017851 | onevsall | 529.11 | 372.18 | | 24 | Accept | 0.04 | 0.20733 | 0.013333 | 0.017879 | onevsone | 853.41 | 22.141 | | 25 | Accept | 0.046667 | 0.21844 | 0.013333 | 0.018114 | onevsone | 744.03 | 6.3339 | | 26 | Accept | 0.10667 | 0.31981 | 0.013333 | 0.018226 | onevsone | 0.0010775 | 999.54 | | 27 | Accept | 0.04 | 0.26125 | 0.013333 | 0.018557 | onevsone | 0.0020893 | 0.001005 | | 28 | Accept | 0.10667 | 0.30651 | 0.013333 | 0.019634 | onevsone | 0.0010666 | 12.404 | | 29 | Accept | 0.32 | 12.703 | 0.013333 | 0.018352 | onevsall | 951.6 | 0.027202 | | 30 | Accept | 0.04 | 0.24213 | 0.013333 | 0.018597 | onevsone | 936.87 | 1.7813 |

图中包含一个轴。标题为Min目标vs.函数计算数量的轴包含2个类型为line的对象。这些对象代表最小观测目标,估计最小目标。gydF4y2Ba

__________________________________________________________ 优化完成。最大目标达到30个。总函数评估:30总运行时间:62.709秒总目标函数评估时间:39.5724最佳观测可行点:Coding BoxConstraint KernelScale ________ _____________ ___________ onevsone 0.0010854 0.048345观测目标函数值= 0.013333估计目标函数值= 0.018594函数评估时间= 0.32092最佳估计可行点(根据模型):编码BoxConstraint KernelScale ________ _____________ ___________ onevsone 0.0011336 0.042445估计目标函数值= 0.018597估计函数评估时间= 0.2867gydF4y2Ba
Mdl = ClassificationECOC ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' BinaryLearners: {3x1 cell} CodingName: 'onevsone' HyperparameterOptimizationResults: [1x1 BayesianOptimization]属性,方法gydF4y2Ba

创建两个高数据训练的多类ECOC模型。其中一个模型使用线性二元学习器,另一个模型使用核二元学习器。比较两种模型的再置换分类误差。gydF4y2Ba

一般情况下,可以通过使用对高数据进行多类分类gydF4y2BafitcecocgydF4y2Ba线性或核二元学习器。当你使用gydF4y2BafitcecocgydF4y2Ba要在高数组上训练模型,不能直接使用SVM二元学习器。但是,您可以使用使用支持向量机的线性或核二进制分类模型。gydF4y2Ba

在高数组上执行计算时,MATLAB®使用并行池(如果有并行计算工具箱™,则默认为并行池)或本地MATLAB会话。如果要在具有并行计算工具箱时使用本地MATLAB会话运行示例,可以使用gydF4y2BamapreducegydF4y2Ba函数。gydF4y2Ba

创建一个引用包含Fisher的虹膜数据集的文件夹的数据存储。指定gydF4y2Ba“NA”gydF4y2Ba值作为丢失的数据,以便gydF4y2Ba数据存储gydF4y2Ba将它们替换为gydF4y2Ba南gydF4y2Ba值。创建高版本的预测器和响应数据。gydF4y2Ba

数据存储(gydF4y2Ba“fisheriris.csv”gydF4y2Ba,gydF4y2Ba“TreatAsMissing”gydF4y2Ba,gydF4y2Ba“NA”gydF4y2Ba);T =高(ds);gydF4y2Ba
使用“本地”配置文件启动并行池(parpool)…连接到并行池(工人数:6)。gydF4y2Ba
X = [t]。年代ep一个llength t.SepalWidth t.PetalLength t.PetalWidth]; Y = t.Species;

标准化预测数据。gydF4y2Ba

Z = zscore(X);gydF4y2Ba

训练一个使用高数据和线性二元学习器的多类ECOC模型。默认情况下,当您将高数组传递给gydF4y2BafitcecocgydF4y2Ba,该软件训练线性二元学习器使用支持向量机。因为响应数据只包含三个惟一的类,所以将编码方案从“一个对所有”(使用高数据时为默认)更改为“一个对一”(使用内存数据时为默认)。gydF4y2Ba

为了重现性,使用设置随机数生成器的种子gydF4y2BarnggydF4y2Ba而且gydF4y2BatallrnggydF4y2Ba.根据工作人员的数量和tall数组的执行环境,结果可能有所不同。详细信息请参见gydF4y2Ba控制代码运行的位置gydF4y2Ba.gydF4y2Ba

rng (gydF4y2Ba“默认”gydF4y2Ba) tallrng (gydF4y2Ba“默认”gydF4y2Ba) mdlLinear = fitcecoc(Z,Y,gydF4y2Ba“编码”gydF4y2Ba,gydF4y2Ba“onevsone”gydF4y2Ba)gydF4y2Ba
训练二进制学习者1(线性)从3。训练二进制学习者2(线性)从3。训练二进制学习者3(线性)中的3。gydF4y2Ba
mdlLinear = CompactClassificationECOC ResponseName: 'Y' ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' BinaryLearners: {3×1 cell} CodingMatrix: [3×3 double]属性,方法gydF4y2Ba

mdlLineargydF4y2Ba是一个gydF4y2BaCompactClassificationECOCgydF4y2Ba由三个二元学习器组成的模型。gydF4y2Ba

训练一个使用高数据和核心二元学习器的多类ECOC模型。首先,创建一个gydF4y2BatemplateKernelgydF4y2Ba对象指定内核二进制学习器的属性;特别是,将扩展维度的数量增加到gydF4y2Ba 2gydF4y2Ba 1gydF4y2Ba 6gydF4y2Ba .gydF4y2Ba

tKernel = templateKernel(gydF4y2Ba“NumExpansionDimensions”gydF4y2Ba2 ^ 16)gydF4y2Ba
tKernel =适合分类内核的模板。BetaTolerance: [] BlockSize: [] BoxConstraint: [] Epsilon: [] NumExpansionDimensions: 65536 GradientTolerance: [] HessianHistorySize: [] IterationLimit: [] KernelScale: [] Lambda: [] Learner: 'svm' LossFunction: [] Stream: [] VerbosityLevel: [] Version: 1 Method: 'Kernel' Type: 'classification'gydF4y2Ba

默认情况下,内核二进制学习器使用svm。gydF4y2Ba

通过gydF4y2BatemplateKernelgydF4y2Ba对象gydF4y2BafitcecocgydF4y2Ba并将编码方案改为1对1。gydF4y2Ba

mdlKernel = fitcecoc(Z,Y,gydF4y2Ba“学习者”gydF4y2BatKernel,gydF4y2Ba“编码”gydF4y2Ba,gydF4y2Ba“onevsone”gydF4y2Ba)gydF4y2Ba
训练二进制学习者1(内核)从3。训练二进制学习者2(内核)从3。训练二进制学习器3(内核)从3。gydF4y2Ba
mdlKernel = CompactClassificationECOC ResponseName: 'Y' ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' BinaryLearners: {3×1 cell} CodingMatrix: [3×3 double]属性,方法gydF4y2Ba

mdlKernelgydF4y2Ba也是gydF4y2BaCompactClassificationECOCgydF4y2Ba由三个二元学习器组成的模型。gydF4y2Ba

比较两种模型的再置换分类误差。gydF4y2Ba

errorLinear =收集(丢失(mdlLinear,Z,Y))gydF4y2Ba
使用并行池“本地”评估tall表达式:-通过1 / 1:在1.4秒内完成评估,在1.6秒内完成gydF4y2Ba
errorLinear = 0.0333gydF4y2Ba
errorKernel =收集(mdlKernel,Z,Y))gydF4y2Ba
使用并行池“本地”评估tall表达式:-通过1 / 1:在15秒内完成评估,在16秒内完成gydF4y2Ba
errorKernel = 0.0067gydF4y2Ba

mdlKernelgydF4y2Ba错误分类的训练数据百分比小于gydF4y2BamdlLineargydF4y2Ba.gydF4y2Ba

输入参数gydF4y2Ba

全部折叠gydF4y2Ba

示例数据,指定为表。每行gydF4y2Ba资源描述gydF4y2Ba对应一个观测值,每一列对应一个预测值。可选地,gydF4y2Ba资源描述gydF4y2Ba可以为响应变量包含一个额外的列。不接受多列变量和字符向量单元格数组以外的单元格数组。gydF4y2Ba

如果gydF4y2Ba资源描述gydF4y2Ba包含响应变量,您希望在中使用所有剩余变量gydF4y2Ba资源描述gydF4y2Ba作为预测器,然后使用指定响应变量gydF4y2BaResponseVarNamegydF4y2Ba.gydF4y2Ba

如果gydF4y2Ba资源描述gydF4y2Ba包含响应变量,并且您希望仅在中使用其余变量的子集gydF4y2Ba资源描述gydF4y2Ba作为预测器,指定使用的公式gydF4y2Ba公式gydF4y2Ba.gydF4y2Ba

如果gydF4y2Ba资源描述gydF4y2Ba不包含响应变量,指定响应变量使用gydF4y2BaYgydF4y2Ba.响应变量的长度和个数gydF4y2Ba资源描述gydF4y2Ba行必须相等。gydF4y2Ba

数据类型:gydF4y2Ba表格gydF4y2Ba

响应变量名,指定为中的变量名gydF4y2Ba资源描述gydF4y2Ba.gydF4y2Ba

您必须指定gydF4y2BaResponseVarNamegydF4y2Ba作为字符向量或字符串标量。例如,如果响应变量gydF4y2BaYgydF4y2Ba存储为gydF4y2Ba资源描述。YgydF4y2Ba,然后指定为gydF4y2Ba“Y”gydF4y2Ba.否则,软件处理的所有列gydF4y2Ba资源描述gydF4y2Ba,包括gydF4y2BaYgydF4y2Ba,作为训练模型时的预测因子。gydF4y2Ba

响应变量必须是类别、字符或字符串数组;向量:逻辑或数字向量;或者是字符向量的单元格数组。如果gydF4y2BaYgydF4y2Ba是字符数组,则响应变量的每个元素必须对应于数组中的一行。gydF4y2Ba

类指定类的顺序是一个很好的实践gydF4y2Ba一会gydF4y2Ba名称-值参数。gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

响应变量和预测变量子集的解释模型,在表单中指定为字符向量或字符串标量gydF4y2Ba“Y ~ x1 + x2 + x3”gydF4y2Ba.在这种形式下,gydF4y2BaYgydF4y2Ba表示响应变量,和gydF4y2Bax1gydF4y2Ba,gydF4y2Bax2gydF4y2Ba,gydF4y2Bax3gydF4y2Ba表示预测变量。gydF4y2Ba

中指定变量的子集gydF4y2Ba资源描述gydF4y2Ba使用公式作为训练模型的预测因子。如果您指定了一个公式,那么该软件不使用任何变量gydF4y2Ba资源描述gydF4y2Ba没有出现在gydF4y2Ba公式gydF4y2Ba.gydF4y2Ba

公式中的变量名必须同时为gydF4y2Ba资源描述gydF4y2Ba(gydF4y2BaTbl.Properties.VariableNamesgydF4y2Ba)和有效的MATLABgydF4y2Ba®gydF4y2Ba标识符。中的变量名可以验证gydF4y2Ba资源描述gydF4y2Ba通过使用gydF4y2BaisvarnamegydF4y2Ba函数。变量名无效,则可以使用gydF4y2Bamatlab.lang.makeValidNamegydF4y2Ba函数。gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

ECOC模型训练到的类标签,指定为类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。gydF4y2Ba

如果gydF4y2BaYgydF4y2Ba是字符数组,则每个元素必须对应数组中的一行。gydF4y2Ba

的长度gydF4y2BaYgydF4y2Ba的行数gydF4y2Ba资源描述gydF4y2Ba或gydF4y2BaXgydF4y2Ba必须是相等的。gydF4y2Ba

类指定类顺序是一种良好的实践gydF4y2Ba一会gydF4y2Ba名称-值对参数。gydF4y2Ba

数据类型:gydF4y2Ba分类gydF4y2Ba|gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba|gydF4y2Ba逻辑gydF4y2Ba|gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Ba细胞gydF4y2Ba

预测器数据,指定为完整或稀疏矩阵。gydF4y2Ba

的长度gydF4y2BaYgydF4y2Ba观察的次数gydF4y2BaXgydF4y2Ba必须是相等的。gydF4y2Ba

中出现的顺序指定预测符的名称gydF4y2BaXgydF4y2Ba,使用gydF4y2BaPredictorNamesgydF4y2Ba名称-值对参数。gydF4y2Ba

请注意gydF4y2Ba

  • 对于线性分类学习器,如果你定向gydF4y2BaXgydF4y2Ba观察结果对应于列并指定gydF4y2Ba“ObservationsIn”、“列”gydF4y2Ba,那么您可以体验到优化执行时间的显著减少。gydF4y2Ba

  • 对于所有其他学习者来说,定位gydF4y2BaXgydF4y2Ba所以观察结果与行相对应。gydF4y2Ba

  • fitcecocgydF4y2Ba金宝app仅支持稀疏矩阵训练线性分类模型。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba

请注意gydF4y2Ba

软件处理gydF4y2Ba南gydF4y2Ba,空字符向量(gydF4y2Ba”gydF4y2Ba,空字符串(gydF4y2Ba""gydF4y2Ba),gydF4y2Ba< >失踪gydF4y2Ba,gydF4y2Ba<定义>gydF4y2Ba元素作为缺失的数据。该软件删除行gydF4y2BaXgydF4y2Ba中的缺失值对应gydF4y2BaYgydF4y2Ba.中缺失值的处理gydF4y2BaXgydF4y2Ba在二元学习器中有所不同。有关详细信息,请参阅二元学习器的训练函数:gydF4y2BafitcdiscrgydF4y2Ba,gydF4y2BafitckernelgydF4y2Ba,gydF4y2BafitcknngydF4y2Ba,gydF4y2BafitclineargydF4y2Ba,gydF4y2BafitcnbgydF4y2Ba,gydF4y2BafitcsvmgydF4y2Ba,gydF4y2BafitctreegydF4y2Ba,或gydF4y2BafitcensemblegydF4y2Ba.删除观察值会降低有效训练或交叉验证样本量。gydF4y2Ba

名称-值对参数gydF4y2Ba

的可选逗号分隔对gydF4y2Ba名称,值gydF4y2Ba参数。gydF4y2Ba的名字gydF4y2Ba参数名称和gydF4y2Ba价值gydF4y2Ba对应的值。gydF4y2Ba的名字gydF4y2Ba必须出现在引号内。您可以以任意顺序指定多个名称和值对参数gydF4y2BaName1, Value1,…,的家gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“学习者”,“树”、“编码”,“onevsone”、“CrossVal”,“上”gydF4y2Ba指定对所有二进制学习器使用决策树,一对一的编码设计,并实现10倍交叉验证。gydF4y2Ba

请注意gydF4y2Ba

方法时,不能使用任何交叉验证名称-值对参数gydF4y2Ba“OptimizeHyperparameters”gydF4y2Ba名称-值对参数。您可以修改交叉验证gydF4y2Ba“OptimizeHyperparameters”gydF4y2Ba只有使用gydF4y2Ba“HyperparameterOptimizationOptions”gydF4y2Ba名称-值对参数。gydF4y2Ba

ECOC分类器选项gydF4y2Ba

全部折叠gydF4y2Ba

编码设计名称,指定为逗号分隔的对,由gydF4y2Ba“编码”gydF4y2Ba一个数字矩阵或者这个表中的一个值。gydF4y2Ba

价值gydF4y2Ba 二元学习器数量gydF4y2Ba 描述gydF4y2Ba
“allpairs”gydF4y2Ba而且gydF4y2Ba“onevsone”gydF4y2Ba KgydF4y2Ba(gydF4y2BaKgydF4y2Ba- 1) / 2gydF4y2Ba 对于每个二元学习器,一个类是正的,另一个是负的,软件忽略其余的。这种设计耗尽了类对赋值的所有组合。gydF4y2Ba
“binarycomplete”gydF4y2Ba 2gydF4y2Ba (gydF4y2Ba KgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba 这种设计将类划分为所有的二进制组合,并且不忽略任何类。对于每个二元学习者,所有的课堂作业都是gydF4y2Ba-1gydF4y2Ba而且gydF4y2Ba1gydF4y2Ba作业中至少有一个正负两类。gydF4y2Ba
“denserandom”gydF4y2Ba 随机的,但大约是10loggydF4y2Ba2gydF4y2BaKgydF4y2Ba 对于每个二元学习者,软件随机将班级分为正类或负类,每种类型至少有一个。详情请参见gydF4y2Ba随机编码设计矩阵gydF4y2Ba.gydF4y2Ba
“onevsall”gydF4y2Ba KgydF4y2Ba 对于每个二元学习者,一个类是正的,其余的是负的。这种设计用尽了所有积极的课堂作业组合。gydF4y2Ba
“顺序”gydF4y2Ba KgydF4y2Ba- 1gydF4y2Ba 对于第一个二元学习者,第一堂课是负的,其余的都是正的。对于第二个二元学习者,前两类为负,其余为正,依此类推。gydF4y2Ba
“sparserandom”gydF4y2Ba 随机的,但大约是15loggydF4y2Ba2gydF4y2BaKgydF4y2Ba 对于每个二元学习器,软件随机地将类别分配为正或负,每个类别的概率为0.25,并忽略概率为0.5的类别。详情请参见gydF4y2Ba随机编码设计矩阵gydF4y2Ba.gydF4y2Ba
“ternarycomplete”gydF4y2Ba (gydF4y2Ba 3.gydF4y2Ba KgydF4y2Ba −gydF4y2Ba 2gydF4y2Ba (gydF4y2Ba KgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba 这种设计将类划分为所有三元组合。所有的课堂作业gydF4y2Ba0gydF4y2Ba,gydF4y2Ba-1gydF4y2Ba,gydF4y2Ba1gydF4y2Ba作业中至少有一节正负课。gydF4y2Ba

还可以使用自定义编码矩阵指定编码设计。自定义编码矩阵是agydF4y2BaKgydF4y2Ba——- - - - - -gydF4y2BalgydF4y2Ba矩阵。每一行对应一个类,每列对应一个二元学习器。类顺序(行)对应于中的顺序gydF4y2Ba一会gydF4y2Ba.按照以下的指导原则组成矩阵:gydF4y2Ba

  • 自定义编码矩阵的每个元素都必须是gydF4y2Ba-1gydF4y2Ba,gydF4y2Ba0gydF4y2Ba,或gydF4y2Ba1gydF4y2Ba,且该值必须对应于二分类的类赋值。的含义gydF4y2Ba编码(i, j)gydF4y2Ba即班即学习者gydF4y2BajgydF4y2Ba分配给课堂上的观察gydF4y2Ba我gydF4y2Ba.gydF4y2Ba

    价值gydF4y2Ba 二分类分配gydF4y2Ba
    1gydF4y2Ba 学习者gydF4y2BajgydF4y2Ba在课堂上布置观察gydF4y2Ba我gydF4y2Ba到一个消极的班级。gydF4y2Ba
    0gydF4y2Ba 培训前,学习者gydF4y2BajgydF4y2Ba删除类中的观察值gydF4y2Ba我gydF4y2Ba从数据集中。gydF4y2Ba
    1gydF4y2Ba 学习者gydF4y2BajgydF4y2Ba在课堂上布置观察gydF4y2Ba我gydF4y2Ba去上积极向上的课。gydF4y2Ba

  • 每个列必须至少包含一个gydF4y2Ba-1gydF4y2Ba或gydF4y2Ba1gydF4y2Ba.gydF4y2Ba

  • 对于所有列下标gydF4y2Ba我gydF4y2Ba,gydF4y2BajgydF4y2Ba这样gydF4y2Ba我gydF4y2Ba≠gydF4y2BajgydF4y2Ba,gydF4y2Ba编码(:,我)gydF4y2Ba不能平等gydF4y2Ba编码(:,j)gydF4y2Ba而且gydF4y2Ba编码(:,我)gydF4y2Ba不能平等gydF4y2Ba编码(:,j)gydF4y2Ba.gydF4y2Ba

  • 自定义编码矩阵的所有行必须不同。gydF4y2Ba

有关自定义编码设计矩阵形式的详细信息,请参见gydF4y2Ba自定义编码设计矩阵gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“编码”、“ternarycomplete”gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba|gydF4y2Baint16gydF4y2Ba|gydF4y2Baint32gydF4y2Ba|gydF4y2Baint64gydF4y2Ba|gydF4y2Baint8gydF4y2Ba

标志,指示是否将分数转换为后验概率,指定为逗号分隔的对,由gydF4y2Ba“FitPosterior”gydF4y2Ba和一个gydF4y2Ba真正的gydF4y2Ba(gydF4y2Ba1gydF4y2Ba)或gydF4y2Ba假gydF4y2Ba(gydF4y2Ba0gydF4y2Ba).gydF4y2Ba

如果gydF4y2BaFitPosteriorgydF4y2Ba是gydF4y2Ba真正的gydF4y2Ba,然后该软件将二元学习者分类分数转换为后验概率。你可以通过使用得到后验概率gydF4y2BakfoldPredictgydF4y2Ba,gydF4y2Ba预测gydF4y2Ba,或gydF4y2BaresubPredictgydF4y2Ba.gydF4y2Ba

fitcecocgydF4y2Ba不支持拟合后验概率金宝app,如果:gydF4y2Ba

  • 集成方法是gydF4y2BaAdaBoostM2gydF4y2Ba,gydF4y2BaLPBoostgydF4y2Ba,gydF4y2BaRUSBoostgydF4y2Ba,gydF4y2BaRobustBoostgydF4y2Ba,或gydF4y2BaTotalBoostgydF4y2Ba.gydF4y2Ba

  • 二元学习器(gydF4y2Ba学习者gydF4y2Ba)是实现支持向量机的线性或核分类模型。为了获得线性或核分类模型的后验概率,可以实现逻辑回归。gydF4y2Ba

例子:gydF4y2Ba“FitPosterior”,真的gydF4y2Ba

数据类型:gydF4y2Ba逻辑gydF4y2Ba

二进制学习器模板,指定为逗号分隔的对,由gydF4y2Ba“学习者”gydF4y2Ba和模板对象的字符向量、字符串标量、模板对象或单元格向量。具体来说,您可以指定二进制分类器(如SVM)以及使用的集成gydF4y2BaGentleBoostgydF4y2Ba,gydF4y2BaLogitBoostgydF4y2Ba,gydF4y2BaRobustBoostgydF4y2Ba,以解决多阶层问题。然而,gydF4y2BafitcecocgydF4y2Ba还支持多类金宝app模型作为二进制分类器。gydF4y2Ba

  • 如果gydF4y2Ba学习者gydF4y2Ba是字符向量或字符串标量,则软件使用指定算法的默认值训练每个二进制学习器。下表总结了可用的算法。gydF4y2Ba

    价值gydF4y2Ba 描述gydF4y2Ba
    “判别”gydF4y2Ba 判别分析。有关默认选项,请参见gydF4y2BatemplateDiscriminantgydF4y2Ba.gydF4y2Ba
    “内核”gydF4y2Ba 核分类模型。有关默认选项,请参见gydF4y2BatemplateKernelgydF4y2Ba.gydF4y2Ba
    “资讯”gydF4y2Ba kgydF4y2Ba最近的邻居。有关默认选项,请参见gydF4y2BatemplateKNNgydF4y2Ba.gydF4y2Ba
    “线性”gydF4y2Ba 线性分类模型。有关默认选项,请参见gydF4y2BatemplateLineargydF4y2Ba.gydF4y2Ba
    “naivebayes”gydF4y2Ba 朴素贝叶斯。有关默认选项,请参见gydF4y2BatemplateNaiveBayesgydF4y2Ba.gydF4y2Ba
    “支持向量机”gydF4y2Ba 支持向量机。有关默认选项,请参见gydF4y2BatemplateSVMgydF4y2Ba.gydF4y2Ba
    “树”gydF4y2Ba 分类树。有关默认选项,请参见gydF4y2BatemplateTreegydF4y2Ba.gydF4y2Ba

  • 如果gydF4y2Ba学习者gydF4y2Ba是一个模板对象,然后每个二进制学习器根据存储的选项进行训练。您可以使用以下命令创建模板对象:gydF4y2Ba

  • 如果gydF4y2Ba学习者gydF4y2Ba是模板对象的单元格向量,则:gydF4y2Ba

    • 细胞gydF4y2BajgydF4y2Ba对应二元学习器gydF4y2BajgydF4y2Ba(换句话说,就是专栏gydF4y2BajgydF4y2Ba的编码设计矩阵),并且单元格向量必须有长度gydF4y2BalgydF4y2Ba.gydF4y2BalgydF4y2Ba编码设计矩阵中的列数。详细信息请参见gydF4y2Ba编码gydF4y2Ba.gydF4y2Ba

    • 要使用内置的损失函数之一进行预测,则所有二元学习器必须返回相同范围内的分数。例如,您不能将默认的SVM二元学习器与默认的朴素贝叶斯二元学习器包括在一起。前者返回(-∞,∞)范围内的分数,后者返回作为分数的后验概率。否则,必须将自定义loss作为函数句柄提供给gydF4y2Ba预测gydF4y2Ba而且gydF4y2Ba损失gydF4y2Ba.gydF4y2Ba

    • 不能使用任何其他模板指定线性分类模型学习器模板。gydF4y2Ba

    • 类似地,您不能使用任何其他模板指定内核分类模型学习器模板。gydF4y2Ba

默认情况下,该软件使用默认的SVM模板训练学习者。gydF4y2Ba

例子:gydF4y2Ba“学习者”,“树”gydF4y2Ba

数值预测器的箱数,指定为逗号分隔的对,由gydF4y2Ba“NumBins”gydF4y2Ba一个正整数标量。此论点仅当gydF4y2BafitcecocgydF4y2Ba使用树学习器,也就是说,gydF4y2Ba“学习者”gydF4y2Ba要么是gydF4y2Ba“树”gydF4y2Ba或使用创建的模板对象gydF4y2BatemplateTreegydF4y2Ba创建的模板对象gydF4y2BatemplateEnsemblegydF4y2Ba与树弱学习者。gydF4y2Ba

  • 如果gydF4y2Ba“NumBins”gydF4y2BaValue为空(默认值)gydF4y2BafitcecocgydF4y2Ba不丢弃任何预测器。gydF4y2Ba

  • 如果您指定gydF4y2Ba“NumBins”gydF4y2Ba值作为正整数标量(gydF4y2BanumBinsgydF4y2Ba),然后gydF4y2BafitcecocgydF4y2Ba将每个数字预测器放入最多gydF4y2BanumBinsgydF4y2Ba等概率容器,然后在容器索引上生长树,而不是原始数据。gydF4y2Ba

    • 箱子的数量可以小于gydF4y2BanumBinsgydF4y2Ba如果一个预测器的值小于gydF4y2BanumBinsgydF4y2Ba独特的价值观。gydF4y2Ba

    • fitcecocgydF4y2Ba不包含分类预测符。gydF4y2Ba

当您使用大型训练数据集时,此分箱选项可以加快训练速度,但可能会导致潜在的准确性下降。你可以试试gydF4y2Ba“NumBins”,50岁gydF4y2Ba首先,然后根据精度和训练速度改变值。gydF4y2Ba

经过训练的模型将料仓边存储在gydF4y2BaBinEdgesgydF4y2Ba财产。gydF4y2Ba

例子:gydF4y2Ba“NumBins”,50岁gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

同时训练的二进制学习者的数目,指定为逗号分隔的对,由gydF4y2Ba“NumConcurrent”gydF4y2Ba一个正整数标量。默认值为gydF4y2Ba1gydF4y2Ba,这意味着gydF4y2BafitcecocgydF4y2Ba按顺序训练二元学习器。gydF4y2Ba

请注意gydF4y2Ba

此选项仅在使用gydF4y2BafitcecocgydF4y2Ba在高数组上。看到gydF4y2Ba高大的数组gydF4y2Ba获取更多信息。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

预测器数据观测维数,由逗号分隔的对组成gydF4y2Ba“ObservationsIn”gydF4y2Ba而且gydF4y2Ba“列”gydF4y2Ba或gydF4y2Ba“行”gydF4y2Ba.gydF4y2Ba

请注意gydF4y2Ba

  • 对于线性分类学习器,如果你定向gydF4y2BaXgydF4y2Ba观察结果对应于列并指定gydF4y2Ba“ObservationsIn”、“列”gydF4y2Ba,那么您可以体验到优化执行时间的显著减少。gydF4y2Ba

  • 对于所有其他学习者来说,定位gydF4y2BaXgydF4y2Ba所以观察结果与行相对应。gydF4y2Ba

例子:gydF4y2Ba“ObservationsIn”、“列”gydF4y2Ba

详细级别,指定为逗号分隔的对,由gydF4y2Ba“详细”gydF4y2Ba而且gydF4y2Ba0gydF4y2Ba,gydF4y2Ba1gydF4y2Ba,或gydF4y2Ba2gydF4y2Ba.gydF4y2Ba详细的gydF4y2Ba控制软件在命令窗口中显示的每个二进制学习器的诊断信息量。gydF4y2Ba

下表总结了可用的详细级别选项。gydF4y2Ba

价值gydF4y2Ba 描述gydF4y2Ba
0gydF4y2Ba 软件不显示诊断信息。gydF4y2Ba
1gydF4y2Ba 每次训练一个新的二进制学习者时,该软件都会显示诊断信息。gydF4y2Ba
2gydF4y2Ba 每次训练一个新的二进制学习者时,该软件都会显示额外的诊断信息。gydF4y2Ba

每个二元学习器都有其独立于名称-值对参数的冗长级别。要更改二进制学习器的详细级别,请创建模板对象并指定gydF4y2Ba“详细”gydF4y2Ba名称-值对参数。然后,将模板对象传递给gydF4y2BafitcecocgydF4y2Ba通过使用gydF4y2Ba“学习者”gydF4y2Ba名称-值对参数。gydF4y2Ba

例子:gydF4y2Ba“详细”,1gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba

交叉验证选择gydF4y2Ba

全部折叠gydF4y2Ba

标记来训练交叉验证的分类器,指定为逗号分隔的对,由gydF4y2Ba“Crossval”gydF4y2Ba而且gydF4y2Ba“上”gydF4y2Ba或gydF4y2Ba“关闭”gydF4y2Ba.gydF4y2Ba

如果你指定gydF4y2Ba“上”gydF4y2Ba,然后该软件用10次折叠训练交叉验证的分类器。gydF4y2Ba

方法之一可以覆盖此交叉验证设置gydF4y2BaCVPartitiongydF4y2Ba,gydF4y2Ba坚持gydF4y2Ba,gydF4y2BaKFoldgydF4y2Ba,或gydF4y2BaLeaveoutgydF4y2Ba名称-值对参数。每次只能使用一个交叉验证的名称-值对参数来创建交叉验证的模型。gydF4y2Ba

或者,稍后通过传递进行交叉验证gydF4y2BaMdlgydF4y2Ba来gydF4y2BacrossvalgydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“Crossval”,“上”gydF4y2Ba

交叉验证分区,指定为gydF4y2BacvpartitiongydF4y2Ba创建的分区对象gydF4y2BacvpartitiongydF4y2Ba.分区对象指定交叉验证的类型以及训练集和验证集的索引。gydF4y2Ba

要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:gydF4y2BaCVPartitiongydF4y2Ba,gydF4y2Ba坚持gydF4y2Ba,gydF4y2BaKFoldgydF4y2Ba,或gydF4y2BaLeaveoutgydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba假设您创建一个随机分区,对500个观察结果进行5次交叉验证,使用gydF4y2Bacvp = cvpartition(500,'KFold',5)gydF4y2Ba.然后,您可以通过使用指定交叉验证的模型gydF4y2Ba“CVPartition”,本量利gydF4y2Ba.gydF4y2Ba

用于拒绝验证的数据的百分比,指定为范围(0,1)中的标量值。如果你指定gydF4y2Ba‘坚持’,pgydF4y2Ba,然后软件完成以下步骤:gydF4y2Ba

  1. 随机选择并保留gydF4y2Bap * 100gydF4y2Ba%的数据作为验证数据,并使用其余数据训练模型。gydF4y2Ba

  2. 将紧凑的、训练过的模型存储在gydF4y2Ba训练有素的gydF4y2Ba交叉验证模型的属性。gydF4y2Ba

要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:gydF4y2BaCVPartitiongydF4y2Ba,gydF4y2Ba坚持gydF4y2Ba,gydF4y2BaKFoldgydF4y2Ba,或gydF4y2BaLeaveoutgydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“坚持”,0.1gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba

交叉验证模型中使用的折叠数,指定为大于1的正整数值。如果你指定gydF4y2BaKFold, kgydF4y2Ba,然后软件完成以下步骤:gydF4y2Ba

  1. 将数据随机划分为gydF4y2BakgydF4y2Ba集。gydF4y2Ba

  2. 对于每个集合,保留该集合作为验证数据,并使用另一个集合训练模型gydF4y2BakgydF4y2Ba- 1gydF4y2Ba集。gydF4y2Ba

  3. 存储gydF4y2BakgydF4y2Ba紧凑,训练有素的模型gydF4y2BakgydF4y2Ba的-by-1单元格向量gydF4y2Ba训练有素的gydF4y2Ba交叉验证模型的属性。gydF4y2Ba

要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:gydF4y2BaCVPartitiongydF4y2Ba,gydF4y2Ba坚持gydF4y2Ba,gydF4y2BaKFoldgydF4y2Ba,或gydF4y2BaLeaveoutgydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“KFold”,5gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba

省略一个交叉验证标志,指定为逗号分隔的对,由gydF4y2Ba“Leaveout”gydF4y2Ba而且gydF4y2Ba“上”gydF4y2Ba或gydF4y2Ba“关闭”gydF4y2Ba.如果你指定gydF4y2Ba“Leaveout”,“上”gydF4y2Ba,那么,对于每一个gydF4y2BangydF4y2Ba的观察,gydF4y2BangydF4y2Ba是gydF4y2Ba尺寸(Mdl.X, 1)gydF4y2Ba,软件:gydF4y2Ba

  1. 保留观测数据作为验证数据,并使用其他数据训练模型gydF4y2BangydF4y2Ba- 1项观察gydF4y2Ba

  2. 存储gydF4y2BangydF4y2Ba紧凑,训练模型的细胞gydF4y2BangydF4y2Ba的-by-1单元格向量gydF4y2Ba训练有素的gydF4y2Ba交叉验证模型的属性。gydF4y2Ba

要创建交叉验证的模型,您只能使用以下四个选项之一:gydF4y2BaCVPartitiongydF4y2Ba,gydF4y2Ba坚持gydF4y2Ba,gydF4y2BaKFoldgydF4y2Ba,或gydF4y2BaLeaveoutgydF4y2Ba.gydF4y2Ba

请注意gydF4y2Ba

不建议对由线性或核分类模型学习器组成的ECOC模型进行交叉验证。gydF4y2Ba

例子:gydF4y2Ba“Leaveout”,“上”gydF4y2Ba

其他分类选择gydF4y2Ba

全部折叠gydF4y2Ba

类别预测符列表,指定为此表中的值之一。gydF4y2Ba

价值gydF4y2Ba 描述gydF4y2Ba
正整数向量gydF4y2Ba

向量中的每个条目都是一个索引值,对应于包含分类变量的预测器数据的列。索引值在1和之间gydF4y2BapgydF4y2Ba,在那里gydF4y2BapgydF4y2Ba用于训练模型的预测器的数量。gydF4y2Ba

如果gydF4y2BafitcecocgydF4y2Ba使用输入变量的子集作为预测器,然后函数仅使用该子集对预测器进行索引。的gydF4y2Ba“CategoricalPredictors”gydF4y2Ba值不计算响应变量、观察权重变量和函数不使用的任何其他变量。gydF4y2Ba

逻辑向量gydF4y2Ba

一个gydF4y2Ba真正的gydF4y2Ba条目意味着预测器数据的对应列是分类变量。向量的长度是gydF4y2BapgydF4y2Ba.gydF4y2Ba

字符矩阵gydF4y2Ba 矩阵的每一行都是一个预测变量的名称。名称必须与中的条目匹配gydF4y2BaPredictorNamesgydF4y2Ba.用额外的空格填充名字,这样字符矩阵的每一行都有相同的长度。gydF4y2Ba
字符向量的字符串数组或单元格数组gydF4y2Ba 数组中的每个元素都是一个预测变量的名称。名称必须与中的条目匹配gydF4y2BaPredictorNamesgydF4y2Ba.gydF4y2Ba
“所有”gydF4y2Ba 所有预测因素都是绝对的。gydF4y2Ba

规范的gydF4y2Ba“CategoricalPredictors”gydF4y2Ba适用于以下情况:gydF4y2Ba

  • 至少有一个预测器是分类的,所有的二叉学习器都是分类树、朴素贝叶斯学习器、支持向量机、线性学习器、核学习器或分类树的集合。gydF4y2Ba

  • 所有预测器都是分类的,至少有一个二元学习器是gydF4y2BakgydF4y2Ba神经网络。gydF4y2Ba

如果你指定gydF4y2Ba“CategoricalPredictors”gydF4y2Ba对于任何其他的学习者,软件会警告说它不能训练那个二元学习者。例如,该软件不能使用分类预测器训练判别分析分类器。gydF4y2Ba

每个学习器都以与学习器对应的拟合函数相同的方式识别和处理分类预测器。看到gydF4y2Ba“CategoricalPredictors”gydF4y2Ba的gydF4y2BafitckernelgydF4y2Ba对于内核学习者,gydF4y2Ba“CategoricalPredictors”gydF4y2Ba的gydF4y2BafitcknngydF4y2Ba为gydF4y2BakgydF4y2Ba最近的学习者,gydF4y2Ba“CategoricalPredictors”gydF4y2Ba的gydF4y2BafitclineargydF4y2Ba对于线性学习者,gydF4y2Ba“CategoricalPredictors”gydF4y2Ba的gydF4y2BafitcnbgydF4y2Ba对于朴素的贝叶斯学习者,gydF4y2Ba“CategoricalPredictors”gydF4y2Ba的gydF4y2BafitcsvmgydF4y2Ba对于SVM学习器,和gydF4y2Ba“CategoricalPredictors”gydF4y2Ba的gydF4y2BafitctreegydF4y2Ba对于树型学习者。gydF4y2Ba

例子:gydF4y2Ba“CategoricalPredictors”、“所有”gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Ba逻辑gydF4y2Ba|gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba|gydF4y2Ba细胞gydF4y2Ba

用于训练的类名,指定为类别、字符或字符串数组;向量:逻辑或数字向量;或者是字符向量的单元格数组。gydF4y2Ba一会gydF4y2Ba必须具有与响应变量相同的数据类型gydF4y2Ba资源描述gydF4y2Ba或gydF4y2BaYgydF4y2Ba.gydF4y2Ba

如果gydF4y2Ba一会gydF4y2Ba是字符数组,则每个元素必须对应数组中的一行。gydF4y2Ba

使用gydF4y2Ba一会gydF4y2Ba:gydF4y2Ba

  • 在培训期间指定课程的顺序。gydF4y2Ba

  • 指定与类顺序对应的任何输入或输出参数维度的顺序。例如,使用gydF4y2Ba一会gydF4y2Ba指定…尺寸的顺序gydF4y2Ba成本gydF4y2Ba或返回的分类分数的列顺序gydF4y2Ba预测gydF4y2Ba.gydF4y2Ba

  • 选择用于培训的类的子集。例如,假设集合中所有不同的类名gydF4y2BaYgydF4y2Ba是gydF4y2Ba{' a ', ' b ', ' c '}gydF4y2Ba.用课堂上的观察来训练模型gydF4y2Ba“一个”gydF4y2Ba而且gydF4y2Ba“c”gydF4y2Ba只是,指定gydF4y2Ba“类名”,{' a ', ' c '}gydF4y2Ba.gydF4y2Ba

的默认值gydF4y2Ba一会gydF4y2Ba响应变量中所有不同类名的集合在吗gydF4y2Ba资源描述gydF4y2Ba或gydF4y2BaYgydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“类名”,{' b ', ' g '}gydF4y2Ba

数据类型:gydF4y2Ba分类gydF4y2Ba|gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba|gydF4y2Ba逻辑gydF4y2Ba|gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Ba细胞gydF4y2Ba

错误分类代价,指定为逗号分隔的对,由gydF4y2Ba“成本”gydF4y2Ba一个方阵或结构。如果你指定:gydF4y2Ba

  • 方阵gydF4y2Ba成本gydF4y2Ba,然后gydF4y2Ba成本(i, j)gydF4y2Ba将一个点分类的成本是多少gydF4y2BajgydF4y2Ba如果它真正的阶级是gydF4y2Ba我gydF4y2Ba.也就是说,行对应于真实的类,列对应于预测的类。的相应行和列的类顺序gydF4y2Ba成本gydF4y2Ba,另外指定gydF4y2Ba一会gydF4y2Ba名称-值对参数。gydF4y2Ba

  • 结构gydF4y2Ba年代gydF4y2Ba,那么它必须有两个字段:gydF4y2Ba

    • S.ClassNamesgydF4y2Ba,其中包含类名作为与gydF4y2BaYgydF4y2Ba

    • S.ClassificationCostsgydF4y2Ba,其中包含成本矩阵,其行和列的顺序为gydF4y2BaS.ClassNamesgydF4y2Ba

默认为gydF4y2Ba(gydF4y2BaKgydF4y2Ba) -眼睛(gydF4y2BaKgydF4y2Ba)gydF4y2Ba,在那里gydF4y2BaKgydF4y2Ba是不同类的数量。gydF4y2Ba

例子:gydF4y2Ba'Cost',[0 12 2;1 0 2;2 2 0]gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba|gydF4y2Ba结构体gydF4y2Ba

并行计算选项,指定为逗号分隔的对,由gydF4y2Ba“选项”gydF4y2Ba和返回的结构数组gydF4y2BastatsetgydF4y2Ba.这些选项需要并行计算工具箱™。gydF4y2BafitcecocgydF4y2Ba使用gydF4y2Ba“流”gydF4y2Ba,gydF4y2Ba“UseParallel”gydF4y2Ba,gydF4y2Ba“UseSubtreams”gydF4y2Ba字段。gydF4y2Ba

下表总结了可用的选项。gydF4y2Ba

选项gydF4y2Ba 描述gydF4y2Ba
“流”gydF4y2Ba

一个gydF4y2BaRandStreamgydF4y2Ba对象或此类对象的单元格数组。如果您没有指定gydF4y2Ba流gydF4y2Ba时,软件使用默认流或多个流。如果你指定gydF4y2Ba流gydF4y2Ba,除非满足以下条件,否则使用单个对象:gydF4y2Ba

  • 你有一个开放的平行泳池。gydF4y2Ba

  • UseParallelgydF4y2Ba是gydF4y2Ba真正的gydF4y2Ba.gydF4y2Ba

  • UseSubstreamsgydF4y2Ba是gydF4y2Ba假gydF4y2Ba.gydF4y2Ba

在这种情况下,使用与并行池大小相同的单元格数组。如果并行池未打开,则软件将尝试打开一个并行池(取决于您的首选项),然后gydF4y2Ba流gydF4y2Ba必须提供单个随机数流。gydF4y2Ba

“UseParallel”gydF4y2Ba

如果您有并行计算工具箱,那么您可以通过设置调用工作池gydF4y2Ba“UseParallel”,真的gydF4y2Ba.的gydF4y2BafitcecocgydF4y2Ba函数将每个二进制学习器发送给池中的工作器。gydF4y2Ba

当你对二叉学习器使用决策树时,gydF4y2BafitcecocgydF4y2Ba并行训练使用英特尔gydF4y2Ba®gydF4y2Ba用于双核及以上系统的线程构建块(TBB)。因此,指定gydF4y2Ba“UseParallel”gydF4y2Ba选项在单台计算机上没有帮助。在集群上使用此选项。有关Intel TBB的详细信息,请参见gydF4y2Bahttps://software.intel.com/en-us/intel-tbbgydF4y2Ba.gydF4y2Ba

“UseSubstreams”gydF4y2Ba 设置为gydF4y2Ba真正的gydF4y2Ba属性指定的流进行并行计算gydF4y2Ba“流”gydF4y2Ba.默认是gydF4y2Ba假gydF4y2Ba.例如,setgydF4y2Ba流gydF4y2Ba到允许子流的类型,例如gydF4y2Ba“mlfg6331_64”gydF4y2Ba或gydF4y2Ba“mrg32k3a”gydF4y2Ba.gydF4y2Ba

确保更可预测的结果的最佳实践是使用gydF4y2BaparpoolgydF4y2Ba(并行计算工具箱)gydF4y2Ba并在调用并行计算之前显式地创建并行池gydF4y2BafitcecocgydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“选项”,statset (UseParallel,真的)gydF4y2Ba

数据类型:gydF4y2Ba结构体gydF4y2Ba

预测器变量名,指定为唯一名称的字符串数组或唯一字符向量的单元格数组。的功能gydF4y2BaPredictorNamesgydF4y2Ba这取决于你提供训练数据的方式。gydF4y2Ba

  • 如果你提供gydF4y2BaXgydF4y2Ba而且gydF4y2BaYgydF4y2Ba,那么你就可以使用了gydF4y2BaPredictorNamesgydF4y2Ba中预测变量的名称gydF4y2BaXgydF4y2Ba.gydF4y2Ba

    • 里面名字的顺序gydF4y2BaPredictorNamesgydF4y2Ba必须对应的列顺序gydF4y2BaXgydF4y2Ba.也就是说,gydF4y2BaPredictorNames {1}gydF4y2Ba名字是gydF4y2BaX (: 1)gydF4y2Ba,gydF4y2BaPredictorNames {2}gydF4y2Ba名字是gydF4y2BaX (:, 2)gydF4y2Ba等等。同时,gydF4y2Ba大小(X, 2)gydF4y2Ba而且gydF4y2Ba元素个数(PredictorNames)gydF4y2Ba必须是相等的。gydF4y2Ba

    • 默认情况下,gydF4y2BaPredictorNamesgydF4y2Ba是gydF4y2Ba{x1, x2,…}gydF4y2Ba.gydF4y2Ba

  • 如果你提供gydF4y2Ba资源描述gydF4y2Ba,那么你就可以使用了gydF4y2BaPredictorNamesgydF4y2Ba选择在训练中使用哪些预测变量。也就是说,gydF4y2BafitcecocgydF4y2Ba中仅使用预测变量gydF4y2BaPredictorNamesgydF4y2Ba以及训练中的响应变量。gydF4y2Ba

    • PredictorNamesgydF4y2Ba的子集gydF4y2BaTbl.Properties.VariableNamesgydF4y2Ba并且不能包括响应变量的名称。gydF4y2Ba

    • 默认情况下,gydF4y2BaPredictorNamesgydF4y2Ba包含所有预测变量的名称。gydF4y2Ba

    • 一个好的实践是使用其中一种来指定训练的预测器gydF4y2Ba“PredictorNames”gydF4y2Ba或gydF4y2Ba公式gydF4y2Ba,但不是两者都有。gydF4y2Ba

例子:gydF4y2BaPredictorNames,{‘SepalLength’,‘SepalWidth’,‘PetalLength’,‘PetalWidth}gydF4y2Ba

数据类型:gydF4y2Ba字符串gydF4y2Ba|gydF4y2Ba细胞gydF4y2Ba

每个类的先验概率,由逗号分隔的对组成gydF4y2Ba“之前”gydF4y2Ba和这个表中的一个值。gydF4y2Ba

价值gydF4y2Ba 描述gydF4y2Ba
“经验”gydF4y2Ba 类先验概率是类的相对频率gydF4y2BaYgydF4y2Ba.gydF4y2Ba
“统一”gydF4y2Ba 所有类先验概率都等于1/gydF4y2BaKgydF4y2Ba,在那里gydF4y2BaKgydF4y2Ba是类的数量。gydF4y2Ba
数值向量gydF4y2Ba 每个元素都是一个类先验概率。对元素进行排序gydF4y2BaMdlgydF4y2Ba.ClassNamesgydF4y2Ba或使用gydF4y2Ba一会gydF4y2Ba名称-值对参数。软件将元素规范化,使它们的和为gydF4y2Ba1gydF4y2Ba.gydF4y2Ba
结构gydF4y2Ba

一个结构gydF4y2Ba年代gydF4y2Ba有两个字段:gydF4y2Ba

  • S.ClassNamesgydF4y2Ba作为相同类型的变量包含类名gydF4y2BaYgydF4y2Ba.gydF4y2Ba

  • S.ClassProbsgydF4y2Ba包含相应先验概率的向量。软件将元素规范化,使它们的和为gydF4y2Ba1gydF4y2Ba.gydF4y2Ba

有关软件如何合并类先验概率的详细信息,请参见gydF4y2Ba先验概率和成本gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba结构(“类名”,{{setosa,杂色的,‘virginica}}, ClassProbs, 1:3)gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba|gydF4y2Ba结构体gydF4y2Ba

响应变量名,指定为字符向量或字符串标量。gydF4y2Ba

  • 如果你提供gydF4y2BaYgydF4y2Ba,那么你就可以使用了gydF4y2Ba“ResponseName”gydF4y2Ba为响应变量指定名称。gydF4y2Ba

  • 如果你提供gydF4y2BaResponseVarNamegydF4y2Ba或gydF4y2Ba公式gydF4y2Ba,那么你就不能用了gydF4y2Ba“ResponseName”gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“ResponseName”、“响应”gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

分数转换,指定为字符向量、字符串标量或函数句柄。gydF4y2Ba

该表总结了可用的字符向量和字符串标量。gydF4y2Ba

价值gydF4y2Ba 描述gydF4y2Ba
“doublelogit”gydF4y2Ba 1 / (1 +gydF4y2BaegydF4y2Ba2gydF4y2BaxgydF4y2Ba)gydF4y2Ba
“invlogit”gydF4y2Ba 日志(gydF4y2BaxgydF4y2Ba/ (1 -gydF4y2BaxgydF4y2Ba))gydF4y2Ba
“ismax”gydF4y2Ba 将得分最大的类的得分设置为1,并将所有其他类的得分设置为0gydF4y2Ba
分对数的gydF4y2Ba 1 / (1 +gydF4y2BaegydF4y2Ba- - - - - -gydF4y2BaxgydF4y2Ba)gydF4y2Ba
“没有”gydF4y2Ba或gydF4y2Ba“身份”gydF4y2Ba xgydF4y2Ba(转换)gydF4y2Ba
“标志”gydF4y2Ba 1gydF4y2BaxgydF4y2Ba< 0gydF4y2Ba
为0gydF4y2BaxgydF4y2Ba= 0gydF4y2Ba
1gydF4y2BaxgydF4y2Ba> 0gydF4y2Ba
“对称”gydF4y2Ba 2gydF4y2BaxgydF4y2Ba- 1gydF4y2Ba
“symmetricismax”gydF4y2Ba 将得分最大的类的得分设置为1,并将所有其他类的得分设置为-1gydF4y2Ba
“symmetriclogit”gydF4y2Ba 2 / (1 +gydF4y2BaegydF4y2Ba- - - - - -gydF4y2BaxgydF4y2Ba) - 1gydF4y2Ba

对于MATLAB函数或您定义的函数,使用其函数句柄进行分数转换。函数句柄必须接受一个矩阵(原始分数)并返回一个相同大小的矩阵(转换后的分数)。gydF4y2Ba

例子:gydF4y2Ba“ScoreTransform”、“分对数的gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba|gydF4y2Bafunction_handlegydF4y2Ba

观察权重,由逗号分隔的对组成gydF4y2Ba“重量”gydF4y2Ba和一个数值向量的正值或变量的名称gydF4y2Ba资源描述gydF4y2Ba.软件对每一行的观察结果进行加权gydF4y2BaXgydF4y2Ba或gydF4y2Ba资源描述gydF4y2Ba中对应的值gydF4y2Ba权重gydF4y2Ba.的大小gydF4y2Ba权重gydF4y2Ba必须等于的行数gydF4y2BaXgydF4y2Ba或gydF4y2Ba资源描述gydF4y2Ba.gydF4y2Ba

如果将输入数据指定为表gydF4y2Ba资源描述gydF4y2Ba,然后gydF4y2Ba权重gydF4y2Ba可以是变量名中的gydF4y2Ba资源描述gydF4y2Ba它包含一个数值向量。在这种情况下,您必须指定gydF4y2Ba权重gydF4y2Ba作为字符向量或字符串标量。例如,如果权重向量gydF4y2BaWgydF4y2Ba存储为gydF4y2Ba资源描述。WgydF4y2Ba,然后指定为gydF4y2Ba' W 'gydF4y2Ba.否则,软件处理的所有列gydF4y2Ba资源描述gydF4y2Ba,包括gydF4y2BaWgydF4y2Ba,作为预测因子或训练模型时的响应。gydF4y2Ba

软件规范化gydF4y2Ba权重gydF4y2Ba求和为各类的先验概率值。gydF4y2Ba

默认情况下,gydF4y2Ba权重gydF4y2Ba是gydF4y2Ba(gydF4y2BangydF4y2Ba, 1)gydF4y2Ba,在那里gydF4y2BangydF4y2Ba观察的数量在吗gydF4y2BaXgydF4y2Ba或gydF4y2Ba资源描述gydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba|gydF4y2Ba单gydF4y2Ba|gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

Hyperparameter优化gydF4y2Ba

全部折叠gydF4y2Ba

参数进行优化,指定为由逗号分隔的对组成gydF4y2Ba“OptimizeHyperparameters”gydF4y2Ba和以下其中之一:gydF4y2Ba

  • “没有”gydF4y2Ba-不要优化。gydF4y2Ba

  • “汽车”gydF4y2Ba——使用gydF4y2Ba{“编码”}gydF4y2Ba以及指定的默认参数gydF4y2Ba学习者gydF4y2Ba:gydF4y2Ba

    • 学习者gydF4y2Ba=gydF4y2Ba“支持向量机”gydF4y2Ba(默认)gydF4y2Ba{“BoxConstraint”、“KernelScale”}gydF4y2Ba

    • 学习者gydF4y2Ba=gydF4y2Ba“判别”gydF4y2Ba- - - - - -gydF4y2Ba{“三角洲”,“伽马”}gydF4y2Ba

    • 学习者gydF4y2Ba=gydF4y2Ba“内核”gydF4y2Ba- - - - - -gydF4y2Ba{“KernelScale”、“λ”}gydF4y2Ba

    • 学习者gydF4y2Ba=gydF4y2Ba“资讯”gydF4y2Ba- - - - - -gydF4y2Ba{‘距离’,‘NumNeighbors}gydF4y2Ba

    • 学习者gydF4y2Ba=gydF4y2Ba“线性”gydF4y2Ba- - - - - -gydF4y2Ba{“λ”、“学习者”}gydF4y2Ba

    • 学习者gydF4y2Ba=gydF4y2Ba“naivebayes”gydF4y2Ba- - - - - -gydF4y2Ba{“DistributionNames”、“宽度”}gydF4y2Ba

    • 学习者gydF4y2Ba=gydF4y2Ba“树”gydF4y2Ba- - - - - -gydF4y2Ba{' MinLeafSize '}gydF4y2Ba

  • “所有”gydF4y2Ba-优化所有符合条件的参数。gydF4y2Ba

  • 符合条件的参数名的字符串数组或单元格数组gydF4y2Ba

  • 向量的gydF4y2BaoptimizableVariablegydF4y2Ba对象的输出gydF4y2BahyperparametersgydF4y2Ba

优化尝试最小化交叉验证损失(错误)gydF4y2BafitcecocgydF4y2Ba通过改变参数。有关不同上下文中交叉验证丢失的信息,请参见gydF4y2Ba分类损失gydF4y2Ba.若要控制交叉验证类型和优化的其他方面,请使用gydF4y2BaHyperparameterOptimizationOptionsgydF4y2Ba名称-值对。gydF4y2Ba

请注意gydF4y2Ba

“OptimizeHyperparameters”gydF4y2Ba值覆盖使用其他名称-值对参数设置的任何值。例如,设置gydF4y2Ba“OptimizeHyperparameters”gydF4y2Ba来gydF4y2Ba“汽车”gydF4y2Ba导致gydF4y2Ba“汽车”gydF4y2Ba要应用的值。gydF4y2Ba

符合条件的参数gydF4y2BafitcecocgydF4y2Ba是:gydF4y2Ba

  • 编码gydF4y2Ba- - - - - -gydF4y2BafitcecocgydF4y2Ba搜索中gydF4y2Ba“onevsall”gydF4y2Ba而且gydF4y2Ba“onevsone”gydF4y2Ba.gydF4y2Ba

  • 所选对象的合格超参数gydF4y2Ba学习者gydF4y2Ba,如本表所示。gydF4y2Ba

    学习者gydF4y2Ba 合格HyperparametersgydF4y2Ba
    (加粗=默认)gydF4y2Ba
    默认范围gydF4y2Ba
    “判别”gydF4y2Ba δgydF4y2Ba 范围内的对数缩放gydF4y2Ba(1 e-6, 1 e3)gydF4y2Ba
    DiscrimTypegydF4y2Ba “线性”gydF4y2Ba,gydF4y2Ba“二次”gydF4y2Ba,gydF4y2Ba“diagLinear”gydF4y2Ba,gydF4y2Ba“diagQuadratic”gydF4y2Ba,gydF4y2Ba“pseudoLinear”gydF4y2Ba,gydF4y2Ba“pseudoQuadratic”gydF4y2Ba
    γgydF4y2Ba 真正的价值gydF4y2Ba[0, 1]gydF4y2Ba
    “内核”gydF4y2Ba λgydF4y2Ba 正值在范围内对数缩放gydF4y2Ba(1 e - 3 / NumObservations, e3 / NumObservations]gydF4y2Ba
    KernelScalegydF4y2Ba 正值在范围内对数缩放gydF4y2Ba(1 e - 3, 1 e3)gydF4y2Ba
    学习者gydF4y2Ba “支持向量机”gydF4y2Ba而且gydF4y2Ba“物流”gydF4y2Ba
    NumExpansionDimensionsgydF4y2Ba 在范围内按对数缩放的整数gydF4y2Ba(100、10000)gydF4y2Ba
    “资讯”gydF4y2Ba 距离gydF4y2Ba “cityblock”gydF4y2Ba,gydF4y2Ba“chebychev”gydF4y2Ba,gydF4y2Ba“相关”gydF4y2Ba,gydF4y2Ba的余弦gydF4y2Ba,gydF4y2Ba“欧几里得”gydF4y2Ba,gydF4y2Ba“汉明”gydF4y2Ba,gydF4y2Ba“jaccard”gydF4y2Ba,gydF4y2Ba“mahalanobis”gydF4y2Ba,gydF4y2Ba闵可夫斯基的gydF4y2Ba,gydF4y2Ba“seuclidean”gydF4y2Ba,gydF4y2Ba“枪兵”gydF4y2Ba
    DistanceWeightgydF4y2Ba “平等”gydF4y2Ba,gydF4y2Ba“逆”gydF4y2Ba,gydF4y2Ba“squaredinverse”gydF4y2Ba
    指数gydF4y2Ba 正的值gydF4y2Ba(0.5, 3)gydF4y2Ba
    NumNeighborsgydF4y2Ba 范围内对数缩放的正整数值gydF4y2Ba[1,马克斯(2轮(NumObservations / 2)))gydF4y2Ba
    标准化gydF4y2Ba “真正的”gydF4y2Ba而且gydF4y2Ba“假”gydF4y2Ba
    “线性”gydF4y2Ba λgydF4y2Ba 正值在范围内对数缩放gydF4y2Ba[1 e-5 / NumObservations 1 e5 / NumObservations]gydF4y2Ba
    学习者gydF4y2Ba “支持向量机”gydF4y2Ba而且gydF4y2Ba“物流”gydF4y2Ba
    正则化gydF4y2Ba “岭”gydF4y2Ba而且gydF4y2Ba“套索”gydF4y2Ba
    “naivebayes”gydF4y2Ba DistributionNamesgydF4y2Ba “正常”gydF4y2Ba而且gydF4y2Ba“内核”gydF4y2Ba
    宽度gydF4y2Ba 正值在范围内对数缩放gydF4y2Ba[MinPredictorDiff / 4,马克斯(MaxPredictorRange MinPredictorDiff)]gydF4y2Ba
    内核gydF4y2Ba “正常”gydF4y2Ba,gydF4y2Ba“盒子”gydF4y2Ba,gydF4y2Ba“epanechnikov”gydF4y2Ba,gydF4y2Ba“三角形”gydF4y2Ba
    “支持向量机”gydF4y2Ba BoxConstraintgydF4y2Ba 正值在范围内对数缩放gydF4y2Ba(1 e - 3, 1 e3)gydF4y2Ba
    KernelScalegydF4y2Ba 正值在范围内对数缩放gydF4y2Ba(1 e - 3, 1 e3)gydF4y2Ba
    KernelFunctiongydF4y2Ba “高斯”gydF4y2Ba,gydF4y2Ba“线性”gydF4y2Ba,gydF4y2Ba多项式的gydF4y2Ba
    PolynomialOrdergydF4y2Ba 范围内的整数gydF4y2Ba(2、4)gydF4y2Ba
    标准化gydF4y2Ba “真正的”gydF4y2Ba而且gydF4y2Ba“假”gydF4y2Ba
    “树”gydF4y2Ba MaxNumSplitsgydF4y2Ba 在范围内按对数缩放的整数gydF4y2BaNumObservations-1[1,马克斯(2))gydF4y2Ba
    MinLeafSizegydF4y2Ba 在范围内按对数缩放的整数gydF4y2Ba[1,马克斯(2楼(NumObservations / 2)))gydF4y2Ba
    NumVariablesToSamplegydF4y2Ba 范围内的整数gydF4y2BaNumPredictors[1,马克斯(2))gydF4y2Ba
    SplitCriteriongydF4y2Ba gdi的gydF4y2Ba,gydF4y2Ba“异常”gydF4y2Ba,gydF4y2Ba“两个”gydF4y2Ba

    另外,使用gydF4y2BahyperparametersgydF4y2Ba你的选择gydF4y2Ba学习者gydF4y2Ba,例如gydF4y2Ba

    负载gydF4y2BafisheririsgydF4y2Ba超参数需要数据和学习器gydF4y2BaParams =超参数(gydF4y2Ba“fitcecoc”gydF4y2Ba量,物种,gydF4y2Ba“支持向量机”gydF4y2Ba);gydF4y2Ba

    要查看合格超参数和默认超参数,请检查gydF4y2Ba参数个数gydF4y2Ba.gydF4y2Ba

通过传递的向量来设置非默认参数gydF4y2BaoptimizableVariablegydF4y2Ba具有非默认值的对象。例如,gydF4y2Ba

负载gydF4y2BafisheririsgydF4y2BaParams =超参数(gydF4y2Ba“fitcecoc”gydF4y2Ba量,物种,gydF4y2Ba“支持向量机”gydF4y2Ba);参数(2)。Range = [1e-4,1e6];gydF4y2Ba

通过gydF4y2Ba参数个数gydF4y2Ba作为价值gydF4y2BaOptimizeHyperparametersgydF4y2Ba.gydF4y2Ba

默认情况下,在命令行上出现迭代显示,并根据优化中的超参数数量显示图形。对于优化和绘图,目标函数为gydF4y2BaLog(1 +交叉验证损失)gydF4y2Ba用于回归和分类的误分类率。要控制迭代显示,请设置gydF4y2Ba详细的gydF4y2Ba字段gydF4y2Ba“HyperparameterOptimizationOptions”gydF4y2Ba名称-值对参数。为了控制情节,设置gydF4y2BaShowPlotsgydF4y2Ba字段gydF4y2Ba“HyperparameterOptimizationOptions”gydF4y2Ba名称-值对参数。gydF4y2Ba

有关示例,请参见gydF4y2Ba优化ECOC分类器gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba“汽车”gydF4y2Ba

用于优化的选项,指定为逗号分隔的对,由gydF4y2Ba“HyperparameterOptimizationOptions”gydF4y2Ba还有一个结构。的效果gydF4y2BaOptimizeHyperparametersgydF4y2Ba名称-值对参数。结构中的所有字段都是可选的。gydF4y2Ba

字段名gydF4y2Ba 值gydF4y2Ba 默认的gydF4y2Ba
优化器gydF4y2Ba
  • “bayesopt”gydF4y2Ba-使用贝叶斯优化。在内部,此设置调用gydF4y2BabayesoptgydF4y2Ba.gydF4y2Ba

  • “gridsearch”gydF4y2Ba-使用网格搜索gydF4y2BaNumGridDivisionsgydF4y2Ba每个维度的值。gydF4y2Ba

  • “randomsearch”gydF4y2Ba-在其中随机搜索gydF4y2BaMaxObjectiveEvaluationsgydF4y2Ba点。gydF4y2Ba

“gridsearch”gydF4y2Ba以随机顺序进行搜索,使用统一抽样而不从网格中替换。优化后,可以使用命令获取网格顺序的表gydF4y2Basortrows (Mdl.HyperparameterOptimizationResults)gydF4y2Ba.gydF4y2Ba

“bayesopt”gydF4y2Ba
AcquisitionFunctionNamegydF4y2Ba

  • “expected-improvement-per-second-plus”gydF4y2Ba

  • “expected-improvement”gydF4y2Ba

  • “expected-improvement-plus”gydF4y2Ba

  • “expected-improvement-per-second”gydF4y2Ba

  • “lower-confidence-bound”gydF4y2Ba

  • “probability-of-improvement”gydF4y2Ba

名称包括的获取函数gydF4y2Ba每秒gydF4y2Ba不能产生可重复的结果,因为优化依赖于目标函数的运行时间。名称包括的获取函数gydF4y2Ba+gydF4y2Ba当他们过度开发一个区域时,修改他们的行为。详情请参见gydF4y2Ba采集函数类型gydF4y2Ba.gydF4y2Ba

“expected-improvement-per-second-plus”gydF4y2Ba
MaxObjectiveEvaluationsgydF4y2Ba 目标函数求值的最大个数。gydF4y2Ba 30.gydF4y2Ba为gydF4y2Ba“bayesopt”gydF4y2Ba或gydF4y2Ba“randomsearch”gydF4y2Ba,而整个电网为gydF4y2Ba“gridsearch”gydF4y2Ba
MaxTimegydF4y2Ba

时间限制,指定为正实数。时间限制以秒为单位,由gydF4y2Ba抽搐gydF4y2Ba而且gydF4y2BatocgydF4y2Ba.运行时可能超过gydF4y2BaMaxTimegydF4y2Ba因为gydF4y2BaMaxTimegydF4y2Ba不中断函数求值。gydF4y2Ba

正gydF4y2Ba
NumGridDivisionsgydF4y2Ba 为gydF4y2Ba“gridsearch”gydF4y2Ba,表示每个维度中值的数量。该值可以是一个正整数向量,给出每个维度的值的数量,也可以是一个适用于所有维度的标量。对于分类变量,该字段将被忽略。gydF4y2Ba 10gydF4y2Ba
ShowPlotsgydF4y2Ba 指示是否显示图的逻辑值。如果gydF4y2Ba真正的gydF4y2Ba,该字段根据迭代次数绘制最佳目标函数值。如果有一个或两个优化参数,如果gydF4y2Ba优化器gydF4y2Ba是gydF4y2Ba“bayesopt”gydF4y2Ba,然后gydF4y2BaShowPlotsgydF4y2Ba还绘制了目标函数对参数的模型。gydF4y2Ba 真正的gydF4y2Ba
SaveIntermediateResultsgydF4y2Ba 时是否保存结果的逻辑值gydF4y2Ba优化器gydF4y2Ba是gydF4y2Ba“bayesopt”gydF4y2Ba.如果gydF4y2Ba真正的gydF4y2Ba,此字段将覆盖名为gydF4y2Ba“BayesoptResults”gydF4y2Ba在每次迭代中。变量是agydF4y2BaBayesianOptimizationgydF4y2Ba对象。gydF4y2Ba 假gydF4y2Ba
详细的gydF4y2Ba

显示到命令行。gydF4y2Ba

  • 0gydF4y2Ba-无迭代显示gydF4y2Ba

  • 1gydF4y2Ba-迭代显示gydF4y2Ba

  • 2gydF4y2Ba-带有额外信息的迭代显示gydF4y2Ba

详细信息请参见gydF4y2BabayesoptgydF4y2Ba详细的gydF4y2Ba名称-值对参数。gydF4y2Ba

1gydF4y2Ba
UseParallelgydF4y2Ba 指示是否并行运行贝叶斯优化的逻辑值,这需要“并行计算工具箱”。由于并行计时的不可再现性,并行贝叶斯优化不一定产生可再现的结果。详细信息请参见gydF4y2Ba并行贝叶斯优化gydF4y2Ba.gydF4y2Ba 假gydF4y2Ba
重新分区gydF4y2Ba

指示是否在每次迭代中重新划分交叉验证的逻辑值。如果gydF4y2Ba假gydF4y2Ba,优化器使用单个分区进行优化。gydF4y2Ba

真正的gydF4y2Ba通常会给出最健壮的结果,因为此设置考虑了分区噪声。然而,为了获得好的结果,gydF4y2Ba真正的gydF4y2Ba需要至少两倍的函数求值。gydF4y2Ba

假gydF4y2Ba
使用以下三个字段名中的一个。gydF4y2Ba
CVPartitiongydF4y2Ba 一个gydF4y2BacvpartitiongydF4y2Ba对象创建的gydF4y2BacvpartitiongydF4y2Ba.gydF4y2Ba “Kfold”,5gydF4y2Ba如果您没有指定任何交叉验证字段gydF4y2Ba
坚持gydF4y2Ba 范围内的标量gydF4y2Ba(0,1)gydF4y2Ba表示抵抗分数。gydF4y2Ba
KfoldgydF4y2Ba 大于1的整数。gydF4y2Ba

例子:gydF4y2Ba“HyperparameterOptimizationOptions”、结构(MaxObjectiveEvaluations, 60)gydF4y2Ba

数据类型:gydF4y2Ba结构体gydF4y2Ba

输出参数gydF4y2Ba

全部折叠gydF4y2Ba

训练的ECOC分类器,返回为gydF4y2BaClassificationECOCgydF4y2Ba或gydF4y2BaCompactClassificationECOCgydF4y2Ba模型对象或gydF4y2BaClassificationPartitionedECOCgydF4y2Ba,gydF4y2BaClassificationPartitionedLinearECOCgydF4y2Ba,或gydF4y2BaClassificationPartitionedKernelECOCgydF4y2Ba交叉验证的模型对象。gydF4y2Ba

返回的模型对象的类型gydF4y2BafitcecocgydF4y2Ba这取决于您指定的二进制学习器类型以及是否执行交叉验证。gydF4y2Ba

线性分类模型学习器gydF4y2Ba 核分类模型学习器gydF4y2Ba 交叉验证gydF4y2Ba 返回的模型对象gydF4y2Ba
没有gydF4y2Ba 没有gydF4y2Ba 没有gydF4y2Ba ClassificationECOCgydF4y2Ba
没有gydF4y2Ba 没有gydF4y2Ba 是的gydF4y2Ba ClassificationPartitionedECOCgydF4y2Ba
是的gydF4y2Ba 没有gydF4y2Ba 没有gydF4y2Ba CompactClassificationECOCgydF4y2Ba
是的gydF4y2Ba 没有gydF4y2Ba 是的gydF4y2Ba ClassificationPartitionedLinearECOCgydF4y2Ba
没有gydF4y2Ba 是的gydF4y2Ba 没有gydF4y2Ba CompactClassificationECOCgydF4y2Ba
没有gydF4y2Ba 是的gydF4y2Ba 是的gydF4y2Ba ClassificationPartitionedKernelECOCgydF4y2Ba

描述超参数的交叉验证优化,返回为gydF4y2BaBayesianOptimizationgydF4y2Ba对象或超参数及相关值的表。gydF4y2BaHyperparameterOptimizationResultsgydF4y2Ba当gydF4y2BaOptimizeHyperparametersgydF4y2Ba名称-值对参数为非空,并且gydF4y2Ba学习者gydF4y2Ba名称-值对参数指定线性或核二进制学习器。属性的设置gydF4y2BaHyperparameterOptimizationOptionsgydF4y2Ba名称-值对参数:gydF4y2Ba

  • “bayesopt”gydF4y2Ba(默认)-类的对象gydF4y2BaBayesianOptimizationgydF4y2Ba

  • “gridsearch”gydF4y2Ba或gydF4y2Ba“randomsearch”gydF4y2Ba-使用的超参数表,观察到的目标函数值(交叉验证损失),以及从最小(最好)到最高(最差)的观察等级gydF4y2Ba

数据类型:gydF4y2Ba表格gydF4y2Ba

限制gydF4y2Ba

  • fitcecocgydF4y2Ba金宝app仅支持稀疏矩阵训练线性分类模型。对于所有其他模型,请提供完整的预测数据矩阵。gydF4y2Ba

更多关于gydF4y2Ba

全部折叠gydF4y2Ba

二元损失gydF4y2Ba

一个gydF4y2Ba二元损失gydF4y2Ba是类和分类分数的函数,它决定二元学习者如何将观察结果分类到类中。gydF4y2Ba

假设如下:gydF4y2Ba

  • 米gydF4y2BakjgydF4y2Ba是元素(gydF4y2BakgydF4y2Ba,gydF4y2BajgydF4y2Ba)的编码设计矩阵gydF4y2Ba米gydF4y2Ba(即类对应的代码gydF4y2BakgydF4y2Ba二元学习者gydF4y2BajgydF4y2Ba).gydF4y2Ba

  • 年代gydF4y2BajgydF4y2Ba二元学习者的分数是多少gydF4y2BajgydF4y2Ba观察一下。gydF4y2Ba

  • ggydF4y2Ba是二值损失函数。gydF4y2Ba

  • kgydF4y2Ba ^gydF4y2Ba 是观测的预测类别。gydF4y2Ba

在gydF4y2Ba通过解码gydF4y2Ba[Escalera et al.]gydF4y2Ba时,在二元学习器上产生最小二值损失和的类别决定观测值的预测类别,即:gydF4y2Ba

kgydF4y2Ba ^gydF4y2Ba =gydF4y2Ba argmingydF4y2Ba kgydF4y2Ba ∑gydF4y2Ba jgydF4y2Ba =gydF4y2Ba 1gydF4y2Ba lgydF4y2Ba |gydF4y2Ba 米gydF4y2Ba kgydF4y2Ba jgydF4y2Ba |gydF4y2Ba ggydF4y2Ba (gydF4y2Ba 米gydF4y2Ba kgydF4y2Ba jgydF4y2Ba ,gydF4y2Ba 年代gydF4y2Ba jgydF4y2Ba )gydF4y2Ba .gydF4y2Ba

在gydF4y2Baloss-weighted解码gydF4y2Ba[Escalera et al.]gydF4y2Ba时,在二元学习器上产生最小二元损失平均值的类别决定了观测结果的预测类别,即:gydF4y2Ba

kgydF4y2Ba ^gydF4y2Ba =gydF4y2Ba argmingydF4y2Ba kgydF4y2Ba ∑gydF4y2Ba jgydF4y2Ba =gydF4y2Ba 1gydF4y2Ba lgydF4y2Ba |gydF4y2Ba 米gydF4y2Ba kgydF4y2Ba jgydF4y2Ba |gydF4y2Ba ggydF4y2Ba (gydF4y2Ba 米gydF4y2Ba kgydF4y2Ba jgydF4y2Ba ,gydF4y2Ba 年代gydF4y2Ba jgydF4y2Ba )gydF4y2Ba ∑gydF4y2Ba jgydF4y2Ba =gydF4y2Ba 1gydF4y2Ba lgydF4y2Ba |gydF4y2Ba 米gydF4y2Ba kgydF4y2Ba jgydF4y2Ba |gydF4y2Ba .gydF4y2Ba

Allwein等人。gydF4y2Ba建议损耗加权解码通过将所有类的损耗值保持在相同的动态范围内来提高分类精度。gydF4y2Ba

下表总结了支持的损失函数,其中金宝appgydF4y2BaygydF4y2BajgydF4y2Ba是特定二元学习器的类标签(在集合{- 1,1,0}中),gydF4y2Ba年代gydF4y2BajgydF4y2Ba这是观察分数吗gydF4y2BajgydF4y2Ba,gydF4y2BaggydF4y2Ba(gydF4y2BaygydF4y2BajgydF4y2Ba,gydF4y2Ba年代gydF4y2BajgydF4y2Ba).gydF4y2Ba

价值gydF4y2Ba 描述gydF4y2Ba 分数域gydF4y2Ba ggydF4y2Ba(gydF4y2BaygydF4y2BajgydF4y2Ba,gydF4y2Ba年代gydF4y2BajgydF4y2Ba)gydF4y2Ba
“binodeviance”gydF4y2Ba 二项异常gydF4y2Ba (-∞∞)gydF4y2Ba Log [1 + exp(-2gydF4y2BaygydF4y2BajgydF4y2Ba年代gydF4y2BajgydF4y2Ba日志(2)])]/ [2gydF4y2Ba
“指数”gydF4y2Ba 指数gydF4y2Ba (-∞∞)gydF4y2Ba exp (-gydF4y2BaygydF4y2BajgydF4y2Ba年代gydF4y2BajgydF4y2Ba) / 2gydF4y2Ba
“汉明”gydF4y2Ba 汉明gydF4y2Ba [0,1]或(-∞,∞)gydF4y2Ba [1 -符号(gydF4y2BaygydF4y2BajgydF4y2Ba年代gydF4y2BajgydF4y2Ba) / 2gydF4y2Ba
“枢纽”gydF4y2Ba 铰链gydF4y2Ba (-∞∞)gydF4y2Ba 马克斯(0,1 -gydF4y2BaygydF4y2BajgydF4y2Ba年代gydF4y2BajgydF4y2Ba) / 2gydF4y2Ba
“线性”gydF4y2Ba 线性gydF4y2Ba (-∞∞)gydF4y2Ba (1 -gydF4y2BaygydF4y2BajgydF4y2Ba年代gydF4y2BajgydF4y2Ba) / 2gydF4y2Ba
分对数的gydF4y2Ba 物流gydF4y2Ba (-∞∞)gydF4y2Ba Log [1 + exp(-gydF4y2BaygydF4y2BajgydF4y2Ba年代gydF4y2BajgydF4y2Ba日志(2)])]/ [2gydF4y2Ba
“二次”gydF4y2Ba 二次gydF4y2Ba [0, 1]gydF4y2Ba (1 -gydF4y2BaygydF4y2BajgydF4y2Ba(2gydF4y2Ba年代gydF4y2BajgydF4y2Ba- 1))gydF4y2Ba2gydF4y2Ba/ 2gydF4y2Ba

该软件规范化二进制损耗,使损耗为0.5时gydF4y2BaygydF4y2BajgydF4y2Ba= 0,并使用二元学习器的平均值进行聚合gydF4y2Ba[Allwein等人]gydF4y2Ba.gydF4y2Ba

不要将二进制损失与总体分类损失(由gydF4y2Ba“LossFun”gydF4y2Ba的名称-值对参数gydF4y2Ba损失gydF4y2Ba而且gydF4y2Ba预测gydF4y2Ba对象函数),它衡量ECOC分类器作为一个整体执行的好坏。gydF4y2Ba

编码设计gydF4y2Ba

一个gydF4y2Ba编码设计gydF4y2Ba是一个矩阵,其中元素指导每个二元学习器训练哪些类,即如何将多类问题简化为一系列二元问题。gydF4y2Ba

编码设计的每行对应一个不同的类,每列对应一个二元学习器。在三元编码设计中,对于一个特定的列(或二元学习器):gydF4y2Ba

  • 包含1的行指示二元学习器将对应类中的所有观察数据分组为正类。gydF4y2Ba

  • 包含-1的行指示二元学习器将对应类中的所有观察数据分组为负类。gydF4y2Ba

  • 包含0的行指示二元学习器忽略对应类中的所有观察值。gydF4y2Ba

编码设计矩阵与大,最小,成对行距离基于汉明测度是最优的。有关成对行距离的详细信息,请参见gydF4y2Ba随机编码设计矩阵gydF4y2Ba而且gydF4y2Ba[4]gydF4y2Ba.gydF4y2Ba

该表描述了流行的编码设计。gydF4y2Ba

编码设计gydF4y2Ba 描述gydF4y2Ba 学习人数gydF4y2Ba 最小成对行距离gydF4y2Ba
one-versus-all(卵子)gydF4y2Ba 对于每个二元学习者,一个类是正的,其余的是负的。这种设计用尽了所有积极的课堂作业组合。gydF4y2Ba KgydF4y2Ba 2gydF4y2Ba
one-versus-one(蛋)gydF4y2Ba 对于每个二元学习器,一个类是正的,另一个是负的,其余的被忽略。这种设计耗尽了类对赋值的所有组合。gydF4y2Ba

KgydF4y2Ba(gydF4y2BaKgydF4y2Ba- 1) / 2gydF4y2Ba

1gydF4y2Ba
二进制文件完成gydF4y2Ba

这种设计将类划分为所有的二进制组合,并且不忽略任何类。也就是说,所有的课堂作业都是gydF4y2Ba1gydF4y2Ba而且gydF4y2Ba1gydF4y2Ba每个二元学习者在作业中至少有一个正类和一个负类。gydF4y2Ba

2gydF4y2BaKgydF4y2Ba- 1gydF4y2Ba- 1gydF4y2Ba 2gydF4y2BaKgydF4y2Ba- 2gydF4y2Ba
三元完成gydF4y2Ba

这种设计将类划分为所有三元组合。也就是说,所有的课堂作业都是gydF4y2Ba0gydF4y2Ba,gydF4y2Ba1gydF4y2Ba,gydF4y2Ba1gydF4y2Ba每个二元学习者在作业中至少有一个正类和一个负类。gydF4y2Ba

(3gydF4y2BaKgydF4y2Ba- 2gydF4y2BaKgydF4y2Ba+ 1gydF4y2Ba+ 1) / 2gydF4y2Ba

3.gydF4y2BaKgydF4y2Ba- 2gydF4y2Ba
序数gydF4y2Ba 对于第一个二元学习者,第一堂课是负的,其余的都是正的。对于第二个二元学习者,前两类为负,其余为正,依此类推。gydF4y2Ba KgydF4y2Ba- 1gydF4y2Ba 1gydF4y2Ba
密集的随机gydF4y2Ba 对于每个二元学习者,软件随机将班级分为正类或负类,每种类型至少有一个。详情请参见gydF4y2Ba随机编码设计矩阵gydF4y2Ba.gydF4y2Ba

随机的,但大约是10loggydF4y2Ba2gydF4y2BaKgydF4y2Ba

变量gydF4y2Ba
稀疏随机gydF4y2Ba 对于每个二元学习器,软件随机地将类别分配为正或负,每个类别的概率为0.25,并忽略概率为0.5的类别。详情请参见gydF4y2Ba随机编码设计矩阵gydF4y2Ba.gydF4y2Ba

随机的,但大约是15loggydF4y2Ba2gydF4y2BaKgydF4y2Ba

变量gydF4y2Ba

该图比较了编码设计的二进制学习器的数量与增加gydF4y2BaKgydF4y2Ba.gydF4y2Ba

纠错输出代码模型gydF4y2Ba

一个gydF4y2Ba纠错输出码(ECOC)模型gydF4y2Ba将三个或更多类的分类问题简化为一组二元分类问题。gydF4y2Ba

ECOC分类需要一个编码设计,它决定了二进制学习者训练的类,以及一个解码方案,它决定了二进制分类器的结果(预测)如何聚合。gydF4y2Ba

假设:gydF4y2Ba

  • 分类问题有三类。gydF4y2Ba

  • 编码设计是一对一的。对于三个类,此编码设计为gydF4y2Ba

    学习者1gydF4y2Ba 学习者2gydF4y2Ba 学习者3gydF4y2Ba 类1gydF4y2Ba 1gydF4y2Ba 1gydF4y2Ba 0gydF4y2Ba 二班gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba 0gydF4y2Ba 1gydF4y2Ba 3班gydF4y2Ba 0gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba

  • 解码方案使用损耗gydF4y2BaggydF4y2Ba.gydF4y2Ba

  • 学习者是支持向量机。gydF4y2Ba

为了建立这个分类模型,ECOC算法遵循以下步骤。gydF4y2Ba

  1. 学习者1根据第1班或第2班的观察结果进行训练,并将第1班视为积极的班级,将第2班视为消极的班级。其他学习者也接受类似的训练。gydF4y2Ba

  2. 让gydF4y2Ba米gydF4y2Ba以元素为编码设计矩阵gydF4y2Ba米gydF4y2Ba吉隆坡gydF4y2Ba,gydF4y2Ba年代gydF4y2BalgydF4y2Ba为积极类学习者的预测分类分数gydF4y2BalgydF4y2Ba.算法将一个新的观测值赋给类(gydF4y2Ba kgydF4y2Ba ^gydF4y2Ba ),以尽量减少损失的总和gydF4y2BalgydF4y2Ba二进制的学习者。gydF4y2Ba

    kgydF4y2Ba ^gydF4y2Ba =gydF4y2Ba argmingydF4y2Ba kgydF4y2Ba ∑gydF4y2Ba lgydF4y2Ba =gydF4y2Ba 1gydF4y2Ba lgydF4y2Ba |gydF4y2Ba 米gydF4y2Ba kgydF4y2Ba lgydF4y2Ba |gydF4y2Ba ggydF4y2Ba (gydF4y2Ba 米gydF4y2Ba kgydF4y2Ba lgydF4y2Ba ,gydF4y2Ba 年代gydF4y2Ba lgydF4y2Ba )gydF4y2Ba ∑gydF4y2Ba lgydF4y2Ba =gydF4y2Ba 1gydF4y2Ba lgydF4y2Ba |gydF4y2Ba 米gydF4y2Ba kgydF4y2Ba lgydF4y2Ba |gydF4y2Ba .gydF4y2Ba

与其他多类模型相比,ECOC模型可以提高分类精度gydF4y2Ba[2]gydF4y2Ba.gydF4y2Ba

提示gydF4y2Ba

  • 二元学习器的数量随着类的数量而增长。对于包含许多类的问题,使用gydF4y2BabinarycompletegydF4y2Ba而且gydF4y2BaternarycompletegydF4y2Ba编码设计效率不高。然而:gydF4y2Ba

    • 如果gydF4y2BaKgydF4y2Ba≤4,则使用gydF4y2BaternarycompletegydF4y2Ba编码设计而不是gydF4y2BasparserandomgydF4y2Ba.gydF4y2Ba

    • 如果gydF4y2BaKgydF4y2Ba≤5,则使用gydF4y2BabinarycompletegydF4y2Ba编码设计而不是gydF4y2BadenserandomgydF4y2Ba.gydF4y2Ba

    您可以通过输入显示训练后ECOC分类器的编码设计矩阵gydF4y2BaMdl。CodingMatrix进入命令窗口。gydF4y2Ba

  • 您应该利用对应用程序的深入了解,并考虑到计算限制,形成一个编码矩阵。如果你有足够的计算能力和时间,那么尝试几个编码矩阵,并选择一个具有最佳性能的(例如,检查每个模型使用的混淆矩阵gydF4y2BaconfusionchartgydF4y2Ba).gydF4y2Ba

  • 省略一项交叉验证(gydF4y2BaLeaveoutgydF4y2Ba)对于具有许多观测值的数据集是低效的。相反,使用gydF4y2BakgydF4y2Ba-fold交叉验证(gydF4y2BaKFoldgydF4y2Ba).gydF4y2Ba

  • 在训练模型之后,您可以生成C/ c++代码来预测新数据的标签。生成C/ c++代码需要gydF4y2BaMATLAB编码器™gydF4y2Ba.详细信息请参见gydF4y2Ba代码生成简介gydF4y2Ba.gydF4y2Ba

算法gydF4y2Ba

全部折叠gydF4y2Ba

自定义编码设计矩阵gydF4y2Ba

自定义编码矩阵必须具有一定的形式。该软件验证自定义编码矩阵,确保:gydF4y2Ba

  • 每个元素都是-1 0或1。gydF4y2Ba

  • 每一列至少包含一个-1和一个1。gydF4y2Ba

  • 对于所有不同的列向量gydF4y2BaugydF4y2Ba而且gydF4y2BavgydF4y2Ba,gydF4y2BaugydF4y2Ba≠gydF4y2BavgydF4y2Ba而且gydF4y2BaugydF4y2Ba≠-gydF4y2BavgydF4y2Ba.gydF4y2Ba

  • 所有的行向量都是唯一的。gydF4y2Ba

  • 矩阵可以分离任意两个类。也就是说,你可以按照以下规则从任何一行移动到任何另一行:gydF4y2Ba

    • 你可以垂直从1到-1,或者从-1到1。gydF4y2Ba

    • 可以从一个非零元素水平移动到另一个非零元素。gydF4y2Ba

    • 您只能使用矩阵的一列进行一次垂直移动。gydF4y2Ba

    如果不可能从行移动gydF4y2Ba我gydF4y2Ba行gydF4y2BajgydF4y2Ba使用这些规则,然后是类gydF4y2Ba我gydF4y2Ba而且gydF4y2BajgydF4y2Ba不能被设计分开。例如,在编码设计中gydF4y2Ba

    (gydF4y2Ba 1gydF4y2Ba 0gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 1gydF4y2Ba 0gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba ]gydF4y2Ba

    类1和类2不能与类3和类4分开(也就是说,您不能从第2行中的-1水平移动到第2列,因为该位置有一个0)。因此,软件拒绝这种编码设计。gydF4y2Ba

并行计算gydF4y2Ba

如果您使用并行计算(请参阅gydF4y2Ba选项gydF4y2Ba),然后gydF4y2BafitcecocgydF4y2Ba并行训练二元学习器。gydF4y2Ba

先验概率和成本gydF4y2Ba

  • 先验概率-软件规范化指定类的先验概率(gydF4y2Ba之前gydF4y2Ba)。让gydF4y2Ba米gydF4y2Ba是编码设计矩阵和gydF4y2Ba我gydF4y2Ba(gydF4y2Ba一个gydF4y2Ba,gydF4y2BacgydF4y2Ba)为指标矩阵。指标矩阵的维数与gydF4y2Ba一个gydF4y2Ba.的对应元素gydF4y2Ba一个gydF4y2Ba是gydF4y2BacgydF4y2Ba,则指标矩阵的元素等于1,否则为0。让gydF4y2Ba米gydF4y2Ba+1gydF4y2Ba而且gydF4y2Ba米gydF4y2Ba-1gydF4y2Ba是gydF4y2BaKgydF4y2Ba——- - - - - -gydF4y2BalgydF4y2Ba这样的矩阵:gydF4y2Ba

    • 米gydF4y2Ba+1gydF4y2Ba=gydF4y2Ba米gydF4y2Ba○gydF4y2Ba我gydF4y2Ba(gydF4y2Ba米gydF4y2Ba,1),其中,〇是逐元素的乘法(即,gydF4y2BaM + = M *(M = 1)gydF4y2Ba).同时,让gydF4y2Ba 米gydF4y2Ba lgydF4y2Ba (gydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 是列向量gydF4y2BalgydF4y2Ba的gydF4y2Ba米gydF4y2Ba+1gydF4y2Ba.gydF4y2Ba

    • 米gydF4y2Ba-1gydF4y2Ba= -gydF4y2Ba米gydF4y2Ba○gydF4y2Ba我gydF4y2Ba(gydF4y2Ba米gydF4y2Ba,-1)(即,gydF4y2Bam减= -M。*(m == -1)gydF4y2Ba).同时,让gydF4y2Ba 米gydF4y2Ba lgydF4y2Ba (gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 是列向量gydF4y2BalgydF4y2Ba的gydF4y2Ba米gydF4y2Ba-1gydF4y2Ba.gydF4y2Ba

    让gydF4y2Ba πgydF4y2Ba lgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba =gydF4y2Ba 米gydF4y2Ba lgydF4y2Ba (gydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba °gydF4y2Ba πgydF4y2Ba 而且gydF4y2Ba πgydF4y2Ba lgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba =gydF4y2Ba 米gydF4y2Ba lgydF4y2Ba (gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba °gydF4y2Ba πgydF4y2Ba ,在那里gydF4y2BaπgydF4y2Ba是指定的类先验概率(gydF4y2Ba之前gydF4y2Ba).gydF4y2Ba

    然后,给出二元学习器的正、负标量类先验概率gydF4y2BalgydF4y2Ba是gydF4y2Ba

    πgydF4y2Ba ^gydF4y2Ba lgydF4y2Ba (gydF4y2Ba jgydF4y2Ba )gydF4y2Ba =gydF4y2Ba 为gydF4y2Ba πgydF4y2Ba lgydF4y2Ba (gydF4y2Ba jgydF4y2Ba )gydF4y2Ba 为gydF4y2Ba 1gydF4y2Ba 为gydF4y2Ba πgydF4y2Ba lgydF4y2Ba (gydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 为gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 为gydF4y2Ba πgydF4y2Ba lgydF4y2Ba (gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 为gydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba

    在哪里gydF4y2BajgydF4y2Ba={-1,1}和gydF4y2Ba 为gydF4y2Ba 一个gydF4y2Ba 为gydF4y2Ba 1gydF4y2Ba 这是一个标准吗gydF4y2Ba一个gydF4y2Ba.gydF4y2Ba

  • 成本-软件规范化gydF4y2BaKgydF4y2Ba——- - - - - -gydF4y2BaKgydF4y2Ba成本矩阵gydF4y2BaCgydF4y2Ba(gydF4y2Ba成本gydF4y2Ba)。对于二元学习者gydF4y2BalgydF4y2Ba,将一个负类观测值分类为正类观测值的代价为gydF4y2Ba

    cgydF4y2Ba lgydF4y2Ba −gydF4y2Ba +gydF4y2Ba =gydF4y2Ba (gydF4y2Ba πgydF4y2Ba lgydF4y2Ba (gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba )gydF4y2Ba ⊤gydF4y2Ba CgydF4y2Ba πgydF4y2Ba lgydF4y2Ba (gydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba .gydF4y2Ba

    同样地,将一个正类观测值划分为负类观测值的代价是gydF4y2Ba

    cgydF4y2Ba lgydF4y2Ba +gydF4y2Ba −gydF4y2Ba =gydF4y2Ba (gydF4y2Ba πgydF4y2Ba lgydF4y2Ba (gydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba )gydF4y2Ba ⊤gydF4y2Ba CgydF4y2Ba πgydF4y2Ba lgydF4y2Ba (gydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba .gydF4y2Ba

    二元学习器的代价矩阵gydF4y2BalgydF4y2Ba是gydF4y2Ba

    CgydF4y2Ba lgydF4y2Ba =gydF4y2Ba (gydF4y2Ba 0gydF4y2Ba cgydF4y2Ba lgydF4y2Ba −gydF4y2Ba +gydF4y2Ba cgydF4y2Ba lgydF4y2Ba +gydF4y2Ba −gydF4y2Ba 0gydF4y2Ba ]gydF4y2Ba .gydF4y2Ba

    ECOC模型通过将错误分类成本与类别先验概率相结合来适应错误分类成本。如果你指定gydF4y2Ba之前gydF4y2Ba而且gydF4y2Ba成本gydF4y2Ba,则软件调整类先验概率如下:gydF4y2Ba

    πgydF4y2Ba ¯gydF4y2Ba lgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba =gydF4y2Ba cgydF4y2Ba lgydF4y2Ba −gydF4y2Ba +gydF4y2Ba πgydF4y2Ba ^gydF4y2Ba lgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba cgydF4y2Ba lgydF4y2Ba −gydF4y2Ba +gydF4y2Ba πgydF4y2Ba ^gydF4y2Ba lgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba cgydF4y2Ba +gydF4y2Ba −gydF4y2Ba πgydF4y2Ba ^gydF4y2Ba lgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba πgydF4y2Ba ¯gydF4y2Ba lgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba =gydF4y2Ba cgydF4y2Ba lgydF4y2Ba +gydF4y2Ba −gydF4y2Ba πgydF4y2Ba ^gydF4y2Ba lgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba cgydF4y2Ba lgydF4y2Ba −gydF4y2Ba +gydF4y2Ba πgydF4y2Ba ^gydF4y2Ba lgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba cgydF4y2Ba +gydF4y2Ba −gydF4y2Ba πgydF4y2Ba ^gydF4y2Ba lgydF4y2Ba +gydF4y2Ba 1gydF4y2Ba .gydF4y2Ba

随机编码设计矩阵gydF4y2Ba

对于给定数量的类gydF4y2BaKgydF4y2Ba,软件生成随机编码设计矩阵如下所示。gydF4y2Ba

  1. 软件生成以下矩阵之一:gydF4y2Ba

    1. 密集随机-软件以相等的概率为每个元素分配1或- 1gydF4y2BaKgydF4y2Ba——- - - - - -gydF4y2BalgydF4y2BadgydF4y2Ba编码设计矩阵,其中gydF4y2Ba lgydF4y2Ba dgydF4y2Ba ≈gydF4y2Ba ⌈gydF4y2Ba 10gydF4y2Ba 日志gydF4y2Ba 2gydF4y2Ba KgydF4y2Ba ⌉gydF4y2Ba .gydF4y2Ba

    2. 稀疏随机-软件为元素的每个元素赋值1gydF4y2BaKgydF4y2Ba——- - - - - -gydF4y2BalgydF4y2Ba年代gydF4y2Ba编码设计矩阵的概率为0.25,-1的概率为0.25,0的概率为0.5,其中gydF4y2Ba lgydF4y2Ba 年代gydF4y2Ba ≈gydF4y2Ba ⌈gydF4y2Ba 15gydF4y2Ba 日志gydF4y2Ba 2gydF4y2Ba KgydF4y2Ba ⌉gydF4y2Ba .gydF4y2Ba

  2. 如果一列不包含至少一个1和至少一个-1,那么软件将删除该列。gydF4y2Ba

  3. 对于不同的列gydF4y2BaugydF4y2Ba而且gydF4y2BavgydF4y2Ba,如果gydF4y2BaugydF4y2Ba=gydF4y2BavgydF4y2Ba或gydF4y2BaugydF4y2Ba= -gydF4y2BavgydF4y2Ba,然后软件删除gydF4y2BavgydF4y2Ba从编码设计矩阵。gydF4y2Ba

软件默认随机生成10,000个矩阵,并根据汉明测度(gydF4y2Ba[4]gydF4y2Ba)由gydF4y2Ba

ΔgydF4y2Ba (gydF4y2Ba kgydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba kgydF4y2Ba 2gydF4y2Ba )gydF4y2Ba =gydF4y2Ba 0.5gydF4y2Ba ∑gydF4y2Ba lgydF4y2Ba =gydF4y2Ba 1gydF4y2Ba lgydF4y2Ba |gydF4y2Ba 米gydF4y2Ba kgydF4y2Ba 1gydF4y2Ba lgydF4y2Ba |gydF4y2Ba |gydF4y2Ba 米gydF4y2Ba kgydF4y2Ba 2gydF4y2Ba lgydF4y2Ba |gydF4y2Ba |gydF4y2Ba 米gydF4y2Ba kgydF4y2Ba 1gydF4y2Ba lgydF4y2Ba −gydF4y2Ba 米gydF4y2Ba kgydF4y2Ba 2gydF4y2Ba lgydF4y2Ba |gydF4y2Ba ,gydF4y2Ba

在哪里gydF4y2Ba米gydF4y2BakgydF4y2BajgydF4y2BalgydF4y2Ba编码是设计矩阵的一个元素吗gydF4y2BajgydF4y2Ba.gydF4y2Ba

金宝app支持向量存储gydF4y2Ba

默认情况下,为了提高效率,gydF4y2BafitcecocgydF4y2Ba清空了gydF4y2BaαgydF4y2Ba,gydF4y2Ba金宝appSupportVectorLabelsgydF4y2Ba,gydF4y2Ba金宝appSupportVectorsgydF4y2Ba所有线性支持向量机二元学习器的特性。gydF4y2BafitcecocgydF4y2Ba列表gydF4y2BaβgydF4y2Ba,而不是gydF4y2BaαgydF4y2Ba,在模型中显示。gydF4y2Ba

来存储gydF4y2BaαgydF4y2Ba,gydF4y2Ba金宝appSupportVectorLabelsgydF4y2Ba,gydF4y2Ba金宝appSupportVectorsgydF4y2Ba,将指定存储支持向量的线性SVM模板传递给金宝appgydF4y2BafitcecocgydF4y2Ba.例如,输入:gydF4y2Ba

t = templateSVM(gydF4y2Ba“Save金宝appSupportVectors”gydF4y2Ba,true) Mdl = fitcecoc(X,Y,gydF4y2Ba“学习者”gydF4y2Bat);gydF4y2Ba

您可以通过传递结果来删除支持向量和相关金宝app值gydF4y2BaClassificationECOCgydF4y2Ba模型gydF4y2Badiscard金宝appSupportVectorsgydF4y2Ba.gydF4y2Ba

参考文献gydF4y2Ba

[1]奥尔温,E., R. Schapire, Y. Singer。将多类简化为二进制:边距分类器的统一方法。gydF4y2Ba机器学习研究杂志gydF4y2Ba.Vol. 1, 2000, pp. 113-141。gydF4y2Ba

[2] Fürnkranz, Johannes,“循环式分类”。gydF4y2Baj·马赫。学习。Res。gydF4y2Ba, Vol. 2, 2002, pp. 721-747。gydF4y2Ba

[3] Escalera, S., O. Pujol, P. Radeva。三进制纠错输出码的解码过程。gydF4y2Ba模式分析与机器智能汇刊gydF4y2Ba.Vol. 32, Issue 7, 2010, pp. 120-134。gydF4y2Ba

[4] Escalera, S., O. Pujol, P. Radeva。纠错输出码的稀疏设计的三进制码的可分性。gydF4y2BaRecog模式。列托人。gydF4y2Ba, 2009年第3期,第30卷,页285-297。gydF4y2Ba

扩展功能gydF4y2Ba

在R2014b中引入gydF4y2Ba