主要内容

fitensemble

适合学习者的集体分类和回归

描述

fitensemble可以提升或袋子决策树学习者或判别分析分类器。该功能还可以培训KNN或判别分析分类器的随机子空间集合。

对于适合分类和回归集成的更简单的接口,请使用fitcensemblefitrensemble, 分别。还,fitcensemblefitrensemble提供贝叶斯优化选项。

例子

Mdl= fitysemble(TBL.responsevarname.方法nlearn.学习者)返回培训的合奏模型对象,其中包含拟合集合的结果nlearn.分类或回归学习者(学习者)到表中的所有变量TBL.responsevarname.是响应变量的名称TBL.方法是合奏聚合方法。

例子

Mdl= fitysemble(TBL.公式方法nlearn.学习者)符合指定的模型公式

例子

Mdl= fitysemble(TBL.Y方法nlearn.学习者)处理的所有变量TBL.作为预测变量。Y响应变量是否不在其中TBL.

例子

Mdl= fitysemble(XY方法nlearn.学习者)使用预测器数据列入合奏X和响应数据Y

例子

Mdl= fitysemble(___名称,值)使用一个或多个指定的其他选项列车名称,值对参数和以前的任何语法。例如,您可以指定类顺序,以实现10倍交叉验证或学习率。

例子

全部折叠

估计经过训练的、增强的决策树分类集成的再替换损失。

加载电离层数据集。

负载电离层

使用AdaBoost、100个学习周期和整个数据集训练决策树集合。

classtreeens = fitysemble(x,y,“AdaBoostM1”, 100,'树');

Classtreeens.是训练有素的分类素..集成分类器。

确定累积重新提交损失(即,培训数据中标签的累积错误分类错误)。

rsloss = Resubloss(Classtreeens,“模式”'累积');

rsLoss是一个100×1的矢量,其中元素k包含第一个后的再替换损失k学习周期。

绘制累计再替换损失除以学习周期数的曲线。

情节(rsLoss);包含(“学习周期的数量”);ylabel ('补偿损失');

图中包含一个坐标轴。轴包含一个线型对象。

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

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

  1. 将数据随机划分为训练集和交叉验证集。通过指定'octout',holdoutpropoft当你用fitensemble

  2. 把训练有素的服装传递给kfoldLoss,估计泛化误差。

使用训练有素的提升的回归树系列来预测汽车的燃油经济性。选择圆柱体的数量,汽缸,马力和重量作为预测因子。然后,使用较少的预测器培训合奏,并将其对第一集合的样本预测精度进行比较。

加载carsmall数据集。将培训数据存储在表格中。

负载carsmallTBL =桌子(圆柱,位移,马力,重量,MPG);

指定回归树模板,该模板使用代理分割来提高存在时的预测准确性价值观。

t = templateTree ('代理'“上”);

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

mdl1 = fitysemble(tbl,“英里”“LSBoost”,100,t);

Mdl1是训练有素的RegressionEnsemble回归合奏。因为MPG.是Matlab®工作区中的变量,您可以通过输入获取相同的结果

Mdl1 = fitensemble (MPG,台“LSBoost”,100年,t);

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

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

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

使用所有预测器培训新的合奏TBL.除了移位

公式='MPG ~气缸+马力+重量';mdl2 = fitysemble(tbl,公式,“LSBoost”,100,t);

比较两者的再取代mseMdl1Mdl2

MSE1 = RERUBLOS(MDL1)
mse1 = 6.4721
MSE2 = RERUBLOS(MDL2)
mse2 = 7.8599

所有预测因子列车的集合的样本MSE是较低的。

估计训练,提升决策树的泛化误差。

加载电离层数据集。

负载电离层

使用AdaBoostM1训练决策树集合,100个学习周期,并随机选择一半的数据。软件使用剩下的一半来验证算法。

rng (2);重复性的%classtreeens = fitysemble(x,y,“AdaBoostM1”, 100,'树'......“坚持”, 0.5);

