主要内容

fitensemble

拟合学习器集合用于分类和回归

描述

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

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

例子

Mdl= fitensemble (资源描述ResponseVarName方法NLearn学习者的集合拟合的结果NLearn分类或回归学习器(学习者)到表中的所有变量资源描述ResponseVarName响应变量的名称在吗资源描述方法是集成聚合方法。

例子

Mdl= fitensemble (资源描述公式方法NLearn学习者所指定的模型公式

例子

Mdl= fitensemble (资源描述Y方法NLearn学习者处理所有的变量资源描述作为预测变量。Y响应变量不在里面吗资源描述

例子

Mdl= fitensemble (XY方法NLearn学习者中使用预测器数据训练集合X和响应数据Y

例子

Mdl= fitensemble (___名称,值使用一个或多个指定的附加选项训练集合名称,值对参数和任何前面的语法。例如,您可以指定类顺序,以实现10倍交叉验证,或者学习率。

例子

全部折叠

估计一个训练过的,增强分类的决策树集合的再替换损失。

加载电离层数据集。

负载电离层

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

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

ClassTreeEns是受过训练的ClassificationEnsemble集成分类器。

确定累积再替换损失(即训练数据中标签的累积错分类误差)。

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

rsLoss是100 × 1向量,哪个元素k包含第一次置换后的损失k学习周期。

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

情节(rsLoss);包含(“学习周期数”);ylabel (“Resubstitution损失”);

图中包含一个轴对象。axis对象包含一个line类型的对象。

一般来说,随着训练分类集合中决策树数量的增加,再替换损失会减小。

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

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

  2. 把训练有素的团队传给kfoldLoss,用于估计泛化误差。

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

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

负载carsmallTbl =表(气缸,排量,马力,重量,MPG);

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

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

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

Mdl1 = fitensemble(Tbl,“英里”“LSBoost”100年,t);

Mdl1是受过训练的RegressionEnsemble回归合奏。因为英里/加仑是MATLAB®工作区中的一个变量,您可以通过输入

Mdl1 = fitensemble(Tbl,MPG,'LSBoost',100,t);

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

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

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

训练一个使用所有预测器的新集合资源描述除了位移

公式=“MPG ~气缸+马力+重量”;Mdl2 = fitensemble(Tbl,公式,“LSBoost”100年,t);

比较两者之间的再置换mseMdl1而且Mdl2

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集成分类器。

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

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

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

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

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

图中包含一个轴对象。axis对象包含一个line类型的对象。

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

您可以在决策树集合中控制树的深度。控件还可以在包含决策树二叉学习器的ECOC模型中控制树深度MaxNumSplitsMinLeafSize,或MinParentSize名称-值对参数。

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

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

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

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

提升回归树的树深度控制器的默认值是:

  • 1MaxNumSplits.这个选项只会让你树桩丛生。

  • 5MinLeafSize

  • 10MinParentSize

寻找最佳分割数:

  1. 训练一组合奏。以指数方式增加后续合奏的最大分裂数n- 1分,其中n是训练样本量。同样,将每个集合的学习率从1降低到0.1。

  2. 交叉验证集合。

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

  4. 比较交叉验证的mse。最小的集合表现最好,并表示该数据集的最佳最大分割数、树数和学习率。

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

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 = size(X,1);M = floor(log2(n - 1));Lr = [0.1 0.25 0.5 1];maxnumsplitting = 2.^(0:m);numTrees = 150;Mdl = cell(数字(maxnumsplitting),数字(lr));rng (1);%用于再现性K = 1:数字(lr);j = 1:数字(maxnumsplitting);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,Mdl,“统一”、假);error =重塑(cell2mat(errorCell),[numTrees nummel (maxnumsplitting) nummel (lr)]);errorDeep = kfoldLoss(MdlDeep);errorStump = kfoldLoss(MdlStump);

画出交叉验证的MSE如何随着集合中一些集合(深层树和树桩)中的树的数量的增加而表现。在同一图中绘制有关学习率的曲线,并为不同的树复杂性绘制单独的图。选择树复杂度级别的子集。

mnsPlot = [1 round(数字(maxnumsplitting)/2)数字(maxnumsplitting)];图;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],“——k”);h.YLim = [10 50];包含“树的数量”;ylabel“旨在MSE”;标题(sprintf (' maxnumsplitting = %0.3g'maxNumSplits (mnsPlot (k))));持有结束;hL = legend([cellstr(num2str(lr','学习率= %0.2f'));...“深树”“树桩”“最小MSE。”]);hL.Position(1) = 0.6;

图中包含3个轴对象。标题为maxnumsplitting = 1的Axes对象1包含7个line类型的对象。标题为maxnumsplitting = 8的Axes对象2包含7个line类型的对象。标题为maxnumsplitting = 64的Axes对象3包含7个line类型的对象。这些对象表示学习率= 0.10,学习率= 0.25,学习率= 0.50,学习率= 1.00,深度树,残桩,最小MSE。

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

确定最大的分割数量,树的数量,以及产生最低总体MSE的学习率。

[miner,minErrIdxLin] = min(error(:)));[idxNumTrees,idxMNS,idxLR] = ind2sub(size(error),minErrIdxLin);流(“\ nMin。MSE = %0.5f'minErr)
最小均方误差= 18.42979
流('\ nooptimal参数值:\nNum. '树木= %d', idxNumTrees);
最优参数值:Num. Trees = 1
流('\ nmaxnumsplitting = %d\nLearning Rate = %0.2f\n'...maxNumSplits (idxMNS), lr (idxLR))
maxnumsplitting = 4学习率= 1.00

有关优化此集成的不同方法,请参见优化一个增强的回归集合

输入参数

全部折叠

用于训练模型的示例数据,指定为表。每行资源描述对应一个观测值,每一列对应一个预测变量。资源描述可以为响应变量包含一个额外的列。不允许使用字符向量的单元格数组以外的多列变量和单元格数组。

  • 如果资源描述包含响应变量,并且希望使用所有剩余变量作为预测器,然后使用指定响应变量ResponseVarName

  • 如果资源描述包含响应变量,并且您希望仅使用剩余变量的子集作为预测器,然后使用指定公式公式

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

请注意

为节省内存和执行时间,提供X而且Y而不是资源描述

数据类型:表格

响应变量名,指定为响应变量的名称资源描述

您必须指定ResponseVarName作为字符向量或字符串标量。例如,如果资源描述。Y是响应变量,然后指定ResponseVarName作为“Y”.否则,fitensemble处理的所有列资源描述作为预测变量。

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

类指定类的顺序以进行分类一会名称-值对参数。否则,fitensemble类的顺序,并将其存储在Mdl。一会

数据类型:字符|字符串

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

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

公式中的变量名必须同时为资源描述Tbl.Properties.VariableNames)和有效的MATLAB®标识符。中的变量名可以验证资源描述通过使用isvarname函数。变量名无效,则可以使用matlab.lang.makeValidName函数。

数据类型:字符|字符串

预测器数据,指定为数值矩阵。

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

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

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

数据类型:|

响应数据,指定为类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。每一项Y对观察的响应或标签是否在相应的行中X资源描述.的长度Y的行数X资源描述必须是相等的。如果响应变量是字符数组,则每个元素必须对应数组中的一行。

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

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

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

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

  • 分为两类:

    • “AdaBoostM1”

    • “LogitBoost”

    • “GentleBoost”

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

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

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

    • “RUSBoost”

    • “子”

    • “包”

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

    • “AdaBoostM2”

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

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

    • “RUSBoost”

    • “子”

    • “包”

  • 回归:

    • “LSBoost”

    • “包”

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

集成聚合算法和示例请参见整体算法而且选择一个适用的集成聚合方法

集成学习周期数,指定为正整数或“AllPredictorCombinations”

  • 如果指定一个正整数,那么在每个学习周期中,软件为每个模板对象训练一个弱学习器学习者.因此,软件进行训练NLearn *元素个数(学习者)学习者。

  • 如果你指定“AllPredictorCombinations”,然后设置方法“子”并且只指定一个学习者学习者.通过这些设置,软件对学习者进行所有可能的预测因子组合的训练NPredToSample一次。因此,软件进行训练nchoosek(NPredToSample大小(X, 2))学习者。

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

详情请参见提示

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

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

弱的学习者 Weak-Learner名字 模板对象创建函数 方法设置
判别分析 “判别” templateDiscriminant 推荐给“子”
k最近的邻居 “资讯” templateKNN “子”只有
决策树 “树” templateTree 所有方法,除了“子”

详情请参见NLearn而且提示

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

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

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

一般集成选项

全部折叠

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

价值 描述
正整数向量

向量中的每个条目都是一个指标值,表明相应的预测器是分类的。索引值在1和之间p,在那里p用于训练模型的预测器的数量。

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

逻辑向量

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

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

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

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

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

每个学习器都以与学习器对应的拟合函数相同的方式识别和处理分类预测器。看到“CategoricalPredictors”fitcknnk-最近的学习器和“CategoricalPredictors”fitctree对于树型学习者。

例子:“CategoricalPredictors”、“所有”

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

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

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

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

  • 还有一个交叉验证选项fitensemble每次训练结束时,向命令行显示一条消息折叠。

如果你指定“关闭”,然后fitensemble当它完成训练弱学习器时不显示消息。

提示

对于一些增强决策树的最快训练,设置NPrint到默认值“关闭”.这一技巧在分类时持有方法“AdaBoostM1”“AdaBoostM2”“GentleBoost”,或“LogitBoost”,或当回归方法“LSBoost”

例子:“NPrint”,5

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

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

  • 如果你提供X而且Y,那么你就可以使用了PredictorNames中预测变量的名称X

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

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

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

    • PredictorNames的子集Tbl.Properties.VariableNames并且不能包括响应变量的名称。

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

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

例子:“PredictorNames”(“SepalLength”、“SepalWidth”,“PetalLength”,“PetalWidth”)

数据类型:字符串|细胞

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

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

  • 如果你提供ResponseVarName公式,那么你就不能用了ResponseName

例子:“ResponseName”、“反应”

数据类型:字符|字符串

监督学习类型,指定为逗号分隔的对,由“类型”而且“分类”“回归”

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

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

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

交叉验证选择

全部折叠

交叉验证标志,指定为逗号分隔的对,由“Crossval”而且“上”“关闭”

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

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

或者,稍后通过传递进行交叉验证Mdlcrossvalcrossval

例子:“Crossval”,“上”

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

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

例子:假设您创建一个随机分区,对500个观察结果进行5次交叉验证,使用cvp = 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的-by-1单元格向量训练有素的交叉验证模型的属性。

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

例子:“KFold”,5

数据类型:|

省略一个交叉验证标志,指定为“上”“关闭”.如果你指定“Leaveout”,“上”,然后对每个的n观察(n(不包括遗漏的观测数据)的观测数据数目是否已列明NumObservations属性的模型),软件完成这些步骤:

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

  2. 存储n紧凑,训练有素的模型在一个n的-by-1单元格向量训练有素的交叉验证模型的属性。

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

例子:“Leaveout”,“上”

其他分类或回归选择

全部折叠

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

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

使用一会:

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

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

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

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

例子:“类名”,(“b”,“g”)

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

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

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

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

    • S.ClassNames,其中包含类名作为与Y

    • S.ClassificationCosts,其中包含成本矩阵,其行和列的顺序为S.ClassNames

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

fitensemble使用成本中指定的优先类概率之前.然后,fitensemble使用调整后的先验概率进行训练。

例子:'Cost',[0 12 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)

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

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

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

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

默认情况下,权重(n, 1),在那里n观察的数量在吗X资源描述

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

增加方法和装袋的采样选项

全部折叠

为每个弱学习器重新采样的训练集的分数,指定为(0,1]中的正标量。使用“FResample”,设置重新取样“上”

例子:“FResample”,0.75

数据类型:|

标志,指示带有替换的采样,指定为逗号分隔的对,由“替换”而且“关闭”“上”

  • “上”时,软件对训练观测值进行替换采样。

  • “关闭”时,软件对训练观测值进行采样,不进行替换。如果你设置重新取样“上”,然后软件采样训练观察假设统一的权重。如果您还指定了一个增强方法,那么软件将通过重新加权观测值来增强。

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

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

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

  • 如果方法是一个增强方法,则:

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

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

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

如果指定使用重新采样重新取样,则对整个数据集进行重采样是很好的实践。即使用默认值1FResample

AdaBoostM1、AdaBoostM2、LogitBoost、GentleBoost和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对应于使用指定的类名的顺序一会(见提示).

默认值为(K, 1),表示采样每个班级的观察结果。

例子:‘RatioToSmallest’,(2,1)

数据类型:|

LPBoost和TotalBoost方法选项

全部折叠

边距精度控制收敛速度,由逗号分隔的对组成“MarginPrecision”和区间[0,1]中的数值标量。MarginPrecision影响收敛所需的增强迭代次数。

提示

要使用多个学习器训练集合,请为指定一个小值MarginPrecision.对于使用少数学习器进行训练,请指定一个较大的值。

例子:“MarginPrecision”,0.5

数据类型:|

RobustBoost方法选项

全部折叠

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

提示

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

例子:“RobustErrorGoal”,0.05

数据类型:|

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

例子:“RobustMarginSigma”,0.5

数据类型:|

训练数据中的最大分类裕度,指定为由逗号分隔的对组成“RobustMaxMargin”和一个非负数值标量。该软件最小化训练数据中具有以下分类边际的观察数RobustMaxMargin

例子:“RobustMaxMargin”,1

数据类型:|

随机子空间方法选项

全部折叠

每个随机子空间学习器要采样的预测器数量,指定为由逗号分隔的对组成“NPredToSample”一个正整数在区间1,…,p,在那里p是预测变量的数量(大小(X, 2)大小(台,2)).

数据类型:|

输出参数

全部折叠

训练过的集成模型,作为此表中的模型对象之一返回。

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

控制交叉验证的名值对参数为CrossVal坚持KFoldLeaveout,CVPartition

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

提示

  • NLearn从几十到几千不等。通常,具有良好预测能力的集成需要几百到几千个弱学习器。然而,你不需要一次训练一个乐团那么多次。你可以先培养几十个学习器,检查整体性能,然后,如果有必要,训练更多的弱学习器使用重新开始对于分类问题,或者重新开始对于回归问题。

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

  • 如果指定使用重新采样重新取样,则对整个数据集进行重采样是很好的实践。即使用的默认设置1FResample

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

    • 如果集成聚合方法(方法)是“包”和:

      • 错误分类的代价(成本)是高度不平衡的,那么,对于袋内样本,软件对具有较大惩罚的类的唯一观测值进行过采样。

      • 类先验概率(之前)是高度倾斜的,软件会从具有大先验概率的类中过度采样唯一的观察结果。

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

    • 由于某些输入和输出参数的顺序对应于训练数据中的不同类,因此使用类来指定类顺序是一种良好的实践一会名称-值对参数。

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

        Ycat =分类的(Y);classNames =类别(Ycat)
        分类分配<定义>对未分类的观察和类别不包括<定义>从它的输出。因此,如果将此代码用于标签单元格数组或将类似代码用于分类数组,则不必删除缺少标签的观察值来获得不同类的列表。

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

        Ycat =分类的(Y);classNames =类别(Ycat);freq =计数猫(Ycat);[~,idx] = sort(freq);classNamesLH = classNames(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)。有关Intel TBB的详细信息,请参见https://www.intel.com/content/www/us/en/developer/tools/oneapi/onetbb.html

参考文献

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

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

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

[4]弗洛因德,Y.和R. E.夏丕尔。在线学习的决策理论推广及其在辅助学习中的应用计算机与系统科学专业,第55卷,第119-139页,1997。

[5] Friedman, J.《贪婪函数逼近:梯度增强机》。统计年鉴《中国经济》,2001年第29卷第5期,第1189-1232页。

[6]弗里德曼,J., T.哈斯蒂,R.蒂布谢拉尼。“加法逻辑回归:促进的统计观点。”统计年鉴《中国科学》第28卷第2期,第337-407页,2000年。

哈斯蒂、T.、R.蒂布谢拉尼和J.弗里德曼。统计学习的要素部分版,施普林格,纽约,2008年。

[8] Ho T. K.“构造决策森林的随机子空间方法”。模式分析与机器智能汇刊《中国经济》,1998年第8期,第832-844页。

[9]夏皮尔,R. E.弗洛因德,P.巴特利特和W.S.李。“提高利润率:对投票方法有效性的新解释。”统计年鉴,卷26号,第5期,第1651-1686页,1998年。

[10]塞弗特,C.霍什戈夫塔尔,J.赫尔斯和A.纳波利塔诺。“RUSBoost:在训练数据倾斜时提高分类性能。”第十九届模式识别国际会议,第1-4页,2008。

[11]沃穆斯,M.廖J., G.拉奇。“完全正确的提升算法,最大限度地提高利润率。”国际第23号程序。机器学习会议,ACM,纽约,第1001-1008页,2006年。

扩展功能

版本历史

在R2011a中引入