fitensemble

学习者适合合奏分类和回归

描述

fitensemble可以提高或包决策树学习者或判别分析分类器。该函数还可以训练KNN或判别分析分类器的随机子空间集合。

对于比较简单的界面,配合分类和回归合奏,而是使用fitcensemblefitrensemble,分别。同时,fitcensemblefitrensemble提供贝叶斯优化选项。

例子

MDL= fitensemble(TBL,ResponseVarName,方法,n了解,学习者)返回一个训练过的集合模型对象,该对象包含拟合集合的结果n了解分类或回归学习者(学习者)中的所有变量TBLResponseVarName是在响应变量的名称TBL方法是ensemble-aggregation方法。

例子

MDL= fitensemble(TBL,公式,方法,n了解,学习者)适合由指定的型号公式

例子

MDL= fitensemble(TBL,Y,方法,n了解,学习者)将所有变量TBL作为预测变量。Y响应变量是否不在TBL

例子

MDL= fitensemble(X,Y,方法,n了解,学习者)列车在使用所述预测数据的系综X在和响应数据Y

例子

MDL= fitensemble(___,名称,值)列车的合奏使用由一个或多个指定的附加选项名称,值自变量对任何以前的语法。例如,你可以指定类订单,以实现10倍交叉验证,或学习率。

例子

全部收缩

估计一个训练有素的决策树分类集合的替换损失。

加载电离层数据集。

加载电离层;

训练基于AdaBoost,100个学习周期,整个数据集的决策树合奏。

ClassTreeEns = fitensemble(X,Y,'AdaBoostM1',100,“树”);

ClassTreeEns是一个训练有素的ClassificationEnsemble综合识别。

确定累计替换损失(即,the cumulative misclassification error of the labels in the training data).

rsLoss = resubLoss(ClassTreeEns,'模式',“累积”);

rsLoss是一个100×1向量,其中元件k包含第一次之后的替换损失k学习周期。

绘制了学习的周期数的累计resubstitution损失。

情节(rsLoss);xlabel("学习周期的数量");ylabel (“Resubstitution损失”);

一般情况下,随着训练后的分类集合中决策树数目的增加,再替代损失减小。

替换损失的减少可能表明软件对集成进行了合理的训练。然而,你不能通过这种减少来推断整体的预测能力。为了测量集合的预测能力,通过以下方法估计泛化误差:

  1. 将数据随机划分为训练集和交叉验证集。通过指定‘坚持’,holdoutProportion当你用fitensemble

  2. 经过训练的合奏kfoldLoss,其中估计泛化误差。

使用一个经过训练的,增强的回归树集合来预测汽车的燃油经济性。选择气缸的数量、气缸所取代的体积、马力和重量作为预测指标。然后,使用较少的预测因子训练一个集合,并将其样本内预测精度与第一个集合进行比较。

加载carsmall数据集。将训练数据存储在一个表中。

加载carsmallTBL =表(缸,排气量,马力,体重,MPG);

指定一个回归树模板,该模板使用代理分割来提高在存在值。

t = templateTree (“代孕”,“上”);

使用LSBoost和100个学习周期训练回归树集成。

Mdl1 = fitensemble(资源描述,“英里”,'LSBoost',100,T);

Mdl1是一个训练有素的RegressionEnsemble回归集成。因为英里/加仑是MATLAB®工作空间中的一个变量,您可以通过输入相同的结果吗

Mdl1 = fitensemble(TBL,MPG, 'LSBoost',100,T);

使用训练有素的回归系综来预测一辆排量为200立方英寸、马力为150马力、重量为3000磅的四缸汽车的燃油经济性。

predMPG =预测(Mdl1,[4 200 150 3000])
predMPG = 22.8462

这些规格的汽车的平均燃油经济性是21.78英里每加仑。

培养使用所有预测新合奏TBL除了位移

公式=“MPG ~气缸+马力+重量”;Mdl2 = fitensemble(资源描述公式,'LSBoost',100,T);

比较MSEs之间的替换Mdl1MDL2

MSE1 = resubLoss(Mdl1)
mse1 = 6.4721
MSE2 = resubLoss(MDL2)
mse2 = 7.8599

在所有预测因子上训练的集合的样本内MSE较低。

估计决策树的训练有素,提高分类集成的泛化误差。

加载电离层数据集。

加载电离层;

培养使用AdaBoostM1决策树合奏,100个学习周期,并随机选择的所述数据的一半。该软件使用验证剩下一半的算法。

RNG(2);%的再现性ClassTreeEns = fitensemble(X,Y,'AdaBoostM1',100,“树”,...“坚持”,0.5);