Classtreeens.是训练有素的分类素..集成分类器。

确定累积泛化误差,即验证数据中标签的累积错误分类错误)。

generror = kfoldloss(classtreeens,“模式”'累积');

generror.是一个100×1的矢量,其中元素k在第一个后包含泛化错误k学习周期。

绘制泛化误差除以学习周期数的曲线。

情节(genError);包含(“学习周期的数量”);ylabel ('泛化误差');

图中包含一个坐标轴。轴包含一个线型对象。

当25个弱学习者组成集合分类器时,累积泛化误差减少到大约7%。

您可以在决策树的集合中控制树木的深度。您还可以使用使用该决策树二进制学习者的Ecoc模型中的树深度来控制树形深度MaxNumSplitsMinLeafSize,或MinParentSize名称值对参数。

  • 当套用决策树时,fitensemble默认情况下变得深深的决策树。您可以成长较浅的树木以降低模型复杂性或计算时间。

  • 当提升决策树时,fitensemble在默认情况下生长树桩(一棵有一个分叉的树)。你可以种植更深的树以获得更好的精度。

加载carsmall数据集。指定的变量加速度移位马力,重量为预测因子,MPG.作为响应。

负载carsmallX = [加速位移马力重量];y = mpg;

用于增强回归树的树深度控制器的默认值为:

  • 1MaxNumSplits.这个选项生长了树桩。

  • 5MinLeafSize

  • 10MinParentSize

搜索最佳分割次数:

  1. 训练一套服装。指数增加从树桩到最多的后续合奏的最大分割数n- 1分裂,在哪里n是训练样本大小。此外,将每个集合的学习率降低1至0.1。

  2. 交叉验证集成。

  3. 估计每个合奏的交叉验证的均衡错误(MSE)。

  4. 比较交叉验证的mses。具有最低一个最低的集合最佳,并指示数据集的最佳最大拆分数,树数和学习率。

生长和交叉验证一个深度回归树和一个树桩。指定使用代理分割,因为数据包含缺失值。这些都是基准。

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} = fitysemble(x,y,“LSBoost”numTrees t......'类型''回归''kfold',5,“LearnRate”,lr(k));结束结束

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

kflall = @(x)kfoldloss(x,“模式”“累积”);errorcell = cellfun(kflall,mdl,'制服'、假);error = replaceall (cell2mat(errorCell),[numTrees nummel (maxnumsplents) nummel (lr)]); / /重新命名errorDeep = kfoldLoss (MdlDeep);errorStump = kfoldLoss (MdlStump);

绘制交叉验证的MSE在一些集成、深层树和树桩的集成中树的数量增加时的行为。在同一图中绘制关于学习率的曲线,并根据不同的树的复杂性绘制不同的图。选择树复杂度级别的子集。

