主要内容

对集成学习框架

使用各种方法,可以融合结果从许多薄弱的学习者为一个高质量的整体预测。这些方法密切遵循相同的语法,你可以尝试不同的方法进行一些修改在你的命令。

您可以创建一个分类利用fitcensemble或回归通过使用fitrensemble

训练一个分类使用fitcensemble,使用这种语法。

实体= fitcensemble (X, Y,名称,值)
  • X是数据的矩阵。每行包含一个观察,每一列包含一个预测变量。

  • Y反应的是向量,相同数量的观察的行吗X

  • 名称,值使用一个或多个名称-值对参数指定附加选项。例如,您可以指定合奏的聚合方法“方法”观点,与整体学习周期“NumLearningCycles”论点,而弱的学习者的类型“学习者”论点。名称-值对参数的完整列表,请参阅fitcensemble功能页面。

这个图显示的信息您需要创建一个分类。

要求输入fitcensemble创建一个分类

类似地,您可以训练回归使用的合奏fitrensemble遵循相同的语法fitcensemble。有关输入参数和参数名称-值对,看到fitrensemble功能页面。

分类和非线性回归问题,按照下面的步骤来创建一个整体:

准备预测数据

所有监督学习方法首先预测数据,通常被称为X在这个文档。X可以存储在一个矩阵或表格。每一行的X代表一个观察,每一列的X代表一个变量或预测。

准备响应数据

您可以使用各种各样的数据类型的响应数据。

  • 回归的乐团,Y必须与相同数量的数值向量元素的行数的X

  • 分类的乐团,Y可以是一个数值向量,分类向量,字符数组,字符串数组,单元阵列的特征向量,或逻辑向量。

    例如,假设你的响应数据包括三个观测按照以下顺序:真正的,,真正的。你可以表达Y为:

    • [1,0,1](数值向量)

    • 分类({‘真正的’,‘假’,‘真正’})(分类向量)

    • (真的,假的,真的)(逻辑向量)

    • (“真正的”,“假”;“真正的”)(字符数组,填补空间,所以每一行有相同的长度)

    • (“真正的”,“假”,“真正的”)(字符串数组)

    • {“真实”,“假”,“真正的”}(单元阵列特征向量)

    使用哪个数据类型是最方便的。因为你无法用逻辑条目表示缺失值,不使用逻辑当你有缺失值的条目Y

fitcensemblefitrensemble忽略缺失值Y当创建了一个整体。此表包含的方法包括失踪的条目。

数据类型 失踪的条目
数值向量
分类向量 <定义>
字符数组 排空间
字符串数组 <失踪>”“
单元阵列的特征向量
逻辑向量 (不可能代表)

选择一个适用的合奏聚合方法

创建分类和回归集合体fitcensemblefitrensemble分别从该列表中选择合适的算法。

  • 为分类两类:

    • “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
    许多观测 避免LPBoostTotalBoost
  • 多类分类——试着AdaBoostM2首先,这些修改:

    数据的特点 推荐算法
    许多预测 子空间
    倾斜的数据(更多的观察一个类) RUSBoost
    许多观测 避免LPBoostTotalBoost

算法的详细信息,请参阅整体算法

整体算法的一般特征

  • 提高算法通常使用非常浅的树木。该建筑使用相对较少的时间和内存。然而,对于有效的预测,提高了树可能需要比袋装树木乐团成员。因此它并不总是清楚这类算法优越。

  • 通常构造深树。这个建筑是耗费时间和内存密集型。这也会导致预测相对较慢。

  • 可以估计泛化误差没有额外的交叉验证。看到oobLoss

  • 除了子空间,所有提升和装袋算法是基于决策树学习者。子空间可以使用判别分析k最近的邻居学习者。

个性的细节特征乐团成员,看到的分类算法的特点

乐团成员的数量

选择大小的一个涉及平衡速度和准确度。

  • 大乐团要花很长的时间来培训和生成预测。

  • 一些整体算法可以成为训练过度太大时(不准确)。

设定一个适当的大小,考虑从几十到数百成员在一个乐团,乐团训练,然后检查整体质量,如测试整体质量。看来,如果你需要更多的成员,将它们添加使用的简历(分类)或方法的简历方法(回归)。重复,直到添加更多成员并不能提高整体质量。

提示

分类,LPBoostTotalBoost算法是自终止,也就是说,你不需要调查适当的整体大小。尝试设置NumLearningCycles500年。用更少的成员通常算法终止。

准备薄弱的学习者

目前疲软的学习者类型是:

  • “判别”(推荐子空间乐团)

  • “资讯”(仅供子空间乐团)

  • “树”(以外的任何合奏子空间)