ClassTreeEns是一个训练有素的ClassificationEnsemble综合识别。

确定累计泛化误差,即,the cumulative misclassification error of the labels in the validation data).

genError = kfoldLoss (ClassTreeEns,'模式',“累积”);

genError是一个100×1向量,其中元件k包含第一个后的泛化误差k学习周期。

画出泛化误差在学习周期数。

情节(genError);xlabel("学习周期的数量");ylabel (“泛化”);

当25个弱学习者组成集成分类器时,累积泛化误差降低到7%左右。

您可以控制树的深度决策树的合奏。您还可以控制在ECOC模型树的深度使用包含决策树二进制学习者MaxNumSplits,MinLeafSize,或MinParentSize名称 - 值对的参数。

  • 在对决策树进行bagging时,fitensemble默认情况下生成深度决策树。您可以种植较浅的树来减少模型的复杂性或计算时间。

  • 在增强决策树时,fitensemble默认情况下会生成树桩(一个分裂的树)。您可以种植更深的树以获得更好的精度。

加载carsmall数据集。指定变量加速度,位移,马力重量作为预测,和英里/加仑作为响应。

加载carsmallX = [加速位移马力重量];Y = MPG;

树的深度控制器为促进回归树的默认值是:

  • 1对于MaxNumSplits。此选项增长树桩。

  • 5对于MinLeafSize

  • 10对于MinParentSize

为了寻找最佳的分割次数:

  1. 训练一套成套设备。以指数方式增加后续合奏的最大分裂次数,从残肢到最多n- 1次分裂,其中n为训练样本容量。同时,将每个集成的学习率从1降低到0.1。

  2. 交叉验证集成。

  3. 估计每个合奏交叉验证均方误差(MSE)。

  4. 比较交叉验证的中小企业。具有最低一个执行最佳的合奏,并指示拆分的对所述数据集的最优最大数目,株数,和学习速率。

成长和跨验证了深刻的回归树和树桩。指定因为数据包含缺失值使用替代拆分。这些作为基准。

MdlDeep = fitrtree(X,Y,'CrossVal',“上”,'MergeLeaves',“关闭”,...“MinParentSize”,1“代孕”,“上”);MdlStump = fitrtree (X, Y,“MaxNumSplits”,1'CrossVal',“上”,“代孕”,“上”);

使用150棵回归树训练助推系统。使用5倍交叉验证对集成进行交叉验证。使用序列中的值更改最大拆分数 { 2 0 , 2 1 , , 2 } ,在那里是这样的: 2 不大于n- 1,n为训练样本容量。对于每个变量,将学习率调整到集合{0.1,0.25,0.5,1}中的每个值;

n =大小(X, 1);m =层(log2(n - 1));lr = [0.1 0.25 0.5 1];maxNumSplits = 2。^ (0: m);numTrees = 150;Mdl =细胞(元素个数(maxNumSplits),元素个数(lr));rng (1);%的再现性对于k = 1:元素个数(lr);对于J = 1:numel(maxNumSplits);t = templateTree (“MaxNumSplits”maxNumSplits (j),“代孕”,“上”);MDL {J,K} = fitensemble(X,Y,'LSBoost'numTrees t...“类型”,“回归”,'KFold'5,'LearnRate'、lr (k));结束;结束;

计算每个合奏交叉验证MSE。

kflAll = @ (x) kfoldLoss (x,'模式',“累积”);errorCell = cellfun(kflAll,铜牌,'制服'、假);错误=整形(cell2mat(errorCell),[numTrees numel(maxnum) numel(lr)]);errorDeep = kfoldLoss (MdlDeep);errorStump = kfoldLoss (MdlStump);

情节如何交叉验证MSE表现为在几个歌舞团,深树的整体增加树木的数量,而树墩。绘制相对于曲线在同一情节的学习速度,并绘制单独地块的不同树的复杂性。选择树的复杂性水平的一个子集。

mnsPlot = [1轮(numel(maxNumSplits)/ 2)numel(maxNumSplits)];数字;对于K = 1:3;副区(2,2,k)的;图(挤压(错误(:,mnsPlot(K),:))“线宽”,2);轴;持有;H = GCA;情节(h.XLim,[errorDeep errorDeep]“。b”,“线宽”,2);情节(h.XLim,[errorStump errorStump]“r”,“线宽”,2);情节(h.XLim,分钟(分钟(误差(:,mnsPlot(K),。)))* [1 1],'--k');h.YLim = [10 50];xlabel树木的数量;ylabel“旨在MSE”;标题(sprintf ('MaxNumSplits =%0.3克'maxNumSplits (mnsPlot (k))));持有;结束;HL =图例([cellstr(num2str(LR”,'学习率=%0.2F'));...“深树”;“树桩”;“闵。MSE”]);hL.Position (1) = 0.6;