mnsplot = [1 round(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,min(min(错误(:,mnsplot(k),:)))。* [1 1],“——k”);H.YLIM = [10 50];XLabel.'树的数量';ylabel.'交叉验证的MSE';标题(Sprintf('maxnumsplits =%0.3g',maxnumsplits(mnsplot(k)))))));抓住结束;hL =传奇([cellstr num2str (lr ','学习率= %0.2f'));......'深树'“树桩”'闵。MSE']);HL.Position(1)= 0.6;

图包含3个轴。带有标题MaxnumSplits = 1的轴1包含7个类型的线。带有标题MaxnumSplits = 8的轴2包含7个类型的线。带标题MaxnumSplits = 64的轴3包含7个类型的类型。这些对象代表学习率= 0.10,学习率= 0.25,学习率= 0.50,学习率= 1.00,深树,树桩,分钟。MSE。

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

确定总体上最低MSE的最大分裂数,树木数量和学习率。

[minErr, minErrIdxLin] = min(错误(:));[idxNumTrees, idxMNS idxLR] = ind2sub(大小(错误),minErrIdxLin);流('\ nmin。MSE =%0.5F'minErr)
闵。MSE = 18.42979.
流(“\ nOptimal参数值:\ nNum。树= % d ',idxnumtrees);
最佳参数值:num。树木= 1
流('\ nmaxnumsplits =%d \ nlearning率=%0.2f \ n'......maxNumSplits (idxMNS), lr (idxLR))
学习速率= 1.00

要了解优化这个集成的不同方法,请参见优化增强回归集成

输入参数

全部折叠

用于培训模型的示例数据,指定为表。每一排TBL.对应一个观察值,每一列对应一个预测变量。TBL.可以为响应变量包含一个额外的列。除了字符向量的单元格数组之外,不允许使用多列变量和单元格数组。

  • 如果TBL.包含响应变量,如果希望使用所有剩余变量作为预测器,则使用responsevarname.

  • 如果TBL.包含响应变量,并且您希望将剩余变量的子集仅用为预测器,然后使用公式

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

请注意

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

数据类型:表格

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

您必须指定responsevarname.作为字符矢量或字符串标量。例如,如果tbl.y.是否指定响应变量responsevarname.作为“Y”.否则,fitensemble处理的所有列TBL.作为预测变量。

响应变量必须是分类,字符或字符串阵列,逻辑或数字矢量或字符向量的单元格数组。如果响应变量是字符数组,则每个元素必须对应于数组的一行。

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

数据类型:char|细绳

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

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

公式中的变量名必须是其中的两个变量名TBL.Tbl.Properties.VariableNames)和有效的MATLAB®标识符。您可以验证变量名TBL.通过使用isvarname函数。如果变量名称无效,则可以使用使用的转换它们matlab.lang.makeValidName函数。

数据类型:char|细绳

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

每一行对应一个观察值,每一列对应一个预测变量。

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

以它们的外观顺序指定预测器的名称X,可以使用预测名称-值对的论点。

数据类型:|双倍的

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

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

  • 对于回归,Y必须是数值列向量。

数据类型:分类|char|细绳|逻辑||双倍的|细胞

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

  • 分为两类:

    • “AdaBoostM1”

    • 'logitboost'

    • “GentleBoost”

    • 'robustboost'(需要优化工具箱™)

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

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

    • 'rusboost'

    • '子空间'

    • '包'

  • 有三个或以上类别的分类:

    • “AdaBoostM2”

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

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

    • 'rusboost'

    • '子空间'

    • '包'

  • 回归:

    • “LSBoost”

    • '包'

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

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

集成学习周期的数目,指定为正整数或'AllPredictorCombinations'

  • 如果您指定了一个正整数,那么,在每个学习周期,软件都会为每个模板对象列举一个弱的学习者学习者.因此,软件列车NLearn *元素个数(学习者)学习者。

  • 如果您指定'AllPredictorCombinations',然后设置方法'子空间'并指定一个学习者只在学习者.通过这些设置,软件列车获取学习者以获得所有可能的预测器组合NPredToSample一次。因此,软件列车nchoosek.(大小(x,2),npredtosample)学习者。

该软件使用所有受过训练的学习者组成集合并将他们存储在其中Mdl。训练有素的

有关详细信息,请参见提示

数据类型:|双倍的|char|细绳

弱学习者在集合中使用,指定为弱学习者名称,弱学习者模板对象或弱学习者模板对象的单元格阵列。

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

有关详细信息,请参见nlearn.提示

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

名称-值对的观点

指定可选的逗号分隔的对名称,值论点。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:'横向','上','学习',0.05指定实现10倍交叉验证和使用0.05作为学习率。
一般集合选项

全部折叠

分类预测器列表,指定为该表中的值之一。

价值 描述
正整数矢量

向量中的每个条目是与包含分类变量的预测数据列对应的索引值。索引值在1之间p, 在哪里p为用于训练模型的预测器数量。

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

逻辑向量

一个真正的Entry表示预测数据对应的列是一个分类变量。向量的长度是p

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

规格“CategoricalPredictors”如果:

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

  • “学习者”指定k-最接近的学习者,所有的预测都是绝对的。

每个学习者以与学习者对应的拟合函数相同的方式识别和对待分类预测器。看到“CategoricalPredictors”Fitcknn.k最近的学习者和“CategoricalPredictors”fitctree树的学习者。

例子:“CategoricalPredictors”、“所有”

数据类型:|双倍的|逻辑|char|细绳|细胞

打印输出频率,指定为逗号分隔对组成'纳丁'和一个正整数或'离开'

来追踪号码弱学习者折叠fitensemble训练到目前为止,指定一个正整数。也就是说,如果你指定了正整数

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

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

如果您指定'离开',然后fitensemble当它完成对弱学习者的训练时,不会显示一个信息。

提示

对于一些增强决策树的最快训练,集合纳丁为默认值'离开'.此技巧适用于分类方法“AdaBoostM1”“AdaBoostM2”“GentleBoost”,或'logitboost',或回归时方法“LSBoost”

例子:“NPrint”,5

数据类型:|双倍的|char|细绳

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

  • 如果你提供XY,则可以使用预测将名称分配给Predictor变量X

    • 名称的顺序预测必须对应的列顺序X.那是,predictornames {1}x(:1)predictornames {2}X(:,2), 等等。还,尺寸(x,2)元素个数(PredictorNames)必须是相等的。

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

  • 如果你提供TBL.,则可以使用预测选择在训练中使用的预测变量。那是,fitensemble仅使用中的预测变量预测以及训练过程中的反应变量。

    • 预测一定是?的子集Tbl.Properties.VariableNames且不能包含响应变量的名称。

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

    • 一个好的实践是指定使用这两种方法进行训练的预测器“PredictorNames”公式,但不是两者都有。

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

数据类型:细绳|细胞

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

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

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

例子:“ResponseName”、“响应”

数据类型:char|细绳

监督学习类型,指定为逗号分隔对组成'类型''分类''回归'

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

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

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

交叉验证选择

全部折叠

交叉验证标志,指定为逗号分隔对,由“Crossval”“上”'离开'

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

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

或者,通过通过后来交叉验证Mdlcrossvalcrossval

例子:'横向','开'

交叉验证分区,指定为cvpartition由...创建的分区对象cvpartition.分区对象指定跨验证的类型和培训和验证集的索引。

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

例子:假设您使用以下方法创建了一个随机分区,用于对500个观测数据进行5倍交叉验证本量利= cvpartition(500年,“KFold”,5).然后,您可以通过使用指定交叉验证的模型“CVPartition”,本量利

用于阻止验证的数据的分数,指定为范围(0,1)的标量值。如果您指定‘坚持’,p,则软件完成以下步骤:

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

  2. 将经过训练的小型模型存储在训练有素的交叉验证模型的性质。

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

例子:'持有',0.1

数据类型:双倍的|

在交叉验证模型中使用的折叠数,指定为大于1.如果指定的正整数值。KFold, k,则软件完成以下步骤:

  1. 随机分区数据k套。

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

  3. 存储k紧凑,训练有素的型号k- 1个细胞矢量训练有素的交叉验证模型的性质。

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

例子:“KFold”,5

数据类型:|双倍的

留下一张交叉验证标志,指定为“上”'离开'.如果您指定“Leaveout”,“上”,那么对于每一个n观察(在哪里n是观察的数量,不包括缺失的观察,指定NumObservations模型属性),软件完成以下步骤:

  1. 保留一个观测值作为验证数据,使用另一个来训练模型n- 1观察。

  2. 存储n紧凑,训练有素的型号n- 1个细胞矢量训练有素的交叉验证模型的性质。

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

例子:“Leaveout”,“上”

其他分类或回归选项

全部折叠

用于训练的类名,指定为分类数组、字符数组或字符串数组;逻辑或数字向量;或者字符向量的单元格数组。一会中的响应变量必须具有相同的数据类型TBL.Y

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

使用一会:

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

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

  • 选择培训类的子集。例如,假设所有不同类别名称的集合Y{' a ', ' b ', ' c '}.使用课程的观测训练模型“一个”“c”仅限,指定“类名”,{' a ', ' c '}

的默认值一会中响应变量中所有不同类名的集合TBL.Y

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

数据类型:分类|char|细绳|逻辑||双倍的|细胞

错误分类成本,指定为逗号分隔的配对组成“成本”和平方矩阵或结构。如果您指定:

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

  • 结构年代,然后它必须有两个字段:

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

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

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

请注意

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

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

数据类型:双倍的||结构体

每个类的先前概率,指定为逗号分隔的配对组成'事先的'和这个表中的值。

价值 描述
'经验' 类先验概率是类的相对频率Y
'制服' 所有类先验概率都等于1/K, 在哪里K为类数。
数值向量 每个元素都是现有概率的类。根据符合元素Mdl。一会或使用该订单指定订单一会名称-值对的论点。该软件将其总和的元素标准化为1
结构阵列

结构年代有两个领域:

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

  • S.ClassProbs包含相应的先前概率的向量。该软件将其总和的元素标准化为1

fitensemble中的先验概率归一化之前求和为1。

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

数据类型:char|细绳|双倍的||结构体

观察权值,指定为逗号分隔的对,由“重量”和一个数字矢量的数字矢量或变量的名称TBL..该软件对每一行的观察结果进行权衡XTBL.对应的值在权重.的大小权重必须等于XTBL.

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

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

默认情况下,权重(n1), 在哪里n观察的次数在吗XTBL.

数据类型:双倍的||char|细绳

增压方法和装袋的抽样选择

全部折叠

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

使用“FResample”,指定'包'方法或集合重组“上”

例子:'fresample',0.75

数据类型:|双倍的

指示带替换抽样的标志,指定为由逗号分隔的对“替换”'离开'“上”

  • “上”,软件对训练观察结果进行样本替换。

  • '离开',软件在没有替代的情况下对培训观察进行样本。如果你设置重组“上”,然后软件对假设均权值的训练观察值进行抽样。如果你也指定了一种加速方法,那么软件就会通过重新加权观察结果来加速。

除非你设置方法'包'或集合重组“上”代替没有效果。

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

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

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

    • 重新取样,“指定使用更新的权值作为多项抽样概率对训练观察进行抽样。

    • “重新取样”,“关闭”(默认)指定在每次学习迭代时重新加权观察值。

  • 如果方法'包',然后重新取样的必须“上”.该软件对训练观察结果的一部分进行重新采样(见FResample),包括或不包括更换(见代替).

如果您指定重新取样使用重组,然后是良好的做法,重新确定整个数据集。也就是说,使用1的默认设置FResample

adaboostm1,adaboostm2,logitboost,spandboost和lsboost方法选项

全部折叠

收缩率的学习率,指定为逗号分隔对组成“LearnRate”以及区间(0,1)内的数字标量。

使用收缩,设置训练集合LearnRate比少于1, 例如,0.1是一个很受欢迎的选择。使用收缩来训练集成需要更多的学习迭代,但通常可以获得更好的准确性。

例子:“LearnRate”,0.1

数据类型:|双倍的

RUSBoost方法选择

全部折叠

收缩率的学习率,指定为逗号分隔对组成“LearnRate”以及区间(0,1)内的数字标量。

使用收缩,设置训练集合LearnRate比少于1, 例如,0.1是一个很受欢迎的选择。使用收缩来训练集成需要更多的学习迭代,但通常可以获得更好的准确性。

例子:“LearnRate”,0.1

数据类型:|双倍的

相对于最小表示类的抽样比例,指定为逗号分隔对组成'ratiotosmallest'和一个数字标量或数字矢量的正值,长度等于训练数据中的不同类的数量。

假设有K培训数据中的课程和最低代表的类对训练数据的观察。

  • 如果指定正数字标量年代,然后fitensemble样本年代每个类的观察,即对每个类使用相同的抽样比例。有关详细信息,请参见算法

  • 如果指定数值向量s1s2,......,sK,然后fitensemble样本如果课堂观察= 1,......,K.的元素RatioToSmallest与使用中指定的类名的顺序对应一会(看提示).

默认值是(K1),指定样本每个班级的观察。

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

数据类型:|双倍的

LPBoost和全腾料方法选项

全部折叠

边距精度控制收敛速度,由指定的逗号分隔对组成“MarginPrecision”以及区间[0,1]内的数字标量。MarginePrecision.影响收敛所需的增强迭代次数。

提示

要使用多个学习者来训练集合,请指定一个较小的值MarginePrecision..对于使用少数其他学习者进行培训,请指定大值。

例子:'marginprecision',0.5

数据类型:|双倍的

robustboost方法选项

全部折叠

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

提示

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

例子:'robusterrorgoal',0.05

数据类型:|双倍的

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

例子:'robustmarginsigma',0.5

数据类型:|双倍的

训练数据中的最大分类裕度,指定为逗号分隔对,由“RobustMaxMargin”和一个非负的数值标量。该软件最大限度地减少了下面具有分类利润的培训数据中的观测次数robustmaxmargin.

例子:'robustmaxmargin',1

数据类型:|双倍的

随机子空间方法选项

全部折叠

为每个随机子空间学习者采样的预测器数量,指定为逗号分隔对组成'npredtosample'一个区间为1的正整数,p, 在哪里p为预测变量的个数(尺寸(x,2)大小(台,2)).

数据类型:|双倍的

输出参数

全部折叠

培训的合奏模型,作为此表中的模型对象之一返回。

模型对象 类型环境 指定任何交叉验证选项? 方法环境 重组环境
ClassificationBaggedensemble. '分类' 没有 '包' “上”
分类素.. '分类' 没有 任何用于分类的集成聚合方法 '离开'
ClassificationPartitionedEnsemble '分类' 是的 任何分类集成-聚合方法 '离开'“上”
RegressionBaggedEnsemble '回归' 没有 '包' “上”
RegressionEnsemble '回归' 没有 “LSBoost” '离开'
回归分役部门 '回归' 是的 “LSBoost”'包' '离开'“上”

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

引用Mdl,使用点符号。例如,要访问或显示尚未交叉验证的集成的弱学习器模型对象的细胞向量,请输入Mdl。训练有素的在命令行。

提示

  • nlearn.从几十个到几千个不等。通常,一个具有良好预测能力的集成需要几百到几千个较弱的学习者。然而,您不需要一次训练那么多周期的合奏。你可以从培养几十个学习者开始,检查合奏表演,然后,如果有必要的话,用它来训练更多的弱学习者的简历对于分类问题,或者的简历回归问题。

  • 合奏性能取决于集合设置和弱学习者的设置。也就是说,如果使用默认参数指定弱的学习者,则集合可以表现不佳。因此,与集合设置一样,使用模板调整弱学习者的参数是好的做法,并选择最小化泛化误差的值。

  • 如果您指定重新取样使用重组,然后是良好的做法,重新确定整个数据集。也就是说,使用默认设置1FResample

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

    • 如果集合-聚合方法(方法)是'包'和:

      • 误分类成本(成本)是高度不平衡的,因此,对于包内样本,软件抽样从班级的独特观察,有很大的惩罚。

      • 类先验概率(之前)高度倾斜,软件已经过度地过度了从具有大的概率的类的独特观察。

      对于较小的样本量,这些组合可能导致具有较大惩罚或先验概率的类的袋外观察的相对频率较低。因此,估计的包外误差是高度可变的,它可能很难解释。为了避免估计出的大的包外误差方差,特别是对于小样本容量,设置一个更平衡的误分类成本矩阵使用成本或使用较少的先前概率向量使用之前

    • 由于某些输入和输出参数的顺序对应于训练数据中的不同类,因此使用一会名称-值对的论点。

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

        Ycat =分类(Y);一会=类别(Ycat)
        分类分配<定义>对非机密的观察和类别排除<定义>从它的产出。因此,如果使用此代码用于标签的单元格或分类数组的类似代码,则您不必删除缺少标签的观察,以获取不同类的列表。

      • 要指定从最低表示的标签到最高表示的标签的类顺序,那么要快速确定类顺序(如前面的项目符号所示),但是在将列表传递给之前,要按频率排列列表中的类一会.在前面的例子中,这段代码指定了类从最低到最多的顺序Classnameslh.

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

算法

  • 关于集合聚合算法的详细信息,请参见合奏算法

  • 如果您指定方法成为促进算法和学习者决策树,然后软件增长树桩默认情况下。一个决策桩是一个根节点连接到两个终端,叶节点。属性可以调整树的深度MaxNumSplitsMinLeafSize,MinParentSize名称-值对参数使用Templatetree.

  • fitensemble通过过采样的超采样产生内部样本,具有大的错误分类成本和具有小错误分类成本的欠采样类。因此,袋袋样品具有较少的分类成本和具有小错误分类成本的课程的观察的较少观察。如果您使用小数据集和高度倾斜的成本矩阵训练分类集合,那么每类的袋子外观测的数量可能很低。因此,估计的袋误差可能具有大的方差并且可能难以解释。对于具有大的概率的课程,可以发生同样的现象。

  • 对于RUSBoost集成聚合方法(方法),名称值对参数RatioToSmallest指定每个类相对于最小代表类的抽样比例。例如,假设训练数据中有两个类:一个B一个有100个观察结果B有10个观察。同样,假设最低代表的类具有对训练数据的观察。

    • 如果你设置“RatioToSmallest”,2,然后年代2 * 1020..最后,fitensemble用课堂上的20个观察结果训练每一个学习者一个以及20个课堂观察B.如果你设置'ratiotosmallest',[2 2],则得到相同的结果。

    • 如果你设置'ratiotosmallest',[2,1],然后s12 * 1020.s21 * 1010.最后,fitensemble用课堂上的20个观察结果训练每一个学习者一个以及10个课堂观察B

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

参考

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

[2]布雷曼,L.《随机森林》。机器学习.第45卷,第5-32页,2001。

[3] Freund, Y.“一个更健壮的助推算法。”v1 arXiv: 0905.2138, 2009年。

弗洛因德,Y.和R. E. Schapire。在线学习的决策理论推广及其在助推中的应用计算机与系统科学博士,卷。55,PP。119-139,1997。

[5] Friedman, J. <贪婪函数近似:梯度增压机>统计年鉴,卷。29,第5页,第5页,PP。1189-1232,2001。

Friedman, J., T. Hastie,和R. Tibshirani。加性逻辑回归:助推的统计学观点统计年鉴,第28卷,第2期,第337-407页,2000。

Hastie, T., R. Tibshirani, J. Friedman。统计学习的要素section edition,施普林格,New York, 2008。

[8] Ho, T. K. <构建决策森林的随机子空间方法>。模式分析与机器智能学报,卷。20,第8页,第8页,第832-844,1998。

Schapire r.e., Y. Freund, P. Bartlett和W.S. Lee。“扩大差额:对投票方法有效性的新解释。”统计年鉴,卷。26,5,PP。1651-1686,1998。

Seiffert, C., T. Khoshgoftaar, J. Hulse和A. Napolitano。“RUSBoost:在训练数据有偏差时提高分类性能。”第十九届国际模式识别会议,第1-4页,2008。

[11] Warmuth,M.,J. Liao和G. Ratsch。“完全纠正促进算法,最大化边缘。”Proc, 23日国际。Conf. on Machine Learning, ACM,纽约,页1001-1008,2006。

介绍了R2011a