有两种方法可以设置弱学习者类型合奏。

  • 创建一个默认的弱学习者选项,指定的值“学习者”名称-值对参数的特征向量或字符串标量弱学习者的名字。例如:

    实体= fitcensemble (X, Y,‘法’,‘子’,……“NumLearningCycles”, 50岁的“学习者”,“资讯”);%或实体= fitrensemble (X, Y,“方法”,“包”,…“NumLearningCycles”, 50岁的“学习者”,“树”);
  • 创建一个非默认弱学习者选项,创建一个默认的弱的学习者使用适当的模板方法。

    例如,如果您有缺失的数据,想要使用分类树代理分割的准确性:

    templ = templateTree(“代孕”,“所有的”);实体= fitcensemble (X, Y,‘法’,‘AdaBoostM2’,……“NumLearningCycles”, 50岁的“学习者”,templ);

    种植树木和叶子含有大量的观察至少10%的样本大小:

    templ = templateTree (MinLeafSize,大小(X, 1) / 10);实体= fitcensemble (X, Y,‘法’,‘AdaBoostM2’,……“NumLearningCycles”, 50岁的“学习者”,templ);

    另外,选择最大每个树的分裂数:

    templ = templateTree (MaxNumSplits, 4);实体= fitcensemble (X, Y,‘法’,‘AdaBoostM2’,……“NumLearningCycles”, 50岁的“学习者”,templ);

    您还可以使用默认的薄弱的学习者fitrensemble

虽然你可以给fitcensemblefitrensemble学习者的单元阵列模板,最常见的用法是举个弱学习者模板。

对于使用一个模板示例,请参阅处理不平衡数据分类合奏中或不平等的误分类成本代理分裂

决策树可以处理X。这些值被称为“失踪”。如果你有一些缺失值的行X决策树发现,最优分割使用常数的值。如果整个行组成,fitcensemblefitrensemble忽略这一行。如果你有数据缺失值的一大部分X分裂,使用代理决定。代理分裂的例子,请参阅处理不平衡数据分类合奏中或不平等的误分类成本代理分裂

共同设置树弱的学习者

  • 薄弱的学习者的深度树使训练时间不同,内存使用,和预测精度。你这些参数控制插入的深度:

    • MaxNumSplits——最大数量的分支节点分裂MaxNumSplits每棵树。集大的值MaxNumSplits树木的深处。默认为装袋大小(X, 1) - 1。默认的推动1

    • MinLeafSize至少,每片叶子MinLeafSize观察。设立小的值MinLeafSize树木的深处。默认为分类15回归。

    • MinParentSize——树中的每个分支节点至少有MinParentSize观察。设立小的值MinParentSize树木的深处。默认为分类210回归。

    如果您同时供应MinParentSizeMinLeafSize,学习者使用的设置大叶子树(浅):

    MinParent = max (MinParent 2 * MinLeaf)

    如果你另外供应MaxNumSplits,那么软件分裂树直到三分裂标准之一是满意。

  • 代理——决策树与代理分裂生长代理“上”。使用代理将当你的数据有缺失值。

    请注意

    代理将导致较低的培训和使用更多的内存。

  • PredictorSelection- - - - - -fitcensemble,fitrensemble,TreeBagger使用标准的CART算法种树[11]默认情况下。如果预测变量是异构或有预测有许多水平和其他有几个级别,然后标准车往往选择预测有多的水平分割预测。split-predictor选择健壮的数量水平的预测,考虑指定“弯曲”“interaction-curvature”。这些规范进行卡方测试每个预测和响应之间的协会或每对预测和响应,分别。收益率最小的预测p价值的分割预测一个特定的节点。更多细节,请参阅选择分割预测选择技术

    请注意

    提高决策树时,选择分割预测不推荐使用曲率或交互测试。

调用fitcensemblefitrensemble

的语法fitcensemblefitrensemble都是相同的。为fitrensemble,语法是:

实体= fitrensemble (X, Y,名称,值)
  • X是数据的矩阵。每行包含一个观察,每一列包含一个预测变量。

  • Y是相同数量的观察的反应,行吗X

  • 名称,值使用一个或多个名称-值对参数指定附加选项。例如,您可以指定合奏的聚合方法“方法”观点,与整体学习周期“NumLearningCycles”论点,而弱的学习者的类型“学习者”论点。名称-值对参数的完整列表,请参阅fitrensemble功能页面。

的结果fitrensemblefitcensemble是一个对象,适合做预测新数据。对于一个基本的示例创建一个回归整体,看到的火车回归合奏。对于一个基本的示例创建一个分类合奏,明白了火车分类合奏

在何处设置名称-值对吗

有几个你可以通过名称-值对fitcensemblefitrensemble,适用于弱学习者(几templateDiscriminant,templateKNN,templateTree)。确定哪些名称-值对的观点是适当,合奏或弱学习者:

  • 使用模板名称-值对控制薄弱的学习者的特点。

  • 使用fitcensemblefitrensemble名称-值对参数来控制整体作为一个整体,对算法或结构。

例如,提高了分类树,每棵树的整体比默认值,设置templateTree名称-值对的观点MinLeafSizeMinParentSize比默认值较小的值。或者,MaxNumSplits比默认设置更大的值。然后树树叶的(深)。

名字的预测分类合奏(整体的结构的一部分),使用PredictorNames名称-值对的fitcensemble

另请参阅

|||||||

相关的话题