快速林分位回归
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
创建分位回归模型
模块概述
本文介绍如何使用机器学习 Studio 中的 " Fast 林分位回归" 模块 (经典) ,来创建一个回归模型,以便预测指定数目的分位数的值。
如果你想要了解有关预测值分布的详细信息,而不是获取单个平均预测值,则分位回归会很有用。 此方法有很多应用,包括:
预测价格
评估学生表现,或应用生长曲线表来评估儿童发育情况
在变量之间仅存在弱关系的情况下,发现预测性的关系
此回归算法是一种监督式学习方法,这意味着它需要一个已标记的数据集(其中包含标签列)。 因为它是回归算法,所以标签列必须只包含数字值。
有关分位数回归的详细信息
有许多不同类型的回归。 从最基本的意义上来讲,回归是指将模型拟合到一个用数值矢量表示的目标。 然而,统计学家一直在研究更加高级的回归方法。
分位数的最简单定义是一个用于将一组数据分割成大小相等的组的值;因此,分位数值标记了组之间的边界。 从统计学意义上来说,分位数是按固定间隔从随机变量的累积分布函数 (CDF) 的逆函数提取的值。
而线性回归模型尝试使用单个估计值(平均值)来预测数值变量的值,有时你需要预测目标变量的范围或整个分布。 为此,已开发了贝叶斯回归和分位数回归等方法。
分位数回归有助于了解预测值的分布情况。 基于树的分位回归模型(例如本模块中使用的模型)有一些额外的优点,因此可用于预测非参数化分布。
如需其他的实现详情和资源,请参阅技术说明部分。
如何配置 Fast_Forest 分位回归
您可以使用此模块配置回归模型的属性,然后使用其中一个 定型模块训练该模型。
无论是提供一组固定的参数还是设置参数扫描,配置步骤都有很大的 dependng。
使用固定参数创建分位回归模型
假设您知道要如何配置模型,则可以提供一组特定值作为参数。 在训练模型时,请使用训练模型。
将 Fast 林分位回归 模块添加到 Studio 中的试验 (经典) 。
将 " 创建训练人员模式 " 选项设置为 单个参数。
对于 " 树数",请键入可在系综中创建的最大树数。 创建更多的树通常可以提高准确度,但同时会增加训练时间。
对于 " 叶号码",键入可以在任何树中创建的叶节点或终端节点的最大数目。
对于 形成叶所需的训练实例的最小数目 ,请指定在树中创建任何终端节点 (叶) 所需的最小实例数。
通过增加此值,可以增加创建新规则的阈值。 例如,使用默认值 1 时,即使是单个事例也可以导致创建新规则。 如果将该值增加到5,则定型数据必须至少包含5个满足相同条件的事例
对于 " 装袋小数",请指定一个介于0和1之间的数字,表示生成每组分位数时使用的样本的小数部分。 样本是随机选择的,并且带有替换部分。
对于 " 功能分数",请键入一个介于0和1之间的数字,该数字指示生成任何特定树时要使用的总功能的小数部分。 始终随机选择功能。
对于 " 拆分分数",请键入一个介于0和1之间的数字,该数字表示要在每个树拆分中使用的功能的小数部分。 始终随机选择使用的功能。
对于 分位 "采样计数",请键入在估计分位数时要计算的事例数。
对于要 估计的分位数,请键入一个逗号分隔列表,其中列出了要使模型定型和创建预测的分位数。
例如,如果要生成一个模型以便对四分位数进行估计,则应键入
0.25, 0.5, 0.75
。(可选)对于“随机数种子”,键入一个值以设定模型所用随机数生成器的种子。 默认值为 0,这意味着选择随机种子。
如果需要在针对相同数据执行的各次连续运行之中重新生成结果,应提供一个值。
选择 " 允许未知分类级别 " 选项,为未知值创建组。
如果取消选中此选项,该模型只会接受训练数据中包含的值。
如果选择此选项,则该模型对于已知值可能不太准确,但它可以为新 (未知) 值提供更好的预测。
连接定型数据集,选择单个标签列并连接定型模型。
运行试验。
使用参数扫描创建分位回归模型
如果不确定模型的最佳参数,可以配置参数扫描,并提供一系列值作为参数。 在训练模型时,请使用 调谐模型超参数 模块。
将 Fast 林分位回归 模块添加到 Studio 中的试验 (经典) 。
将“创建训练器模式”选项设置为“参数范围”。
如果你不确定最佳参数,则建议使用参数扫描。 通过指定多个值并使用 " 微调模型超参数 " 模块来训练模型,可以找到数据的最佳参数集。
选择参数扫描后,对于每个可调整的属性,都可以设置单个值或多个值。 例如,你可能会决定修复树的数目,但会随机更改控制每个树构建方式的其他值。
如果键入单个值,则会在扫描的所有迭代中使用该值,即使其他值发生变化也是如此。
键入要使用的离散值的逗号分隔列表。 这些值与其他属性结合使用。
使用 范围生成器 可以定义连续值的范围。
在定型过程中, 微调模型超参数 模块会循环访问各个值组合以生成最佳模型。
对于每个 树的最大叶数,请键入每个树中允许的叶节点或终端节点的总数。
对于 构造的树数,请键入构造系综时要执行的迭代次数。 通过创建更多树,你可能获得更好的覆盖范围,但代价是增加了定型时间。
对于 每个叶节点的最小样本数,指示创建叶节点所需的事例数。
通过增加此值,可以增加创建新规则的阈值。 例如,使用默认值 1 时,即使是单个案例也可以导致创建新规则。 如果将值增加到 5,则训练数据将必须包含至少 5 个满足相同条件的案例。
在 "装袋" 的 " 范围" 部分中,键入生成每个分位数组时使用的样本的小数部分。 样本是随机选择的,并且带有替换部分。
每个分数应为介于0和1之间的数字。 使用逗号分隔多个分数。
在 " 功能分数范围" 中,键入要在生成每个分位数组时使用的总功能的小数部分。 随机选择功能。
每个分数应为介于0和1之间的数字;使用逗号分隔多个分数。
在 " 拆分分数的范围" 中,指定要在每组分位数中使用的一些功能。 使用的实际功能是随机选择的。
每个分数应为介于0和1之间的数字;使用逗号分隔多个分数。
在 用于估算分位数的示例计数中,指示在估计分位数时应计算多少个样本。 如果键入的数字大于可用样本数,则将使用所有示例。
在 " 所需的分位值" 中,键入一个逗号分隔列表,其中列出了要在其中定型模型的分位数。 例如,如果想要构建一个用于估算四分位数的模型,则应键入 "0.25,0.5,0.75
在 " 随机数种子" 中键入一个值,以设定模型使用的随机数生成器的种子。 种子的用途是重新生成重复的运行。
默认值为 0,这意味着选择随机种子。
选择“允许分类特征的未知值”选项可以为训练或验证集内的未知值创建一个组。
如果取消选择此选项,则模型只能接受训练数据中包含的值。
如果选择此选项,则该模型对于已知值可能不太准确,但它可以为新 (未知) 值提供更好的预测。
连接定型数据集,请选择 "标签" 列,并连接优化模型超参数模块。
运行试验。
结果
在训练完成后:
- 若要查看优化模型的最终超参数,请右键单击 调谐模型超参数 的输出,并选择 " 可视化"。
示例
有关如何使用此模块的示例,请参阅 Azure AI 库:
- 分位回归:演示如何使用自动价格数据集生成和解释分位回归模型。
技术说明
本部分包含实现详情、使用技巧和常见问题解答。
实现详细信息
机器学习中的 "快速林分位回归" 模块是使用决策树的随机林分位回归实现。 随机林有助于避免使用决策树时可能会出现的过度拟合。 决策树是二进制的树状流图表,在其中的每个内部节点处,用户可以根据输入的某个特性的值决定使用两个子节点中的哪一个来继续。
在每个叶节点中,将返回一个值。 在内部节点中,决策基于测试 "x ≤ v",其中 x 是输入样本中功能的值,v 是此功能的可能值之一。 回归树能够生成的函数都是分段式的常量函数。
在随机林中,通过使用装袋选择定型数据的随机样本和功能的子集,然后将决策树调整到数据的每个子集来创建系综的树。 与将所有树的输出进行平均的随机林算法不同,“快速林分位回归”会保留参数“分位样本计数”所指定的树中所有预测的标签并输出分布情况,因此用户可以查看给定实例的分位值。
相关研究
有关分位回归的详细信息,请参阅以下书籍和文章:
分位回归林。 Nicolai Meinshausen
http://jmlr.org/papers/volume7/meinshausen06a/meinshausen06a.pdf
随机林。 Leo Breiman。
模块参数
名称 | 类型 | 范围 | 可选 | 说明 | 默认 |
---|---|---|---|---|---|
创建训练器模式 | CreateLearnerMode | 列表:单个参数|参数范围 | 必选 | 单个参数 | 创建高级学习器选项 |
树数 | Integer | 模式:单个参数 | 100 | 指定要构造的树数 | |
叶数 | Integer | 模式:单个参数 | 20 | 指定每个树的最大叶数。 默认数目为 20 | |
形成叶所需的训练实例的最小数目 | Integer | 模式:单个参数 | 10 | 指示形成叶所需的训练实例的最小数目 | |
装填分数 | Float | 模式:单个参数 | 0.7 | 指定要为每个树使用的训练数据的分数 | |
功能分数 | Float | 模式:单个参数 | 0.7 | 指定要为每个树使用的特征分数(随机选择) | |
拆分分数 | Float | 模式:单个参数 | 0.7 | 指定要为每个拆分使用的特征分数(随机选择) | |
分位样本计数 | Integer | 最大值:2147483647 | 模式:单个参数 | 100 | 指定每个节点中用来评估分位数的实例数 |
要评估的分位数 | String | 模式:单个参数 | "0.25; 0.5; 0.75" | 指定要评估的分位数 | |
随机数种子 | Integer | 可选 | 提供模型使用的随机数生成器种子。 保留空白表示使用默认值。 | ||
允许未知的分类级别 | 布尔值 | 必须 | 是 | 如果为 true,则为每个分类列创建一个附加级别。 测试数据集中不可用于训练数据集的级别将映射到此附加级别。 | |
每个树的最大叶数 | ParameterRangeSettings | [16;128] | 模式:参数范围 | 16;32;64 | 指定每个树允许的最大叶数范围 |
构造的树数 | ParameterRangeSettings | [1;256] | 模式:参数范围 | 16;32;64 | 指定训练期间可以创建的最大树数范围 |
每个叶节点的最小样本数 | ParameterRangeSettings | [1;10] | 模式:参数范围 | 1;5;10 | 指定构成一个叶所需的最小用例数范围 |
装袋分数的范围 | ParameterRangeSettings | [0.25;1.0] | 模式:参数范围 | 0.25;0.5;0.75 | 指定要为每个树使用的训练数据的分数范围 |
特征分数的范围 | ParameterRangeSettings | [0.25;1.0] | 模式:参数范围 | 0.25;0.5;0.75 | 指定要为每个树使用的特征分数(随机选择)范围 |
拆分分数范围 | ParameterRangeSettings | [0.25;1.0] | 模式:参数范围 | 0.25;0.5;0.75 | 指定要为每个拆分使用的特征分数(随机选择)范围 |
用于评估分位数的样本计数 | Integer | 模式:参数范围 | 100 | 用于评估分位数的样本计数 | |
所需的分位数值 | String | 模式:参数范围 | "0.25;0.5;0.75" | 参数扫描期间需要使用的分位数值 |
Outputs
名称 | 类型 | 说明 |
---|---|---|
未训练的模型 | ILearner 接口 | 可连接到“训练常规模型”或“交叉验证模型”模块的未训练分位回归模型。 |