使用各种方法,您可以将许多弱学习者的结果合并到一个高质量的集成预测器中。这些方法严格遵循相同的语法,所以您可以尝试不同的方法,只需要对您的命令进行微小的更改。
可以使用创建用于分类的集合fitcensemble.
或者使用fitrensemble.
.
训练用于分类使用的集合fitcensemble.
,使用此语法。
ens=fitcensemble(X,Y,名称,值)
X
是数据矩阵。每行包含一个观察,每列都包含一个预测变量。
Y
响应的向量是否与行数相同X
.
名称、值
使用一个或多个名称-值对参数指定其他选项。例如,可以使用'方法'
参数,使用'numlearnicalnycle'
论证的类型和弱学习者的类型有关“学习者”
争论。有关名称值对参数的完整列表,请参阅fitcensemble.
功能页面。
此图显示了创建分类集合所需的信息。
类似地,您可以使用fitrensemble.
,其语法与fitcensemble.
.有关输入参数和名称值对参数的详细信息,请参阅fitrensemble.
功能页面。
对于所有分类或非线性回归问题,请按照以下步骤创建集合:
所有的监督学习方法都从预测数据开始,通常称为X
在本文档中。X
可以存储在矩阵或表中。每行X
表示一个观察值,以及每个观察值列X
代表一个可变或预测器。
您可以使用各种数据类型进行响应数据。
对于回归系综,Y
必须是一个数字向量,其元素数与的行数相同X
.
分类的乐团,Y
可以是数字向量、类别向量、字符数组、字符串数组、字符向量单元格数组或逻辑向量。
例如,假设您的响应数据由以下顺序的三个观察值组成:真的
,错误的
,真的
. 你可以表达Y
作为:
[1; 0; 1]
(数字矢量)
分类({'true','false','true'})
(分类向量)
(真的,假的,真的)
(逻辑向量)
['真';'false';'真']
(字符数组,填充空格,以便每行具有相同的长度)
[“真”、“假”、“真”]
(字符串数组)
{'true','false','true'}
(字符向量的单元格数组)
使用哪种数据类型最方便。因为您不能代表缺少逻辑条目的缺失值,但在缺少值时不要使用逻辑条目Y
.
fitcensemble.
和fitrensemble.
忽略缺失的值Y
创建合奏时。此表包含包含包含缺失项的方法。
数据类型 | 失踪的条目 |
---|---|
数值向量 | 楠 |
分类载体 | <未定义> |
字符数组 | 排空间 |
字符串数组 | < >失踪 或者"" |
字符向量的单元格阵列 | '' |
逻辑向量 | (无法表示) |
来创建分类和回归集成fitcensemble.
和fitrensemble.
分别从此列表中选择适当的算法。
有关两个类的分类:
“AdaBoostM1”
“LogitBoost”
“绅士之声”
“RobustBoost”
(需要优化工具箱)™)
“LPBoost”
(需要优化工具箱)
“TotalBoost”
(需要优化工具箱)
“RUSBoost”
“子”
“包”
对于三个或三个以上类别的分类:
“AdaBoostM2”
“LPBoost”
(需要优化工具箱)
“TotalBoost”
(需要优化工具箱)
“RUSBoost”
“子”
“包”
对于回归:
“LSBoost”
“包”
有关各种算法的描述,请参见整体算法.
看见选择合适的合奏算法的建议.
此表列出了各种算法的特征。在表格标题中:
不平衡-适用于不平衡数据(一类比另一类有更多的观测值)
停止——算法self-terminates
疏-与其他集成算法相比,需要较少的弱学习者
算法 | 回归 | 二进制分类 | 多类分类 | 阶级不平衡 | 停止 | 疏 |
---|---|---|---|---|---|---|
袋 |
× | × | × | |||
adaboostm1. |
× | |||||
adaboostm2. |
× | |||||
Logitboost. |
× | |||||
温柔的 |
× | |||||
抢劫 |
× | |||||
LPBoost |
× | × | × | × | ||
截止船 |
× | × | × | × | ||
rusboost. |
× | × | × | |||
LSBoost |
× | |||||
子空间 |
× | × |
抢劫
,LPBoost
, 和截止船
需要一个优化工具箱许可证。试一试截止船
之前LPBoost
像截止船
可以更强大。
回归- 你的选择是LSBoost
或者袋
.看见集成算法的一般特征主要区别在增压和装袋。
二进制分类——试着adaboostm1.
首先,使用这些修改:
数据的特点 | 推荐算法 |
---|---|
许多预测因子 | 子空间 |
扭曲的数据(一个类的更多观察) | rusboost. |
标签噪音(一些训练数据有错误的类) | 抢劫 |
许多观察 | 避免LPBoost 和截止船 |
多类分类——试着adaboostm2.
首先,使用这些修改:
数据的特点 | 推荐算法 |
---|---|
许多预测因子 | 子空间 |
扭曲的数据(一个类的更多观察) | rusboost. |
许多观察 | 避免LPBoost 和截止船 |
有关算法的详细信息,请参阅整体算法.
要了解单个合唱团成员的特征,请参见分类算法的特点.
选择合奏的大小需要平衡速度和准确性。
更大的集合需要更长的时间来训练和生成预测。
当太大时,有些集合算法可能会过度训练(不准确)。
要设置适当的大小,请考虑在集合中以几十名到几百个成员开始,培训集合,然后检查集合质量,如测试合奏质量.如果您需要更多的成员,可以使用简历
方法(分类)或简历
方法(回归)。重复,直到增加更多的成员不能提高合奏质量。
提示
进行分类,LPBoost
和截止船
算法是自我终止的,这意味着您不必调查合适的集合尺寸。尝试设置NumLearningCycles
到500
.算法通常终止于较少的成员。
目前较弱的学习者类型有:
“歧视性”
(推荐子空间
乐团)
“KNN”
(只适用于子空间
乐团)
'树'
(除了除去的任何合奏子空间
)
有两种方法可以在合并中设置弱学习者类型。
要使用默认弱的学习者选项创建合奏,请指定值的值“学习者”
名称-值对参数作为弱学习器名称的字符向量或字符串标量。例如:
ens=fitcensemble(X,Y,'Method','Subspace',…'NumLearningCycles',50,'Learner','KNN');%或者ens=fitrensemble(X,Y,'Method','Bag','NumLearningCycles',50,'Learner','Tree');
要使用非学习者弱的学习者选项创建一个合奏,使用适当的方式创建一个非默认弱学习者样板
方法。
例如,如果缺少数据,并希望使用带有代理项拆分的分类树以获得更好的准确性:
templ = templateTree(“代孕”,“所有的”);ens = fitcensemble(X,Y,'Method','AdaBoostM2',…“NumLearningCycles”,50岁的“学习者”,templ);
用含有含有许多观察结果的树叶种植树木,这是至少10%的样品大小:
templ = templateTree (MinLeafSize,大小(X, 1) / 10);ens = fitcensemble(X,Y,'Method','AdaBoostM2',…“NumLearningCycles”,50岁的“学习者”,templ);
或者,选择每树的最大分割数:
templ = templateTree (MaxNumSplits, 4);ens = fitcensemble(X,Y,'Method','AdaBoostM2',…“NumLearningCycles”,50岁的“学习者”,templ);
您也可以使用非默认的弱学习器fitrensemble.
.
虽然你可以给fitcensemble.
和fitrensemble.
学习者模板的单元数组,最常见的用法是只给出一个弱学习者模板。
有关使用模板的示例,请参见在分类集合中处理不平衡的数据或不相等的错误分类成本和替代分裂.
决策树可以处理楠
价值X
.这些值称为“缺失”。如果在一行中有一些缺少的值X
,决策树只使用非缺失值来寻找最优分割。如果一整行由楠
,fitcensemble.
和fitrensemble.
别理那一行。如果数据中有大量缺失值X
,使用代理决策拆分。有关代理项拆分的示例,请参见在分类集合中处理不平衡的数据或不相等的错误分类成本和替代分裂.
弱学习树的深度对训练时间、记忆使用和预测准确性都有影响。你可以控制这些参数的深度:
最大数分裂
- 分支节点拆分的最大数量是最大数分裂
每棵树。设置较大的值最大数分裂
为了得到深树。装袋的默认设置为尺寸(X,1)-1
.默认的提升是1.
.
minleafsize.
-每片叶子至少有minleafsize.
观察。设置小值minleafsize.
去挖深树。默认的分类是1.
和5.
为了回归。
MinParentSize
- 树中的每个分支节点至少有MinParentSize
观察。设置小值MinParentSize
去挖深树。默认的分类是2.
和10.
为了回归。
如果你两者都提供MinParentSize
和minleafsize.
,学习者使用提供较大树叶(较浅树木)的设置:
MINPALENT = MAX(MINPALENT,2 * MINLEAF)
如果您另外提供最大数分裂
,然后软件拆分树,直到满足三个拆分条件之一。
替代品
- 随着替代品拆分的决策树替代品
是“开”
.当数据缺少值时,请使用代理分割。
笔记
代理项拆分会导致较慢的训练和使用更多内存。
PredictorSelection
—fitcensemble.
,fitrensemble.
, 和树人
使用标准购物车算法种植树木[11]默认情况下。如果预测变量是异质的,或者有多个级别的预测值,而其他级别的预测值很少,那么标准CART倾向于选择多个级别的预测值作为分割预测值。对于预测因子的选择具有鲁棒性的分裂预测选择,考虑指定。“曲率”
或者“交互曲率”
.这些规范分别在每个预测器和响应或每对预测器和响应之间进行Chi-Square测试。产生最小值的预测因子P-Value是特定节点的分割预测器。有关更多详细信息,请参阅选择分割预测器选择技术.
笔记
提升决策树时,不建议使用曲率或交互测试选择分割预测值。
fitcensemble.
或者fitrensemble.
的语法fitcensemble.
和fitrensemble.
都是相同的。为fitrensemble.
,语法为:
ens=fitrensemble(X,Y,名称,值)
X
是数据矩阵。每行包含一个观察,每列都包含一个预测变量。
Y
是响应,观察数与中的行数相同X
.
名称、值
使用一个或多个名称-值对参数指定其他选项。例如,可以使用'方法'
参数,使用'numlearnicalnycle'
论证的类型和弱学习者的类型有关“学习者”
争论。有关名称值对参数的完整列表,请参阅fitrensemble.
功能页面。
的结果fitrensemble.
和fitcensemble.
是一个合奏对象,适用于对新数据进行预测。有关创建回归合奏的基本示例,请参阅火车回归合奏.有关创建分类集成的基本示例,请参见列车分类集成.
有几个名称 - 值对您可以传递给fitcensemble.
或者fitrensemble.
,以及适用于弱势学习者的一些(templateDiscriminant
,templateknn.
, 和Templatetree.
).要确定哪一个名称-值对参数是合适的,集合或弱学习者:
使用模板名值对来控制弱学习器的特征。
使用fitcensemble.
或者fitrensemble.
名称-值对参数用于控制整体,无论是算法还是结构。
例如,对于每个树都比默认值深的增强分类树集合,请设置Templatetree.
名称-值对的观点minleafsize.
和MinParentSize
设置为小于默认值的值。或最大数分裂
比默认值更大。树木是叶子(更深)。
要在分类集合中命名预测器(集合结构的一部分),请使用PredictorNames
中的名称-值对fitcensemble.
.
fitcensemble.
|fitrensemble.
|oobloss.
|简历
|简历
|templateDiscriminant
|templateknn.
|Templatetree.