fitensemble
拟合学习器集合用于分类和回归
语法
描述
fitensemble
可以提高或袋决策树学习器或判别分析分类器。该函数还可以训练KNN或判别分析分类器的随机子空间集合。
对于适合分类和回归集成的更简单的接口,请使用fitcensemble
而且fitrensemble
,分别。同时,fitcensemble
而且fitrensemble
提供贝叶斯优化的选项。
例子
估计一个增强系综的再替换损失
估计一个训练过的,增强分类的决策树集合的再替换损失。
加载电离层
数据集。
负载电离层;
使用AdaBoost、100个学习周期和整个数据集训练决策树集合。
ClassTreeEns = fitensemble(X,Y,“AdaBoostM1”, 100,“树”);
ClassTreeEns
是受过训练的ClassificationEnsemble
集成分类器。
确定累积再替换损失(即训练数据中标签的累积错分类误差)。
rsLoss = resubLoss(ClassTreeEns,“模式”,“累积”);
rsLoss
是100 × 1向量,哪个元素k包含第一次置换后的损失k学习周期。
绘制累计再替换损失除以学习周期数。
情节(rsLoss);包含(“学习周期数”);ylabel (“Resubstitution损失”);
一般来说,随着训练分类集合中决策树数量的增加,再替换损失会减小。
重新替换损失的减少可能表明该软件对集成进行了合理的训练。然而,你不能通过这种减少来推断集合的预测能力。为了衡量集合的预测能力,通过以下方法估计泛化误差:
将数据随机划分为训练集和交叉验证集。通过指定
‘坚持’,holdoutProportion
当你训练整体使用fitensemble
.把训练有素的团队传给
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 (泛化误差的);
当25个弱学习器组成集成分类器时,累积泛化误差降低到7%左右。
为一个集合找到最佳的分裂和树的数量
您可以在决策树集合中控制树的深度。控件还可以在包含决策树二叉学习器的ECOC模型中控制树深度MaxNumSplits
,MinLeafSize
,或MinParentSize
名称-值对参数。
当对决策树进行装袋时,
fitensemble
默认情况下生长深度决策树。您可以种植较浅的树,以减少模型复杂性或计算时间。当提升决策树时,
fitensemble
默认情况下生长树桩(有一个分叉的树)。您可以种植更深的树以获得更好的精度。
加载carsmall
数据集。指定变量加速度
,位移
,马力
,重量
作为预测因子,和英里/加仑
作为响应。
负载carsmallX =[加速度位移马力重量];Y = mpg;
提升回归树的树深度控制器的默认值是:
1
为MaxNumSplits
.这个选项只会让你树桩丛生。5
为MinLeafSize
10
为MinParentSize
寻找最佳分割数:
训练一组合奏。以指数方式增加后续合奏的最大分裂数n- 1分,其中n是训练样本量。同样,将每个集合的学习率从1降低到0.1。
交叉验证集合。
估计每个集合的交叉验证均方误差(MSE)。
比较交叉验证的mse。最小的集合表现最好,并表示该数据集的最佳最大分割数、树数和学习率。
生长并交叉验证深度回归树和树桩。指定使用代理分割,因为数据包含缺失值。这些指标可以作为基准。
MdlDeep = fitrtree(X,Y,“CrossVal”,“上”,“MergeLeaves”,“关闭”,...“MinParentSize”, 1“代孕”,“上”);MdlStump = fitrtree(X,Y,“MaxNumSplits”, 1“CrossVal”,“上”,“代孕”,“上”);
使用150个回归树训练增强集合。使用5次交叉验证交叉验证集成。使用序列中的值改变最大分割数 ,在那里米是这样的 并不比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;
每条曲线都包含一个最小的交叉验证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 ~ x1 + x2 + x3”
.在这种形式下,Y
表示响应变量,和x1
,x2
,x3
表示预测变量。
中指定变量的子集资源描述
使用公式作为训练模型的预测因子。如果您指定了一个公式,那么该软件不使用任何变量资源描述
没有出现在公式
.
公式中的变量名必须同时为资源描述
(Tbl.Properties.VariableNames
)和有效的MATLAB®标识符。中的变量名可以验证资源描述
通过使用isvarname
函数。变量名无效,则可以使用matlab.lang.makeValidName
函数。
数据类型:字符
|字符串
X
- - - - - -预测数据
数字矩阵
预测器数据,指定为数值矩阵。
每行对应一个观测值,每列对应一个预测变量。
的长度Y
的行数X
必须是相等的。
中出现的顺序指定预测符的名称X
,使用PredictorNames
名称-值对参数。
数据类型:单
|双
方法
- - - - - -集成聚合法
“AdaBoostM1”
|“LogitBoost”
|“GentleBoost”
|“RUSBoost”
|“子”
|“包”
|“AdaBoostM2”
|“LSBoost”
|……
集成聚合方法,指定为此列表中的方法名之一。
分为两类:
“AdaBoostM1”
“LogitBoost”
“GentleBoost”
“RobustBoost”
(需要优化工具箱™)“LPBoost”
(需要优化工具箱)“TotalBoost”
(需要优化工具箱)“RUSBoost”
“子”
“包”
按三个或以上类别分类:
“AdaBoostM2”
“LPBoost”
(需要优化工具箱)“TotalBoost”
(需要优化工具箱)“RUSBoost”
“子”
“包”
回归:
“LSBoost”
“包”
如果你指定“方法”,“包”
属性指定问题类型类型
名称-值对参数,因为可以指定“包”
用于分类和回归问题。
集成聚合算法和示例请参见整体算法而且选择一个适用的集成聚合方法.
NLearn
- - - - - -集成学习周期的个数
正整数|“AllPredictorCombinations”
集成学习周期数,指定为正整数或“AllPredictorCombinations”
.
如果指定一个正整数,那么在每个学习周期中,软件为每个模板对象训练一个弱学习器
学习者
.因此,软件进行训练NLearn *元素个数(学习者)
学习者。如果你指定
“AllPredictorCombinations”
,然后设置方法
来“子”
并且只指定一个学习者学习者
.通过这些设置,软件对学习者进行所有可能的预测因子组合的训练NPredToSample
一次。因此,软件进行训练nchoosek
(NPredToSample大小(X, 2))
学习者。
该软件使用所有训练有素的学习者组成集合并将它们存储在Mdl。训练有素的
.
详情请参见提示.
数据类型:单
|双
|字符
|字符串
学习者
- - - - - -弱学习器用于集成
weak-learner名字|弱学习者模板对象|弱学习器模板对象的单元格向量
在集合中使用的弱学习器,指定为弱学习器名称、弱学习器模板对象或弱学习器模板对象的单元格数组。
弱的学习者 | Weak-Learner名字 | 模板对象创建函数 | 方法 设置 |
---|---|---|---|
判别分析 | “判别” |
templateDiscriminant |
推荐给“子” |
k最近的邻居 | “资讯” |
templateKNN |
为“子” 只有 |
决策树 | “树” |
templateTree |
所有方法,除了“子” |
例子:对于由两种类型的分类树组成的集合,提供{t1 t2}
,在那里t1
而且t2
是分类树模板。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:“CrossVal”,“上”、“LearnRate”,0.05
指定实现10倍交叉验证并使用0.05
作为学习率。
CategoricalPredictors
- - - - - -分类预测器列表
正整数向量|逻辑向量|字符矩阵|字符串数组|字符向量的单元格数组|“所有”
类别预测符列表,指定为此表中的值之一。
价值 | 描述 |
---|---|
正整数向量 | 向量中的每个条目都是一个指标值,表明相应的预测器是分类的。索引值在1和之间 如果 |
逻辑向量 | 一个 |
字符矩阵 | 矩阵的每一行都是一个预测变量的名称。名称必须与中的条目匹配PredictorNames .用额外的空格填充名字,这样字符矩阵的每一行都有相同的长度。 |
字符向量的字符串数组或单元格数组 | 数组中的每个元素都是一个预测变量的名称。名称必须与中的条目匹配PredictorNames . |
“所有” |
所有预测因素都是绝对的。 |
规范的“CategoricalPredictors”
适用于以下情况:
“学习者”
指定树学习器。“学习者”
指定k-最近的学习器,其中所有预测器都是分类的。
每个学习器都以与学习器对应的拟合函数相同的方式识别和处理分类预测器。看到“CategoricalPredictors”
的fitcknn
为k-最近的学习器和“CategoricalPredictors”
的fitctree
对于树型学习者。
例子:“CategoricalPredictors”、“所有”
数据类型:单
|双
|逻辑
|字符
|字符串
|细胞
NPrint
- - - - - -打印输出频率
“关闭”
(默认)|正整数
打印输出频率,指定为由逗号分隔的对组成“NPrint”
一个正整数或者“关闭”
.
来跟踪的数量弱的学习者或折叠那fitensemble
训练到目前为止,指定一个正整数。也就是说,如果你指定了正整数米:
没有指定任何交叉验证选项(例如,
CrossVal
),然后fitensemble
每次完成训练时,向命令行显示一条消息米弱的学习者。还有一个交叉验证选项
fitensemble
每次训练结束时,向命令行显示一条消息米折叠。
如果你指定“关闭”
,然后fitensemble
当它完成训练弱学习器时不显示消息。
提示
对于一些增强决策树的最快训练,设置NPrint
到默认值“关闭”
.这一技巧在分类时持有方法
是“AdaBoostM1”
,“AdaBoostM2”
,“GentleBoost”
,或“LogitBoost”
,或当回归方法
是“LSBoost”
.
例子:“NPrint”,5
数据类型:单
|双
|字符
|字符串
PredictorNames
- - - - - -预测变量名称
唯一名称的字符串数组|唯一字符向量的单元格数组
预测器变量名,指定为唯一名称的字符串数组或唯一字符向量的单元格数组。的功能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”)
数据类型:字符串
|细胞
ResponseName
- - - - - -响应变量名
“Y”
(默认)|特征向量|字符串标量
响应变量名,指定为字符向量或字符串标量。
如果你提供
Y
,那么你就可以使用了ResponseName
为响应变量指定名称。如果你提供
ResponseVarName
或公式
,那么你就不能用了ResponseName
.
例子:“ResponseName”、“反应”
数据类型:字符
|字符串
类型
- - - - - -监督学习类型
“分类”
|“回归”
CVPartition
- - - - - -交叉验证分区
[]
(默认)|cvpartition
分区对象
交叉验证分区,指定为cvpartition
创建的分区对象cvpartition
.分区对象指定交叉验证的类型以及训练集和验证集的索引。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:假设您创建一个随机分区,对500个观察结果进行5次交叉验证,使用cvp = cvpartition(500,'KFold',5)
.然后,您可以通过使用指定交叉验证的模型“CVPartition”,本量利
.
坚持
- - - - - -顽固性验证的数据比例
范围(0,1)中的标量值
用于拒绝验证的数据的百分比,指定为范围(0,1)中的标量值。如果你指定‘坚持’,p
,然后软件完成以下步骤:
随机选择并保留
p * 100
%的数据作为验证数据,并使用其余数据训练模型。将紧凑的、训练过的模型存储在
训练有素的
交叉验证模型的属性。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“坚持”,0.1
数据类型:双
|单
KFold
- - - - - -折叠数
10
(默认)|大于1的正整数值
交叉验证模型中使用的折叠数,指定为大于1的正整数值。如果你指定KFold, k
,然后软件完成以下步骤:
将数据随机划分为
k
集。对于每个集合,保留该集合作为验证数据,并使用另一个集合训练模型
k
- 1集。存储
k
紧凑,训练有素的模型k
的-by-1单元格向量训练有素的
交叉验证模型的属性。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“KFold”,5
数据类型:单
|双
Leaveout
- - - - - -省略一个交叉验证标志
“关闭”
(默认)|“上”
省略一个交叉验证标志,指定为“上”
或“关闭”
.如果你指定“Leaveout”,“上”
,然后对每个的n观察(n(不包括遗漏的观测数据)的观测数据数目是否已列明NumObservations
属性的模型),软件完成这些步骤:
保留一个观察数据作为验证数据,并使用另一个数据训练模型n- 1次观察。
存储n紧凑,训练有素的模型在一个n的-by-1单元格向量
训练有素的
交叉验证模型的属性。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“Leaveout”,“上”
一会
- - - - - -用于培训的类名
分类数组|字符数组|字符串数组|逻辑向量|数值向量|字符向量的单元格数组
用于训练的类名,指定为类别、字符或字符串数组;向量:逻辑或数字向量;或者是字符向量的单元格数组。一会
必须具有与响应变量相同的数据类型资源描述
或Y
.
如果一会
是字符数组,则每个元素必须对应数组中的一行。
使用一会
:
在培训期间指定课程的顺序。
指定与类顺序对应的任何输入或输出参数维度的顺序。例如,使用
一会
指定…尺寸的顺序成本
或返回的分类分数的列顺序预测
.选择用于培训的类的子集。例如,假设集合中所有不同的类名
Y
是(“a”、“b”、“c”)
.用课堂上的观察来训练模型“一个”
而且“c”
只是,指定“类名”,(“a”、“c”)
.
的默认值一会
响应变量中所有不同类名的集合在吗资源描述
或Y
.
例子:“类名”,(“b”,“g”)
数据类型:分类
|字符
|字符串
|逻辑
|单
|双
|细胞
成本
- - - - - -误分类代价
方阵|结构数组
错误分类代价,指定为逗号分隔的对,由“成本”
一个方阵或结构。如果你指定:
默认为(
,在那里K
) -眼睛(K
)K
是不同类的数量。
fitensemble
使用成本
中指定的优先类概率之前
.然后,fitensemble
使用调整后的先验概率进行训练。
例子:'Cost',[0 12 2;1 0 2;2 2 0]
数据类型:双
|单
|结构体
之前
- - - - - -先验概率
“经验”
(默认)|“统一”
|数值向量|结构数组
每个类的先验概率,由逗号分隔的对组成“之前”
和这个表中的一个值。
价值 | 描述 |
---|---|
“经验” |
类先验概率是类的相对频率Y . |
“统一” |
所有类先验概率都等于1/K,在那里K是类的数量。 |
数值向量 | 每个元素都是一个类先验概率。对元素进行排序Mdl。一会 或使用一会 名称-值对参数。软件将元素规范化,使它们的和为1 . |
结构数组 | 一个结构
|
fitensemble
的先验概率归一化之前
和为1。
例子:结构(“类名”,{{setosa,杂色的,‘virginica}}, ClassProbs, 1:3)
数据类型:字符
|字符串
|双
|单
|结构体
权重
- - - - - -观察权重
正数值向量|变量名资源描述
FResample
- - - - - -重新采样的训练集的分数
1
(默认)|(0,1)中的正标量
LearnRate
- - - - - -收缩学习率
1
(默认)|(0,1)中的数字标量
缩水率学习率,指定为由逗号分隔的对组成“LearnRate”
和区间(0,1]中的数值标量。
用收缩,设定来训练整体LearnRate
到小于1
,例如,0.1
是很受欢迎的选择。使用收缩训练集合需要更多的学习迭代,但通常可以获得更好的精度。
例子:“LearnRate”,0.1
数据类型:单
|双
LearnRate
- - - - - -收缩学习率
1
(默认)|(0,1)中的数字标量
缩水率学习率,指定为由逗号分隔的对组成“LearnRate”
和区间(0,1]中的数值标量。
用收缩,设定来训练整体LearnRate
到小于1
,例如,0.1
是很受欢迎的选择。使用收缩训练集合需要更多的学习迭代,但通常可以获得更好的精度。
例子:“LearnRate”,0.1
数据类型:单
|双
RatioToSmallest
- - - - - -关于最低代表类的抽样比例
正数值标量|正数值向量
相对于最低表示类的抽样比例,指定为逗号分隔的对,由“RatioToSmallest”
以及长度等于训练数据中不同类的数量的数值标量或数值向量。
假设有K
类在训练数据中所占比例最低的类有米
训练数据中的观察。
默认值为(
,表示采样K
, 1)米
每个班级的观察结果。
例子:‘RatioToSmallest’,(2,1)
数据类型:单
|双
MarginPrecision
- - - - - -控制收敛速度的裕度精度
0.1
(默认)|[0,1]中的数值标量
边距精度控制收敛速度,由逗号分隔的对组成“MarginPrecision”
和区间[0,1]中的数值标量。MarginPrecision
影响收敛所需的增强迭代次数。
提示
要使用多个学习器训练集合,请为指定一个小值MarginPrecision
.对于使用少数学习器进行训练,请指定一个较大的值。
例子:“MarginPrecision”,0.5
数据类型:单
|双
RobustErrorGoal
- - - - - -目标分类错误
0.1
(默认)|非负数值标量
目标分类错误,指定为由逗号分隔的对组成“RobustErrorGoal”
和一个非负数值标量。的值的上限取决于的值RobustMarginSigma
而且RobustMaxMargin
.但上限不能超过1
.
提示
对于一个特定的训练集,通常有一个最优的范围RobustErrorGoal
.如果你把它设置得太低或太高,那么软件就会产生一个分类精度很差的模型。尝试交叉验证以搜索适当的值。
例子:“RobustErrorGoal”,0.05
数据类型:单
|双
RobustMarginSigma
- - - - - -分类边际分布
0.1
(默认)|正数值标量
分类裕度分布分布在训练数据上,指定为由逗号分隔的对组成“RobustMarginSigma”
和一个正的标量。在指定RobustMarginSigma
,查阅有关的文献RobustBoost
,例如,[19].
例子:“RobustMarginSigma”,0.5
数据类型:单
|双
RobustMaxMargin
- - - - - -最大分类裕度
0
(默认)|非负数值标量
训练数据中的最大分类裕度,指定为由逗号分隔的对组成“RobustMaxMargin”
和一个非负数值标量。该软件最小化训练数据中具有以下分类边际的观察数RobustMaxMargin
.
例子:“RobustMaxMargin”,1
数据类型:单
|双
NPredToSample
- - - - - -样本预测因子的数量
1
(默认)|正整数
每个随机子空间学习器要采样的预测器数量,指定为由逗号分隔的对组成“NPredToSample”
一个正整数在区间1,…,p,在那里p是预测变量的数量(大小(X, 2)
或大小(台,2)
).
数据类型:单
|双
输出参数
Mdl
-训练过的集成模型
ClassificationBaggedEnsemble
模型对象|ClassificationEnsemble
模型对象|ClassificationPartitionedEnsemble
交叉验证模型对象|RegressionBaggedEnsemble
模型对象|RegressionEnsemble
模型对象|RegressionPartitionedEnsemble
交叉验证的模型对象
训练过的集成模型,作为此表中的模型对象之一返回。
模型对象 | 类型 设置 |
指定任何交叉验证选项? | 方法 设置 |
重新取样 设置 |
---|---|---|---|---|
ClassificationBaggedEnsemble |
“分类” |
没有 | “包” |
“上” |
ClassificationEnsemble |
“分类” |
没有 | 任何用于分类的集成聚合方法 | “关闭” |
ClassificationPartitionedEnsemble |
“分类” |
是的 | 任何分类集成聚合方法 | “关闭” 或“上” |
RegressionBaggedEnsemble |
“回归” |
没有 | “包” |
“上” |
RegressionEnsemble |
“回归” |
没有 | “LSBoost” |
“关闭” |
RegressionPartitionedEnsemble |
“回归” |
是的 | “LSBoost” 或“包” |
“关闭” 或“上” |
控制交叉验证的名值对参数为CrossVal
,坚持
,KFold
,Leaveout
,CVPartition
.
引用Mdl
,使用点表示法。例如,要访问或显示未经交叉验证的集成的弱学习器模型对象的单元格向量,请输入Mdl。训练有素的
在命令行。
提示
NLearn
从几十到几千不等。通常,具有良好预测能力的集成需要几百到几千个弱学习器。然而,你不需要一次训练一个乐团那么多次。你可以先培养几十个学习器,检查整体性能,然后,如果有必要,训练更多的弱学习器使用重新开始
对于分类问题,或者重新开始
对于回归问题。整体表现取决于整体环境和弱学习者的环境。也就是说,如果使用默认参数指定弱学习器,那么集成的性能就会很差。因此,像集成设置一样,使用模板调整弱学习器的参数并选择最小化泛化错误的值是一个很好的实践。
在分类问题中(即,
类型
是“分类”
):如果集成聚合方法(
方法
)是“包”
和:错误分类的代价(
成本
)是高度不平衡的,那么,对于袋内样本,软件对具有较大惩罚的类的唯一观测值进行过采样。类先验概率(
之前
)是高度倾斜的,软件会从具有大先验概率的类中过度采样唯一的观察结果。
对于较小的样本量,这些组合可能导致具有较大惩罚或先验概率的类的相对较低的袋外观察频率。因此,估计的袋外误差是高度可变的,它可能很难解释。为了避免较大的估计袋外误差方差,特别是对于小样本容量,设置一个更平衡的错误分类成本矩阵使用
成本
或者一个倾斜较小的先验概率向量之前
.由于某些输入和输出参数的顺序对应于训练数据中的不同类,因此使用类来指定类顺序是一种良好的实践
一会
名称-值对参数。为了快速确定类顺序,从训练数据中删除所有未分类的观察结果(即缺少标签),获得并显示所有不同类的数组,然后指定数组
一会
.例如,假设响应变量(Y
)是标签单元格数组。这段代码指定变量中的类顺序一会
.Ycat =分类的(Y);classNames =类别(Ycat)
分类
分配<定义>
对未分类的观察和类别
不包括<定义>
从它的输出。因此,如果将此代码用于标签单元格数组或将类似代码用于分类数组,则不必删除缺少标签的观察值来获得不同类的列表。要指定从表示最少的标签到表示最多的标签的类顺序,然后快速确定类顺序(如前面的项目符号所示),但是在将列表传递给之前,根据频率排列列表中的类
一会
.根据前面的示例,这段代码指定了在中从最低到最多表示的类顺序classNamesLH
.Ycat =分类的(Y);classNames =类别(Ycat);freq =计数猫(Ycat);[~,idx] = sort(freq);classNamesLH = classNames(idx);
算法
有关集成聚合算法的详细信息,请参见整体算法.
如果你指定
方法
是一个增强算法学习者
成为决策树,然后软件就会成长树桩默认情况下。决策树桩是连接到两个终端(叶节点)的一个根节点。属性可以调整树的深度MaxNumSplits
,MinLeafSize
,MinParentSize
使用名称-值对参数templateTree
.fitensemble
通过错分类代价大的过采样类和错分类代价小的欠采样类生成袋内样本。因此,袋外样本对错误分类代价大的类的观测值较少,而对错误分类代价小的类的观测值较多。如果使用小数据集和高度倾斜的成本矩阵训练分类集合,则每个类的袋外观察数可以很低。因此,估计的袋外误差可能有很大的方差,并且可能难以解释。同样的现象也会发生在具有较大先验概率的类上。对于RUSBoost集成聚合方法(
方法
),名称-值对参数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
并行训练使用英特尔®线程构建块(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年。
扩展功能
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
使用注意事项和限制:
不能指定名称-值参数
方法
作为“包”
,“LPBoost”
,“RobustBoost”
,“子”
,或“TotalBoost”
.fitensemble
万博1manbetx仅支持决策树学习器。您可以指定名称-值参数学习者
只有当“树”
,创建的学习模板对象的学习模板对象或单元格向量templateTree
.如果你使用templateTree
,可以指定名称-值参数代理
而且PredictorSelection
只有当“关闭”
而且“allsplits”
,分别。如果你使用
templateTree
数据包含分类预测因子,适用于:对于多类分类,
fitensemble
万博1manbetx仅支持OVAbyClass
寻找最佳分割的算法。您可以指定名称-值参数
NumVariablesToSample
只有当“所有”
.
fitensemble
适用于以下任何一种情况,则适合GPU上的分类模型:输入参数
X
是一个gpuArray
对象。输入参数
资源描述
包含gpuArray
预测变量。
fitensemble
适合回归模型在GPU上,如果其中任何一个适用:输入参数
X
是一个gpuArray
对象。输入参数
Y
是一个gpuArray
对象。输入参数
资源描述
包含gpuArray
变量。
如果你使用
templateTree
指定MaxNumSplits
,请注意fitensemble
对于更深层的决策树,GPU上的执行速度可能不会比CPU快。
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
在R2011a中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。