两类提升决策树

重要

对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习

从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。

ML 工作室(经典)文档即将停用,将来可能不会更新。

使用提升的决策树算法创建二元分类器

类别:机器学习/初始化模型/分类

注意

适用于:机器学习 Studio (经典) 应用

可在 Azure 机器学习设计器中获取类似的拖放模块。

模块概述

本文介绍如何使用 机器学习 Studio (经典 ) 中的双类提升决策树模块创建基于提升决策树算法的机器学习模型。

提升决策树是一种集成学习方法,在此方法中,第二个树将针对第一个树的误差进行纠正,第三个树将针对第一个和第二个树的误差进行纠正,依此类推。 预测基于共同构成了预测的树的整个集成。 有关更多技术详细信息,请参阅 本文 的"研究"部分。

通常,当配置正确时,提升决策树是可在各种机器学习任务中获得最佳性能的最简单方法。 但是,它们也是占用大量内存的学习器之一,并且当前实现将所有内容都保存在内存中。 因此,提升决策树模型可能无法处理某些线性学习器可以处理的非常大的数据集。

如何配置Two-Class提升决策树

此模块创建一个未训练的分类模型。 由于分类是一种监督式学习方法,所以,若要训练模型,你需要一个“带标记的数据集”,其中包含一个标签列,该列在所有行中都有一个值。

可以使用"训练模型"或"优化模型超参数"模块来训练此类模型。

  1. 在 机器学习 Studio (经典) 中,将提升决策模块添加到试验。

  2. 通过设置“创建训练程序模式”选项,指定要如何对模型进行训练。

    • “单个参数”:如果你知道自己想要如何配置模型,可以提供一组特定的值作为参数。

    • 参数范围:如果不确定最佳参数,可以使用优化模型超参数模块来找到最佳参数。 你提供某个值范围,然后训练程序就会循环访问多个设置组合,以确定可产生最佳结果的值组合。

  3. 对于“每个树的最大叶数”,请指定可在任何树中创建的终端节点(叶)的最大数目。

    如果增大此值,则可能会增加树的大小并获得更好的精度,但风险是过度拟合和更长的训练时间。

  4. 对于“每个叶节点的最少样本数”,指定在树中创建任何终端节点(叶)所需的事例数。

    通过增加此值,可以增加创建新规则的阈值。 例如,使用默认值 1 时,即使是单个案例也可以导致创建新规则。 如果将值增加到 5,则训练数据将必须包含至少 5 个满足相同条件的案例。

  5. 对于“学习速率”,请键入一个介于 0 和 1 之间的数字,用以定义学习时的步幅。

    学习速率决定了学习器收敛于最优解的速度。 如果步幅太大,则可能会越过最优解。 如果步幅太小,则训练将花费更长的时间来收敛于最优解。

  6. 对于“构造的树数”,请指定要在集成中创建的决策树的总数。 通过创建更多决策树,你可能会获得更好的覆盖范围,但训练时间将会增加。

    此值还控制对训练后的模型进行可视化时显示的树的数量。 如果希望查看或打印单个树,请将此值设置为 1。 但是,如果这样做,只会生成一个树(该树采用初始的参数集),不会执行进一步的迭代。

  7. 对于“随机数种子”,可以键入非负整数作为随机种子值。 指定种子可以确保具有相同数据和参数的运行之间的可再现性。

    随机种子默认设置为 0,这意味着将从系统时钟获取初始种子值。 使用随机种子的后续运行可能会产生不同的结果。

  8. 选择 "允许未知分类级别 "选项,为训练和验证集的未知值创建组。

    如果取消选择此选项,则模型只能接受训练数据中包含的值。

    如果允许未知值,则模型对于已知值可能不太精确,但可能会为未知值的新值 (更好的) 预测。

  9. 定型模型。

    • 如果将“创建训练程序模式”设置为“单个参数”,请连接带标记的数据集和训练模型模块

    • 如果将“创建训练程序模式”设置为“参数范围”,请连接带标记的数据集并使用优化模型超参数来训练模型

    注意

    如果将参数范围传递给训练模型模块,则它只使用参数范围列表中的第一个值。

    如果将一组参数值传递给优化模型超参数模块,则当它期望每个参数有一系列设置时,它会忽略这些值,并为学习器使用默认值。

    如果选择“参数范围”选项并为任何参数输入单个值,则整个整理过程中都会使用你指定的单个值,即使其他参数的值发生一系列更改。

