使用各种方法,您可以将许多弱学习者的结果融入一个高质量的集合预测因子。这些方法非常遵循相同的语法,因此您可以尝试不同的方法在命令中具有次要更改。
您可以通过使用创建一个组合进行分类fitcensemble
或者通过使用回归fitrensemble
.
要使用分类进行培训fitcensemble
,使用此语法。
ex = fitcensemble(x,y,名称,值)
X
是数据的矩阵。每一行包含一个观察,每一列包含一个预测变量。
y
是响应的矢量,与行相同的观察数X
.
名称,价值
使用一个或多个名称值对参数指定其他选项。例如,您可以使用该方法指定集合聚合方法“方法”
论证,集合学习周期数“NumLearningCycles”
论点,以及弱学习者的类型'学习者'
论点。有关名称-值对参数的完整列表,请参见fitcensemble
功能页面。
该图显示了创建分类集成所需的信息。
同样,您可以通过使用来培训融合的集合fitrensemble
,它遵循与此相同的语法fitcensemble
.有关输入参数和名称-值对参数的详细信息,请参见fitrensemble
功能页面。
对于所有分类或非线性回归问题,请按照以下步骤创建合奏:
所有监督的学习方法都以预测器数据开头,通常称为X
在本文档中。X
可以存储在矩阵或表中。每一排X
代表一个观察,每列X
表示一个变量或预测器。
您可以为响应数据使用多种数据类型。
对于回归合奏,y
必须是一个数字向量,其中元素数量相同,作为行的行数X
.
对于分类集合,y
可以是数字矢量,分类矢量,字符数组,字符串阵列,字符向量,或逻辑向量。
例如,假设您的响应数据按以下顺序包含三个观察:真正的
那错误的
那真正的
.你可以表达y
为:
[1, 0, 1]
(数值向量)
分类({‘真正的’,‘假’,‘真正’})
(分类向量)
[真; false;真实]
(逻辑向量)
(“真正的”,“假”;“真正的”)
(字符数组,带有空格的填充,所以每行都有相同的长度)
[“真实”,“假”,“真实”]
(字符串数组)
{'true','false','true'}
(字符向量的单元格数组)
使用最方便的数据类型。因为您不能用逻辑条目来表示丢失的值,所以在中有丢失的值时不要使用逻辑条目y
.
fitcensemble
和fitrensemble
忽略y
创建合奏时。此表包含包含缺失条目的方法。
数据类型 | 缺少条目 |
---|---|
数字矢量 | 南 |
分类向量 | <未定义> |
字符阵列 | 空间行 |
字符串数组 | <缺失> 或“ |
字符向量的单元格数组 | '' |
逻辑向量 | (不可能代表) |
创建分类和回归合奏fitcensemble
和fitrensemble
,从这个列表中选择合适的算法。
分为两类:
'adaboostm1'
'logitboost'
“GentleBoost”
'robustboost'
(需要优化工具箱™)
'lpboost'
(需要优化工具箱)
'突然船'
(需要优化工具箱)
'rusboost'
'子空间'
'包'
有三个或更多课程的分类:
'adaboostm2'
'lpboost'
(需要优化工具箱)
'突然船'
(需要优化工具箱)
'rusboost'
'子空间'
'包'
回归:
'lsboost'
'包'
各算法的描述请参见合奏算法.
此表列出了各种算法的特征。在表格标题:
不平衡- 适用于不平衡数据(一个课程比另一类更多的观察)
停止- 算法自我终止
稀疏的- 需要比其他合奏算法更少的弱者
算法 | 回归 | 二元分类 | 多包分类 | 班级不平衡 | 停止 | 稀疏的 |
---|---|---|---|---|---|---|
包 |
× | × | × | |||
AdaBoostM1 |
× | |||||
AdaBoostM2 |
× | |||||
LogitBoost |
× | |||||
温博 |
× | |||||
RobustBoost |
× | |||||
LPBoost. |
× | × | × | × | ||
TotalBoost |
× | × | × | × | ||
RUSBoost |
× | × | × | |||
lsboost. |
× | |||||
子空间 |
× | × |
RobustBoost
那LPBoost.
,TotalBoost
需要优化工具箱许可证。尝试TotalBoost
前LPBoost.
, 作为TotalBoost
可以更健壮。
回归-你的选择是lsboost.
或包
.看集合算法的一般特征升压和装袋之间的主要差异。
二元分类- 尝试AdaBoostM1
首先,经过这些修改:
数据特征 | 推荐算法 |
---|---|
许多预测 | 子空间 |
偏斜数据(更多的一个类别的观察) | RUSBoost |
标签噪声(一些培训数据有错误的类) | RobustBoost |
许多观测 | 避免LPBoost. 和TotalBoost |
多包分类- 尝试AdaBoostM2
首先,经过这些修改:
数据特征 | 推荐算法 |
---|---|
许多预测 | 子空间 |
偏斜数据(更多的一个类别的观察) | RUSBoost |
许多观测 | 避免LPBoost. 和TotalBoost |
有关算法的详细信息,请参阅合奏算法.
有关个体集合成员的特征的详细信息,请参阅分类算法的特征.
选择合奏的大小涉及平衡速度和准确性。
较大的合奏需要更长时间培训并生成预测。
一些集成算法在太大时可能会过度训练(不准确)。
要设置适当的大小,可以考虑从一个合奏中几十到几百个成员开始,训练合奏,然后检查合奏质量,如测试整体质量.如果似乎您需要更多成员,请使用它们添加恢复
方法(分类)或恢复
方法(回归)。重复直到添加更多成员,不会提高集合质量。
分类,LPBoost.
和TotalBoost
算法是自终止的,这意味着您不必研究适当的集成大小。尝试设置numlarnicalningcycles.
来500.
.算法通常以更少的成员终止。
目前弱的学习者类型是:
'判别'
(推荐子空间
合奏)
'knn'
(只为子空间
合奏)
“树”
(适用于除子空间
)
在合奏中设置弱学习者类型有两种方法。
要创建具有默认弱学习器选项的集成,请指定'学习者'
名称 - 值对参数作为弱学员名称的字符向量或字符串标量。例如:
ens = fitcensemble(x,y,'方法','子空间',...'numlarningcycles',50,'学习者','knn');%或ens = fitrensemble(x,y,'方法','bag',...'numlarningcycles',50,'学习者','树');
要创建具有非默认弱学习者选项的集成,请使用适当的工具创建一个非默认弱学习者模板
方法。
例如,如果您有缺少数据,并且希望使用具有代理分割的分类树以获得更好的准确性:
templ = templatetree('代理','全部');ens = fitcensemble(x,y,'方法','adaboostm2',...'numlarningcycles',50,'学习者,templ);
使树木的叶子包含至少是样本量10%的观察值:
templ = templatetree('minleafsize',size(x,1)/ 10);ens = fitcensemble(x,y,'方法','adaboostm2',...'numlarningcycles',50,'学习者,templ);
或者,选择每棵树的最大分割数:
templ = templatetree('maxnumsplits',4);ens = fitcensemble(x,y,'方法','adaboostm2',...'numlarningcycles',50,'学习者,templ);
您也可以使用非默认的弱学习器fitrensemble
.
当你可以给予fitcensemble
和fitrensemble
学习者模板的单元格阵列,最常见的使用是只给一个弱的学习者模板。
有关使用模板的示例,请参阅处理分类集合中的不平衡数据或不平等的错误分类成本和代理分裂.
决策树可以处理南
值X
.这样的值被称为“缺失值”。如果在一行中有一些缺失的值X
,决策树仅使用非贴材值查找最佳分割。如果整行包括南
那fitcensemble
和fitrensemble
忽略那行。如果您有具有大部分缺失值的数据X
,使用代理决策分裂。有关替代分裂的例子,请参阅处理分类集合中的不平衡数据或不平等的错误分类成本和代理分裂.
弱学员树的深度对训练时间,内存使用和预测精度进行了差异。您控制这些参数的深度:
maxnumsplits.
—分支节点分裂的最大次数为maxnumsplits.
每棵树。设置大值maxnumsplits.
得到深刻的树木。袋装的默认是尺寸(x,1) - 1
.默认助推是1
.
MinLeafSize
- 每个叶子至少有MinLeafSize
观察。设置较小的值MinLeafSize
得到深刻的树木。分类的默认是1
和5.
为了回归。
蛋白化
—树中的每个分支节点至少有蛋白化
观察。设置较小的值蛋白化
得到深刻的树木。分类的默认是2
和10
为了回归。
如果两者都提供蛋白化
和MinLeafSize
,学习者使用提供更大的叶子(浅树)的设置:
MinParent = max (MinParent 2 * MinLeaf)
如果还提供maxnumsplits.
然后,软件拆分一棵树,直到满足三个拆分标准之一。
代理
-使用代理劈叉生长决策树代理
是'在'
.当数据缺少值时,使用替代拆分。
代理分裂会导致较慢的训练和使用更多内存。
预测互联
-fitcensemble
那fitrensemble
,treebagger
使用标准的CART算法种植树木[11]默认情况下。如果预测器变量是异构的,或者存在具有许多级别的预测器,则标准推车倾向于选择具有多个级别的预测器作为分离预测器。对于拆分预测器选择,这对预测器具有预测器具有的级别,请考虑指定'曲率'
或'互动曲率'
.这些规范分别对每个预测器和响应或每对预测器和响应之间的关联进行卡方检验。产生最小值的预测器P.-value是特定节点的分割预测器。有关详细信息,请参见选择分裂预测器选择技术.
在提升决策树时,不建议使用曲率或交互测试选择分割预测器。
fitcensemble
或fitrensemble
语法fitcensemble
和fitrensemble
是相同的。为了fitrensemble
,语法是:
ex = fitrensemble(x,y,名称,值)
X
是数据的矩阵。每一行包含一个观察,每一列包含一个预测变量。
y
是响应,与行相同数量的观察X
.
名称,价值
使用一个或多个名称值对参数指定其他选项。例如,您可以使用该方法指定集合聚合方法“方法”
论证,集合学习周期数“NumLearningCycles”
论点,以及弱学习者的类型'学习者'
论点。有关名称-值对参数的完整列表,请参见fitrensemble
功能页面。
的结果fitrensemble
和fitcensemble
是一个集合对象,适合对新数据进行预测。有关创建回归集成的基本示例,请参见火车回归合奏.有关创建分类集合的基本示例,请参阅火车分类集合.
您可以传递几个名称-值对fitcensemble
或fitrensemble
,几个适用于弱学习者(模板异教徒
那templateKNN
,templateTree
)。要确定哪个名称值对参数是合适的,所以合奏或弱学习者:
使用模板名称值对来控制弱学习者的特征。
使用fitcensemble
或fitrensemble
名称 - 值对参数,用于控制整体组合,无论是算法还是结构。
例如,对于带有比默认的每棵树更深的升级分类树的集合,请设置templateTree
名称值对参数MinLeafSize
和蛋白化
到较小的值而不是默认值。要么,maxnumsplits.
更改为比默认值大的值。然后树木的叶子变长(更深)。
要命名分类集成(集成结构的一部分)中的预测器,请使用预测
名称-值对的fitcensemble
.
fitcensemble
|fitrensemble
|oobLoss
|恢复
|恢复
|模板异教徒
|templateKNN
|templateTree