使用各种方法,你可以将许多弱学习者的结果融合成一个高质量的集成预测器。这些方法严格遵循相同的语法,因此您可以尝试不同的方法,只对命令进行少量更改。
您可以通过创建分类的合奏fitcensemble
或用于通过使用回归fitrensemble
。
训练一套用于分类的系统fitcensemble
,请使用此语法。
ENS = fitcensemble(X,Y,名称,值)
X
是数据的矩阵。每一行包含一个观测,每一列包含一个预测变量。
ÿ
响应的矢量,与行数相同吗X
。
名称,值
使用一个或多个名称-值对参数指定其他选项。属性指定集成聚合方法'方法'
说法,与集成学习循环的数量'NumLearningCycles'
论证型和学习者型比较弱“学习者”
论据。对于名称 - 值对参数的完整列表,请参阅fitcensemble
功能页面。
本图显示了信息,你需要创建一个分类集成。
类似地,您可以通过使用fitrensemble
,其语法与fitcensemble
。有关输入参数和名称 - 值对参数的详细信息,请参阅fitrensemble
功能页面。
对于所有分类或非线性回归问题,请按照下列步骤来创建一个集合:
所有的监督学习方法都是从预测数据开始的X
在这个文档。X
可以被存储在一个矩阵或表。每行X
代表一个观察,和中的每一列X
代表一个变量或预测。
您可以使用各种各样的数据类型为响应数据。
对于回归合奏,ÿ
必须是一个数字向量,其元素数与?的行数相同X
。
分类的乐团,ÿ
可以是数字向量、分类向量、字符数组、字符串数组、字符向量的单元数组或逻辑向量。
例如,假设你的响应数据由三个观测数据组成,其顺序如下:真正
,假
,真正
。你可以表达ÿ
如:
[1; 0; 1]
(数字向量)
分类({ '真', '假', '真实'})
(分类矢量)
(真的,假的,真的)
(逻辑向量)
[ '真 ';' 假'; '真']
(字符数组,用空格填充,这样每行长度相同)
[ “真”, “假”, “真”]
(字符串数组)
{ '真', '假', '真'}
(字符向量的单元阵列)
无论使用何种数据类型是最方便的。因为你不能用逻辑条目代表缺失值,当你已经在遗漏值不使用逻辑项ÿ
。
fitcensemble
和fitrensemble
忽略遗漏值ÿ
当创建合奏。此表包含其中包括缺少项的方法。
数据类型 | 失踪的条目 |
---|---|
数字矢量 | 为NaN |
分类矢量 | <未定义> |
字符数组 | 排空间 |
字符串数组 | <失踪> 要么“” |
字符向量的单元阵列 | “” |
逻辑向量 | (无法代表) |
来创建分类和回归集合fitcensemble
和fitrensemble
分别选择从该列表中适当的算法。
对于两类分类:
'AdaBoostM1'
“LogitBoost”
'GentleBoost'
“RobustBoost”
(需要优化工具箱™)
'LPBoost'
(需要优化工具箱)
'TotalBoost'
(需要优化工具箱)
“RUSBoost”
“子”
“包”
对于有三个或更多的类分类:
'AdaBoostM2'
'LPBoost'
(需要优化工具箱)
'TotalBoost'
(需要优化工具箱)
“RUSBoost”
“子”
“包”
对于回归:
'LSBoost'
“包”
对于各种算法的描述,请参阅整体算法。
看到建议选择合适的集成算法。
下表列出了各种算法的特点。在表格标题:
不平衡- 适合不平衡数据(一个班有许多比对方多观察)
停止——算法self-terminates
疏- 需要弱学习比其他乐团较少的算法
算法 | 回归 | 二元分类 | 多类分类 | 类不平衡 | 停止 | 疏 |
---|---|---|---|---|---|---|
袋 |
× | × | × | |||
AdaBoostM1 |
× | |||||
AdaBoostM2 |
× | |||||
LogitBoost |
× | |||||
GentleBoost |
× | |||||
RobustBoost |
× | |||||
LPBoost |
× | × | × | × | ||
TotalBoost |
× | × | × | × | ||
RUSBoost |
× | × | × | |||
LSBoost |
× | |||||
子空间 |
× | × |
RobustBoost
,LPBoost
和TotalBoost
需要一个优化工具箱许可证。试一试TotalBoost
之前LPBoost
作为TotalBoost
可以更稳健。
回归- 您的选择是LSBoost
要么袋
。看到集成算法的一般特点关于增压和装袋的主要区别。
二元分类——试着AdaBoostM1
首先,这些修改:
数据的特点 | 推荐算法 |
---|---|
许多预测 | 子空间 |
扭曲数据(更多的一类观测) | RUSBoost |
标签噪声(一些训练数据有错误的类) | RobustBoost |
许多观察 | 避免LPBoost 和TotalBoost |
多类分类——试着AdaBoostM2
首先,这些修改:
数据的特点 | 推荐算法 |
---|---|
许多预测 | 子空间 |
扭曲数据(更多的一类观测) | RUSBoost |
许多观察 | 避免LPBoost 和TotalBoost |
对于这些算法的详细信息,请参阅整体算法。
有关单个团员的特征的详细信息,请参阅分类算法的特点。
选择一个集合的大小要平衡速度和准确性。
更大的集成系统需要更长的时间来训练和产生预测。
一些合奏算法可以成为训练过度(不准确),当过大。
要设置合适的大小,可以考虑先从几十到几百个成员合奏,培养合奏,然后检查合奏质量,如测试合奏质量。如果您需要更多成员,请使用恢复
方法(分类)或恢复
方法(回归)。重复这一步骤,直到增加更多成员并不能提高整体质量为止。
对于分类,LPBoost
和TotalBoost
算法是自终止,这意味着你不必追究相应的集成规模。尝试设置NumLearningCycles
至500
。该算法通常用更少的成员终止。
目前弱学习类型有:
“鉴别”
(推荐子空间
乐团)
'KNN'
(只为子空间
乐团)
'树'
(对于任何合奏除子空间
)
有两种方法来设置合奏弱学习类型。
要创建默认的弱学习选项的合奏,指定的值“学习者”
作为弱学习者名称的字符向量或字符串标量的名称-值对参数。例如:
ENS = fitcensemble(X,Y, '方法', '子空间',... 'NumLearningCycles',50 '学习者', 'KNN');%或ENS = fitrensemble(X,Y, '方法', '包',...... 'NumLearningCycles',50“,学习者, '树');
要创建具有非缺省的弱学习选项的集合,使用适当的创建一个非默认弱学习模板
方法。
例如,如果您有丢失的数据,并希望使用具有更高的精度替代拆分分类树:
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
学习者模板单元阵列,最常见的用法是给只有一个弱学习模板。
有关使用模板的示例,请参见在处理合奏分类不平衡数据或不等误分类损失和代孕拆分。
决策树可以处理为NaN
价值观X
。这些值被称为“失踪”。如果你有一排一些遗漏值X
,决策树只使用非缺失值找到最优分割。如果整个行由为NaN
,fitcensemble
和fitrensemble
忽略该行。如果你的数据在很大一部分的缺失值X
使用代理决定拆分。对于替代拆分的示例,请参阅在处理合奏分类不平衡数据或不等误分类损失和代孕拆分。
弱学习者树的深度对训练时间、记忆使用和预测准确性产生影响。您可以控制这些参数的深度:
MaxNumSplits
- 分支节点分裂的最大数是MaxNumSplits
每棵树。设置较大的值MaxNumSplits
深入树木。套袋默认为尺寸(X,1) - 1
。为提高默认为1
。
MinLeafSize
-每片叶子都至少有MinLeafSize
观察结果。的设定值小MinLeafSize
深入树木。分类的默认值是1
和五
回归。
MinParentSize
- 树中的每个分支节点至少有MinParentSize
观察结果。的设定值小MinParentSize
深入树木。分类的默认值是2
和10
回归。
如果您同时提供MinParentSize
和MinLeafSize
,学习者使用,让大叶(浅树)的设置:
MinParent = MAX(MinParent,2 * MinLeaf)
如果另外提供MaxNumSplits
,然后直到三个分裂条件之一满足软件拆分的树。
代孕
- 成长与代孕分割时决策树代孕
是'上'
。当数据缺少值时,使用代理分割。
代孕拆分导致更慢的培训和使用更多的内存。
PredictorSelection
-fitcensemble
,fitrensemble
和TreeBagger
使用标准的CART算法种树[11]默认。如果预测变量是异质的或存在具有多层次的预测和其它有几级,那么标准CART倾向于选择具有多层次的分裂预测预测。对于拆分预测值选择是稳健的级别数的预测因子,考虑指定“曲率”
要么“交互曲率”
。这些规范分别进行每个预测和响应对或每对预测的和响应,之间的关联的卡方检验。能产生最小的预测p- 值是分割预测用于特定节点。有关详细信息,请参阅选择拆分预测值选择技术。
不建议在提高决策树,选择使用弯曲或交互测试分裂的预测。
fitcensemble
要么fitrensemble
的语法fitcensemble
和fitrensemble
都是相同的。为fitrensemble
,语法是:
ENS = fitrensemble(X,Y,名称,值)
X
是数据的矩阵。每一行包含一个观测,每一列包含一个预测变量。
ÿ
是应答,在相同数量的观测为行X
。
名称,值
使用一个或多个名称-值对参数指定其他选项。属性指定集成聚合方法'方法'
说法,与集成学习循环的数量'NumLearningCycles'
论证型和学习者型比较弱“学习者”
论据。对于名称 - 值对参数的完整列表,请参阅fitrensemble
功能页面。
的结果fitrensemble
和fitcensemble
是合奏对象,适合制作上的新数据的预测。为了创建一个回归集成的一个基本的例子,见火车回归合奏。有关创建分类集成的基本示例,请参见火车分类集成。
还有,你可以通过几个名称 - 值对fitcensemble
要么fitrensemble
和一些适用于弱学习(templateDiscriminant
,templateKNN
和templateTree
)。以确定哪个名称 - 值对参数是适当的,该合奏或弱学习:
使用模板名-值对控制弱学习者的特征。
用fitcensemble
要么fitrensemble
名称-值对参数作为一个整体来控制集成,无论是用于算法还是用于结构。
例如,对于每棵树比默认更深提振分类树的集合,设置templateTree
名称-值对的观点MinLeafSize
和MinParentSize
为比默认值更小的值。要么,MaxNumSplits
为比默认值更大的值。树是那么leafier(深)。
来命名分类合奏的预测因子(合奏的结构的一部分),则使用PredictorNames
名称 - 值对中fitcensemble
。
fitcensemble
|fitrensemble
|oobLoss
|恢复
|恢复
|templateDiscriminant
|templateKNN
|templateTree