主要内容

集成学习框架

使用各种方法,您可以将许多弱学习者的结果合并到一个高质量的集成预测器中。这些方法严格遵循相同的语法,所以您可以尝试不同的方法,只需要对您的命令进行微小的更改。

可以使用创建用于分类的集合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截止船

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

集成算法的一般特征

  • 促进算法通常使用非常浅的树。这种结构使用相对较少的时间或内存。但是,为了有效预测,增强树可能需要比袋装树更多的集成成员。因此,并不总是清楚哪类算法更优。

  • 通常构建深树木。这种结构既耗时和内存密集。这也导致相对缓慢的预测。

  • 无需额外交叉验证即可估计泛化误差。看见oobloss.

  • 除了子空间,所有的加码和装袋算法都是基于决策树学习者。子空间你可以用任何一种判别分析或者K最近的邻居学习者。

要了解单个合唱团成员的特征,请参见分类算法的特点

设置合奏成员的数量

选择合奏的大小需要平衡速度和准确性。

  • 更大的集合需要更长的时间来训练和生成预测。

  • 当太大时,有些集合算法可能会过度训练(不准确)。

要设置适当的大小,请考虑在集合中以几十名到几百个成员开始,培训集合,然后检查集合质量,如测试合奏质量.如果您需要更多的成员,可以使用简历方法(分类)或简历方法(回归)。重复,直到增加更多的成员不能提高合奏质量。

提示

进行分类,LPBoost截止船算法是自我终止的,这意味着您不必调查合适的集合尺寸。尝试设置NumLearningCycles500.算法通常终止于较少的成员。

准备弱势学习者

目前较弱的学习者类型有:

  • “歧视性”(推荐子空间乐团)

  • “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.为了回归。

    如果你两者都提供MinParentSizeminleafsize.,学习者使用提供较大树叶(较浅树木)的设置:

    MINPALENT = MAX(MINPALENT,2 * MINLEAF)

    如果您另外提供最大数分裂,然后软件拆分树,直到满足三个拆分条件之一。

  • 替代品- 随着替代品拆分的决策树替代品“开”.当数据缺少值时,请使用代理分割。

    笔记

    代理项拆分会导致较慢的训练和使用更多内存。

  • PredictorSelectionfitcensemble.,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.

另见

|||||||

相关话题