每条曲线都包含一个最小的交叉验证MSE,该MSE发生在集成中树的最优数量上。

确定产生最低MSE的最大分割数、树的数量和学习率。

[minErr, minErrIdxLin] = min(错误(:));[idxNumTrees, idxMNS idxLR] = ind2sub(大小(错误),minErrIdxLin);流(“\ nMin。MSE = % 0.5 f 'minErr)
最小MSE = 18.50574
流(“\ nOptimal参数值:\ nNum。树木=%d”,idxNumTrees);
最佳参数值:民。树木= 12
流('\ nmaxnum= %d\nLearning Rate = %0.2f\n',...maxNumSplits(idxMNS),LR(idxLR))
MaxNumSplits = 4学习率= 0.25

有关优化此集成的另一种方法,请参阅优化一个增强的回归集成

输入参数

全部收缩

用于训练模型的样本数据,指定为一个表。每一行的TBL对应于一个观测,并且每一列对应于一个预测变量。TBL可以包含用于响应变量一个附加列。多列变量和除字符向量的单元阵列的其他单元阵列是不允许的。

  • 如果TBL包含响应变量,您希望使用所有剩余变量作为预测器,然后使用以下命令指定响应变量ResponseVarName

  • 如果TBL包含响应变量,要使用其余变量的一个子集仅作为预测,然后使用指定的公式公式

  • 如果TBL不包含响应变量,然后使用指定响应数据Y。响应变量的长度和行数TBL必须是相等的。

注意

为了节省内存和执行时间,请提供XY而不是TBL

数据类型:

中的响应变量名,指定为响应变量的名称TBL

您必须指定ResponseVarName作为字符向量或字符串标量。例如,如果Tbl.Y是响应变量,然后指定ResponseVarName'Y'。否则,fitensemble处理所有列TBL作为预测变量。

响应变量必须是明确的,字符或字符串数​​组,逻辑或数字载体,或字符向量的单元阵列。如果响应变量是一个字符数组,则每个元素必须对应于所述阵列的一行。

对于分类,可以使用一会名称-值对的论点。否则,fitensemble确定类别顺序,并且将其存储在Mdl.ClassNames

数据类型:字符|

响应变量和预测变量子集的解释模型,在表单中指定为字符向量或字符串标量“Y ~ X1 + X2 + X3”。在这种形式下,Y表示响应变量,和X1,X2X3表示预测变量。

中指定变量的子集TBL作为训练模型的预测因子,使用一个公式。如果你指定了一个公式,那么软件不使用任何变量TBL不会出现在公式

公式中的变量名必须在两个变量名TBL(Tbl.Properties.VariableNames)和有效的MATLAB®身份标识。

您可以验证的变量名中TBL通过使用isvarname函数。下面的代码返回逻辑1(真正)对于具有合法的变量名每个变量。

cellfun(@ isvarname,Tbl.Properties.VariableNames)
如果变量名中TBL是无效的,然后使用它们转换matlab.lang.makeValidName函数。
Tbl.Properties.VariableNames=matlab.lang.makeValidName(Tbl.Properties.VariableNames);

数据类型:字符|

预测数据,指定为数字矩阵。

每一行对应于一个观测,并且每一列对应于一个预测变量。

的长度Y和行数X必须是相等的。

以其出现的顺序指定谓词的名称X,可以使用PredictorNames名称-值对的论点。

数据类型:|

响应数据,指定为类别、字符或字符串数组、逻辑或数字向量或字符向量的单元数组。中的每个条目Y为相应行中的观察到的响应或标签XTBL。的长度Y和行数XTBL必须是相等的。如果响应变量是一个字符数组,则每个元素必须对应于所述阵列的一行。

  • 对于分类,Y可以是任何受支持的数据类型。万博1manbetx方法指定类的顺序一会名称-值对的论点。否则,fitensemble确定类别顺序,并且将其存储在Mdl.ClassNames

  • 对于回归,Y必须是一个数字列向量。

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

集合聚合方法,指定为此列表中的方法名称之一。

  • 对于两类分类:

    • 'AdaBoostM1'

    • “LogitBoost”

    • “GentleBoost”

    • “RobustBoost”(需要优化工具箱™)

    • “LPBoost”(需要优化工具箱)

    • “TotalBoost”(需要优化工具箱)

    • “RUSBoost”

    • “子空间”

    • '袋'

  • 按三个或以上类别分类:

    • 'AdaBoostM2'

    • “LPBoost”(需要优化工具箱)

    • “TotalBoost”(需要优化工具箱)

    • “RUSBoost”

    • “子空间”

    • '袋'

  • 对于回归:

    • 'LSBoost'

    • '袋'

如果您指定“方法”,“包”,然后使用。指定问题类型类型名称 - 值对的说法,因为你可以指定'袋'分类和回归问题。

有关集成聚合算法和示例的详细信息,请参阅整体算法选择一种适用的集成聚合方法

集成学习循环的数量,指定为正整数或“AllPredictorCombinations”

  • 如果你指定一个正整数,那么,在每一个学习周期,软件为每个模板对象训练一个弱学习者学习者。因此,软件列车n了解* numel(学习者)学习者。

  • 如果您指定“AllPredictorCombinations”,然后设置方法“子空间”并指定一个学习者只有在学习者。通过这些设置,软件训练学习者掌握所有可能的预测因子组合NPredToSample在一个时间。因此,软件列车nchoosek(NPredToSample大小(X, 2))学习者。

该软件使用组成训练有素的所有学生,并将它们存储在合奏Mdl.Trained

有关更多细节,请参见提示

数据类型:||字符|

弱学习者在集成中使用,指定为弱学习者名称、弱学习者模板对象或弱学习者模板对象的单元数组。

弱的学习者 弱学习名称 模板对象创建功能 方法设置
判别分析 “判别” templateDiscriminant 推荐“子空间”
k最近的邻居 “资讯” templateKNN 对于“子空间”只要
决策树 “树” templateTree 除了所有方法“子空间”

有关更多细节,请参见n了解提示

例子:对于两种类型的分类树组成的集合,供给{t1 t2},在那里t1t2是分类树模板。

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。的名字是参数的名称和是对应的值。的名字必须出现引号内。您可以按照任何顺序指定多个名称和值对参数名1,值1,...,NameN,值N

例子:'CrossVal', '上', 'LearnRate',0.05指定实现10倍交叉验证,并使用0.05作为学习率。

一般系综选择

全部收缩

分类预测列表中,指定为逗号分隔的一对组成的“CategoricalPredictors”并在此表中的值之一。

描述
正整数的向量 向量中的每个条目是对应于预测数据的列(索引值XTBL),其中包含一个分类变量。
逻辑向量 一个真正条目表示预测数据的对应的列(XTBL)是一个分类变量。
汉字字模 矩阵的每一行都是一个预测变量的名称。名称必须与其中的项匹配PredictorNames。用额外的空格填充名称,这样字符矩阵的每一行都有相同的长度。
字符串数组或字符向量的单元数组 数组中的每个元素都是一个预测变量的名称。名称必须与其中的项匹配PredictorNames
'所有' 所有的预测都是绝对的。

规范的“CategoricalPredictors”是合适的,如果:

  • “学习者”指定树学习者。

  • “学习者”指定k-最近的学习者,其中所有的预测都是分类的。

每一个学习者都以与学习者相对应的拟合函数相同的方式识别和处理范畴预测因子。看到“CategoricalPredictors”fitcknn对于k-nearest学习者和“CategoricalPredictors”fitctree对于树的学习者。

例子:'CategoricalPredictors', '所有'

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

打印输出频率,指定为逗号分隔的对组成“NPrint”一个正整数“关闭”

要跟踪的数弱学习折叠fitensemble迄今为止培养,指定一个正整数。也就是说,如果您指定的正整数:

  • 同时没有指定任何交叉验证选项(例如,CrossVal),然后fitensemble显示一个消息,以命令行每次完成训练时间弱的学习者。

  • 然后是交叉验证选项fitensemble显示一个消息,以命令行每次完成训练时间折叠。

如果您指定“关闭”, 然后fitensemble完成对弱学习者的培训时不显示消息。

提示

当在一个大的数据集训练许多弱学习的合奏,指定一个正整数NPrint

例子:“NPrint”, 5

数据类型:||字符|

预测器变量名,指定为逗号分隔的一对组成的“PredictorNames”以及唯一名称的字符串数组或唯一字符向量的单元数组。的功能“PredictorNames”这取决于你提供培训数据的方式。

  • 如果你提供XY,然后你可以使用“PredictorNames”给出预测变量X的名字。

    • 名字的顺序PredictorNames必须对应的列顺序X。也就是说,PredictorNames {1}是…的名字X(:,1),PredictorNames {2}是…的名字X (:, 2)等等。同时,尺寸(X,2)numel(PredictorNames)必须是相等的。

    • 默认情况下,PredictorNames{x1, x2,…}

  • 如果你提供TBL,然后你可以使用“PredictorNames”选择在训练中使用哪些预测变量。也就是说,fitensemble只使用预测变量PredictorNames和在训练响应变量。

    • PredictorNames必须是一个子集Tbl.Properties.VariableNames并且不能包含响应变量的名称。

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

    • 一个好的做法是使用任何训练指定预测“PredictorNames”公式只有。

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

数据类型:|细胞

响应变量名,指定为逗号分隔的对“ResponseName”和一个字符向量或字符串标量。

  • 如果你提供Y,然后你可以使用“ResponseName”以指定响应变量的名称。

  • 如果你提供ResponseVarName公式,则不能使用“ResponseName”

例子:“ResponseName”、“响应”

数据类型:字符|

监督学习类型,指定由逗号分隔的对组成“类型”'分类'“回归”

  • 如果方法“包”,则监督学习类型是模糊的。因此,指定类型当装袋。

  • 否则,值方法确定监督学习类型。

例子:“类型”,“分类”

交叉验证选项

全部收缩

交叉验证标志,由逗号分隔的对组成“Crossval”“上”“关闭”

如果您指定“上”,然后软件实现10倍的交叉验证。

要覆盖这个交叉验证设置,请使用以下名称-值对参数之一:CVPartition,坚持,KFold,或忽略。要创建交叉验证的模型,一次只能使用一个交叉验证的名称-值对参数。

或者,稍后通过传递交叉验证MDLcrossvalcrossval

例子:'Crossval', '上'

交叉验证分区,指定为逗号分隔的一对组成的“CVPartition”和一个cvpartition分区对象通过创建cvpartition。分区对象指定交叉验证的类型和用于训练和验证集的索引。

要创建一个交叉验证的模型,您只能使用以下四个名称-值对参数中的一个:CVPartition,坚持,KFold,或忽略

例子:假设你创建一个随机分区通过使用500个观察5倍交叉验证本量利= cvpartition(500年,“KFold”, 5)。然后,您可以通过使用指定交叉验证模型“CVPartition”,本量利

用于保留验证的数据的一部分,指定为逗号分隔的对“坚持”以及(0,1)范围内的标量值。如果您指定‘坚持’,p,然后软件完成以下步骤:

  1. 随机选择和保留p * 100%的数据作为验证数据,并使用剩下的数据训练模型。

  2. 存储紧凑,训练模型训练有素的交叉验证模型的属性。

要创建一个交叉验证的模型,您只能使用以下四个名称-值对参数中的一个:CVPartition,坚持,KFold,或忽略

例子:“坚持”,0.1

数据类型:|

在交叉验证的模型中使用的折叠数,指定为逗号分隔的对,其中包括'KFold'和正整数值大于1,如果您指定KFold, k,然后软件完成以下步骤:

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

  2. 对于每一组,保留所述一组作为验证数据,并且使用其它训练模型k- 1集。

  3. 存储k在a细胞中建立紧凑、训练有素的模型k-by-1在细胞中载体训练有素的交叉验证模型的属性。

要创建一个交叉验证的模型,您只能使用以下四个名称-值对参数中的一个:CVPartition,坚持,KFold,或忽略

例子:“KFold”, 5

数据类型:|

留一法交叉验证标志,指定为逗号分隔的一对组成的“Leaveout”“上”“关闭”。如果您指定“Leaveout”,“上”,那么,对于每一个n观察(其中n中指定的不包括遗漏的观测值的观测值的数量NumObservations),软件完成以下步骤:

  1. 保留观测数据作为验证数据,使用其他数据对模型进行训练n- 1点意见。

  2. 存储n在an细胞中建立紧凑、训练有素的模型n-by-1在细胞中载体训练有素的交叉验证模型的属性。

要创建一个交叉验证的模型,您只能使用以下四个名称-值对参数中的一个:CVPartition,坚持,KFold,或忽略

例子:“Leaveout”,“上”

其他分类或回归选择

全部收缩

用于训练的类的名称,指定为逗号分隔的对,由“类名”以及类别、字符或字符串数组、逻辑或数字向量或字符向量的单元数组。一会必须具有相同的数据类型Y

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

采用“类名”:

  • 培训期间订购的类。

  • 指定与类顺序对应的任何输入或输出参数维度的顺序。例如,使用“类名”指定的维度的顺序成本或由分类分数的列顺序返回预测

  • 选择要进行培训的类的子集。例如,假设所有不同的类名的集合Y{ 'A', 'B', 'C'}。使用来自类的观察来训练模型“一个”“c”只是,指定“类名”,{' a ', ' c '}

的默认值一会所有不同的类名的集合在吗Y

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

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

误分类成本,指定为逗号分隔的一对组成的'成本'和方阵或结构。如果指定:

  • 的方阵成本, 然后成本(I,J)把一个点分类的成本是多少j如果它的真正类是。也就是说,行对应于真正的类,列对应于预测的类。的相应行和列的类顺序成本,也可以指定一会名称-值对的论点。

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

    • S.ClassNames,其包含类名作为为相同的数据类型的变量Y

    • S.ClassificationCosts,其中包含按in排序的行和列的成本矩阵S.ClassNames

默认值是那些(K)- (K),在那里K是不同类的数量。

注意

fitensemble使用成本中指定的先验类概率进行调整之前。然后,fitensemble使用调整后的先验概率进行训练,并将成本矩阵重置为其默认值。

例子:'Cost',[0 1 2;1 0 2;2 2 0)

数据类型:||结构体

先验概率为每个类,指定为逗号分隔的一对组成的“在此之前”并在此表中的值。

描述
'经验' 类先验概率是其中的类相对频率Y
'制服' 所有类先验概率等于1 /K,在那里K是的类的数量。
数值向量 每个元素都是一个类的先验概率。根据。对元素排序Mdl.ClassNames或使用指定的顺序一会名称-值对的论点。该软件标准化的元件,使得它们的和为1
结构阵列

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

  • S.ClassNames将类名作为与类型相同的变量包含Y

  • S.ClassProbs包含相应先验概率的向量。该软件标准化的元件,使得它们的和为1

fitensemble在归一先验概率之前加起来等于1。

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

数据类型:字符||||结构体

观察权重,指定为逗号分隔的一对组成的“权重”和在正的值的数值向量或名称的变量的TBL。该软件对每一行的观测结果进行加权XTBL对应的值为权重。的大小权重必须等于的行数XTBL

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

该软件规格化权重使之与相应类中的先验概率值之和。

默认情况下,权重那些(n,1),在那里n是观测的数量XTBL

数据类型:||字符|

采样选项Boosting法和套袋

全部收缩

为每个弱学习者重新采样训练集的分数,指定为逗号分隔的对组成“FResample”并在正标量(0,1]。

使用“FResample”,指定“包”对于方法或一组重新取样“上”

例子:'FResample',0.75

数据类型:|

标志,指示采样与替换,指定为逗号分隔的对组成“替换”“关闭”“上”

  • 对于“上”,软件对训练观测结果进行采样,并进行替换。

  • 对于“关闭”,该软件对训练观察结果进行采样,不进行替换。如果你设置重新取样“上”,那么软件样本训练观察假设均匀的权重。如果您还指定的升压方法,那么软件提升的权重调整的意见。

除非你设置方法“包”或一组重新取样“上”,取代没有效果。

例子:“替换”、“关闭”

指示重新取样的标志,指定为逗号分隔的对,由重新取样的“关闭”“上”

  • 如果方法是一个助推方法,则:

    • “重新取样”,“上”指定到样本训练观测使用更新的权重作为多项式取样概率。

    • “重新取样”,“关”(默认)指定reweight观察在每个学习迭代。

  • 如果方法“包”, 然后重新取样的一定是“上”。该软件重新采样训练观察的一小部分(见FResample)具有或不具有替换(见取代)。

如果您指定重新取样使用重新取样,那么它是很好的做法,重新采样到整个数据集。也就是说,使用1的默认设置FResample

AdaBoostM1、AdaBoostM2、LogitBoost、GentleBoost和LSBoost方法选项

全部收缩

收缩的学习率,指定为在区间(0,1)中由数字标量组成的逗号分隔对。

使用收缩训练合奏,集LearnRate到的值小于1, 例如,0.1是一个受欢迎的选择。训练中使用收缩合奏需要更多的学习迭代,但往往达到更高的精度。

例子:“LearnRate”, 0.1

数据类型:|

RUSBoost方法选项

全部收缩

收缩的学习率,指定为在区间(0,1)中由数字标量组成的逗号分隔对。

使用收缩训练合奏,集LearnRate到的值小于1, 例如,0.1是一个受欢迎的选择。训练中使用收缩合奏需要更多的学习迭代,但往往达到更高的精度。

例子:“LearnRate”, 0.1

数据类型:|

相对于最低表示类的抽样比例,指定为由“RatioToSmallest”和一个数值标量或数值向量,其长度等于训练数据中不同的类的数目。

假设有K类在训练数据和最低限额类有训练数据中的观察结果。

  • 如果指定了正数标年代, 然后fitensemble样品年代*每个类别的观察值,也就是说,它对每个类别使用相同的抽样比例。有关更多细节,请参见算法

  • 如果指定数值向量(s1,s2、……sK], 然后fitensemble样品如果*观察从类,= 1,…,K。的元素RatioToSmallest与使用指定的类名的顺序相对应一会(见提示)。

默认值为那些(K,1),它指定到样品从每个类的观察。

例子:'RatioToSmallest',[2,1]

数据类型:|

LPBoost和TotalBoost方法选项

全部收缩

边缘精度控制收敛速度,指定为逗号分隔对组成'MarginPrecision'和区间[0,1]内的数值标量。MarginPrecision影响提高收敛所需的迭代次数。

提示

若要使用多个学习者来训练一个集合,请指定一个小值forMarginPrecision。对于使用少量学习者的培训,指定一个大的值。

例子:“MarginPrecision”, 0.5

数据类型:|

RobustBoost方法选择

全部收缩

目标分类误差,指定为逗号分隔的一对组成的“RobustErrorGoal”和非负数值标量。可能值的上限取决于的值RobustMarginSigmaRobustMaxMargin。但是,上限不能超过1

提示

对于一个特定的训练集,通常有一个最优的范围RobustErrorGoal。如果你把它设置得太低或太高,那么这个软件就会产生一个分类准确率很低的模型。尝试交叉验证以搜索适当的值。

例子:'RobustErrorGoal',0.05

数据类型:|

分类余量分布分布在训练数据上,指定为逗号分隔对组成“RobustMarginSigma”和一个正的数字标量。在指定RobustMarginSigma,参考文献上RobustBoost, 例如,[19]

例子:“RobustMarginSigma”, 0.5

数据类型:|

训练数据中的最大分类裕度,指定为由“RobustMaxMargin”和非负数值标量。该软件最大限度地减少了训练数据中的观察值,其分类边界如下所示RobustMaxMargin

例子:'RobustMaxMargin',1

数据类型:|

随机子空间法选项

全部收缩

为每个随机子空间学习者抽样的预测因子数,指定为逗号分隔的对'NPredToSample'区间为1的正整数,…,p,在那里p为预测变量个数(尺寸(X,2)大小(TBL,2))。

数据类型:|

输出参数

全部收缩

训练有素的整体模型,返回此表中的模型对象之一。

模型对象 类型设置 指定任何交叉验证选项? 方法设置 重新取样设置
ClassificationBaggedEnsemble '分类' 没有 '袋' “上”
ClassificationEnsemble '分类' 没有 用于分类任何合奏聚集方法 “关闭”
ClassificationPartitionedEnsemble '分类' 任何分类集成聚集方法 “关闭”“上”
RegressionBaggedEnsemble “回归” 没有 '袋' “上”
RegressionEnsemble “回归” 没有 'LSBoost' “关闭”
RegressionPartitionedEnsemble “回归” 'LSBoost''袋' “关闭”“上”

控制交叉验证的名称 - 值对参数是CrossVal,坚持,KFold,忽略CVPartition

参考属性MDL使用点符号。例如,要访问或显示尚未交叉验证的集成的弱学习器模型对象的单元向量,请输入Mdl.Trained在命令行。

提示

  • n了解可以从几十到几千元不等。通常情况下,具有良好的预测能力合奏从几百需要到几千个弱学习。不过,你不必一次训练的合奏了很多次。您可以通过不断增长的几十个学生开始,检查合奏表演,然后,如果必要的话,使用培养出更多的弱学习的简历对于分类问题,或者的简历回归问题。

  • 合奏表演取决于合奏的设置和弱学习者的设置。也就是说,如果您用默认参数指定了弱学习者,那么集成的性能就会很差。因此,像集成设置一样,使用模板调整弱学习者的参数并选择最小化泛化误差的值是一个很好的实践。

  • 如果您指定重新取样使用重新取样,那么它是很好的做法,重新采样到整个数据集。也就是说,使用默认设置1对于FResample

  • 在分类问题中(即,类型'分类'):

    • 如果ensemble-aggregation方法(方法)是“包”和:

      • 误分类成本(成本)是高度不均衡,那么,在袋的样品,该软件过采样从具有较大的点球类独特的看法。

      • 类先验概率(之前)是高度扭曲,该软件从具有较大的先验概率类的过采样独特的看法。

      对于较小的样品尺寸,这些组合可导致来自具有大的惩罚或先验概率的类外的袋观察的低的相对频率。因此,所估计的外的包误差是高度可变的,它可以是难以解释。为了避免大的估计出的袋误差方差,特别是用于小样本大小,使用设定一个更平衡的误分类成本矩阵成本或者用一个不那么倾斜的先验概率向量之前

    • 因为一些输入和输出参数的顺序对应于不同类别的训练数据,这是很好的做法使用来指定类顺序一会名称-值对的论点。

      • 要快速确定类的顺序,请从未分类的训练数据中删除所有观察结果(即缺少标签),获取并显示所有不同类的数组,然后为其指定数组一会。例如,假设响应变量(Y)是标签的单元阵列。该代码指定了变量的类顺序类名

        Ycat =分类(Y);一会=类别(Ycat)
        分类分配<定义>未分类的意见和类别不包括<定义>从它的输出。因此,如果您对标签的单元数组使用此代码,或者对分类数组使用类似的代码,那么您不必删除缺少标签的观察结果来获得不同类的列表。

      • 要指定从代表最低的标签到代表最多的标签的类顺序,然后快速确定类顺序(如前一项所示),但是在将列表传递给之前,要按频率排列列表中的类一会。从前面的例子中可以看出,这段代码指定了从最低到最高的类顺序classNamesLH

        Ycat =分类(Y);一会=类别(Ycat);频率= countcats (Ycat);[~,idx] =(频率)进行排序;classNamesLH =一会(idx);

算法

  • 有关ensemble-aggregation算法的详细信息,请参阅整体算法

  • 如果您指定方法成为一个增强算法学习者成为决策树,软件就会成长树桩默认。的决定残端是连接到两个终端,叶节点一个根节点。您可以通过指定调整树深度MaxNumSplits,MinLeafSizeMinParentSize使用的名称-值对参数templateTree

  • fitensemble通过对误分类代价大的类进行过采样和对误分类代价小的类进行欠采样来生成袋中样本。因此,袋外样本中来自具有较大误分类成本的类的观察值较少,而来自具有较小误分类成本的类的观察值较多。如果您使用一个小的数据集和一个高度倾斜的成本矩阵来训练一个分类集合,那么每个类的out-of-bag观察值可能很低。因此,估计的out-of-bag误差可能有很大的方差,并且很难解释。对于具有较大先验概率的类,也会出现相同的现象。

  • 对于RUSBoost ensemble-aggregation方法(方法)、名称-值对参数RatioToSmallest指定每个类相对于最低表示类的抽样比例。例如,假设训练数据中有两个类:一个B一个有100个观测和B有10个观测值。此外,假设代表性最低的类有训练数据中的观察结果。

    • 如果你设置“RatioToSmallest”, 2, 然后年代*=2 * 10=20.。所以,fitensemble列车采用从第20类观察每位学员一个和从类20周的观察B。如果你设置‘RatioToSmallest’, (2 - 2),则得到相同的结果。

    • 如果你设置'RatioToSmallest',[2,1], 然后s1*=2 * 10=20.s2*=1 * 10=10。所以,fitensemble列车采用从第20类观察每位学员一个和课堂上的10次观察B

  • 对于决策树,并为双核系统和上述的合奏,fitensemble使用Intel并行化培训®线程构建模块(TBB)。如欲了解有关英特尔TBB的详细信息,请参阅https://software.intel.com/en-us/intel-tbb

参考

[1] Breiman,L.“套袋预测因子”。机器学习。第26卷,第123-140页,1996年。

[2] Breiman, L.《随机森林》。机器学习。卷。45,第5-32,2001年。

一个更稳健的提升算法。的arXiv:0905.2138v1,2009年。

[4] Freund, y。和r。e。Schapire。“在线学习决策理论的推广与应用。”计算机与系统科学卷。55,第119-139,1997。

贪婪函数近似:一个梯度提升机。统计年鉴卷。29,第5号,第1189至1232年,2001。

[6] Friedman, J., T. Hastie,和R. Tibshirani。加法逻辑回归:促进的统计观点。统计年鉴卷。28,第2号,第337-407,2000。

[7] Hastie的,T.,R. Tibshirani,和J.弗里德曼。统计学习的要素section edition,施普林格,纽约,2008。

[8]何,T. K.“用于构建决策森林随机子空间方法”。IEEE交易模式分析与机器智能,第20卷,第8期,第832-844页,1998年。

[9] Schapire,R. E.,Y.弗氏,P.巴特利特和W.S.李。“促进保证金:为投票方法有效性的新的解释。”统计年鉴,第26卷,第5期,第1651-1686页,1998年。

b . Seiffert, C., T. Khoshgoftaar, J. Hulse,和A. Napolitano。“RUSBoost:在训练数据不准确的情况下提高击穿能力。”第十九届模式识别国际会议,第1-4页,2008年。

[11] Warmuth, M., J. Liao,和G. Ratsch。“完全纠正了提高利润率的算法。”Proc, 23日国际。机器学习,ACM,纽约,第1001-1008页,2006年。

介绍了R2011a