结果

在训练完成后:

  • 若要查看每次迭代时创建的树,请右键单击"训练模型 " 模块,然后选择 "训练的模型"进行 可视化。 如果使用" 优化模型超参数",请右键单击模块并选择" 训练 的最佳模型",以可视化最佳模型。

    单击每个树以向下钻取拆分,并查看每个节点的规则。

  • 若要使用模型进行评分,请将其连接到评分模型,以预测新输入示例的值。

示例

有关如何在机器学习中使用提升决策树的示例,请参阅Azure AI 库:

  • 直接营销:使用 双类提升决策树 算法来预测客户需求。

  • 航班延误预测:此示例使用双类提升决策 算法来确定航班是否可能会延迟。

  • 信用卡风险:此示例使用双类提升决策 算法来预测风险。

技术说明

本部分包含实现详细信息和常见问题。

使用提示

  • 若要训练提升决策树模型,必须提供多个数据实例。 如果数据集包含的行太少,则训练过程中会生成错误。

  • 如果数据缺少值,则必须添加特征的指示器。

  • 一般而言,当特征在某种程度上相关时,提升决策树会生成更好的结果。 如果特征具有大量平均信息量 (也就是说,它们与) 不相关,它们共享很少或没有相互信息,在树中对它们排序不会产生很多预测意义。 如果不是这种情况,可以尝试随机林模型。

    当示例多于特征时,提升也有效,因为模型容易过度拟合。

  • 不要规范化数据集。 由于特征的处理是简单的非参数化、小于或大于比较,规范化或任何形式的非单调转换函数可能几乎没有影响。

  • 在训练前,特征会进行离散化和装箱,因此,即使对于连续特征,也只有相对较小的一组阈值候选项会被列入考虑范围。

实现详细信息

有关提升决策树算法的详细信息,请参阅 贪婪函数近似值:梯度提升计算机

中提升决策树机器学习以下提升方法:

  1. 从弱学习器的空系综开始。

  2. 对于每个训练示例,获取系综的当前输出。 这是 ensemble 中所有弱学习器的输出之和。

  3. 计算每个示例的损失函数的梯度。

    这取决于任务是二元分类问题还是回归问题。

    • 在二进制分类模型中,使用对数损失,非常像逻辑回归。

    • 回归模型中,使用平方损失(渐变是当前输出减去目标)。

  4. 使用示例拟合弱 学习器,使用刚定义为目标函数的渐变。

  5. 将该弱学习器添加到具有学习速率所指示的强度的系综,如果需要,请转到步骤 2。

    在此实现中,弱学习器是基于步骤 3 中计算的渐变,最小二方回归树。 这些树具有以下限制:

    • 它们经过培训可具有最大数量的叶。

    • 每个叶具有防止过度拟合的最小数量的示例。

    • 每个决策节点是一个与特定阈值进行对比的特征。 如果该特征小于或等于该阈值,它将沿一个路径行进,如果该特征大于该阈值,它将沿另一个路径行进。

    • 每个叶节点都是一个常量值。

  6. 树构建算法贪婪选择在步骤3中计算的渐变时,分割最大程度地降低平方损失的特征和阈值。 拆分的选择受限于每个叶的最小定型示例数。

    此算法会反复拆分,直到达到最大叶数,或直到没有有效的拆分。

模块参数

名称 范围 类型 默认 说明
每个树的最大叶数 >=1 Integer 20 指定每个树允许的最大叶数
每个叶节点的最小样本数 >=1 Integer 10 指定构成一个叶所需的最小用例数
学习速率 [double.Epsilon;1.0] Float 0.2 指定初始学习速率
构造的树数 >=1 Integer 100 指定训练期间可以创建的最大树数
随机数种子 任意 Integer 键入一个值来设置模型使用的随机数生成器种子。 默认留空。
允许未知的分类级别 任意 布尔 True 如果为 True,则为每个分类列创建一个附加级别。 测试数据集中不可用于定型数据集的任何级别都会映射到此附加级别。

输出

名称 类型 说明
未训练的模型 ILearner 接口 未训练的二元分类模型

另请参阅

分类
提升决策树回归
A-Z 模块列表