XGB_REGRESSOR

训练 XGBoost 模型以对输入关系执行回归。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

XGB_REGRESSOR ('model-name', 'input-relation', 'response-column', 'predictor-columns'
        [ USING PARAMETERS
              [ exclude_columns = 'excluded-columns' ]
              [, max_ntree = max-trees ]
              [, max_depth = max-depth ]
              [, objective = 'optimization-strategy' ]
              [, learning_rate = learning-rate ]
              [, min_split_loss = minimum ]
              [, weight_reg = regularization ]
              [, nbins = num-bins ]
              [, sampling_size = fraction-of-rows ]
              [, col_sample_by_tree = sample-ratio-per-tree ]
              [, col_sample_by_node = sample-ratio-per-node ]
        ] )

参数

model-name

模型的名称(不区分大小写)。

input-relation
包含训练样本的表或视图。 如果输入关系在 Hive 中定义,请使用 SYNC_WITH_HCATALOG_SCHEMA 以同步 hcatalog 架构,然后运行机器学习功能。
response-column
INTEGER 或 FLOAT 类型的输入列,用来表示因变量或结果。
predictor-columns
输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 列的数据类型必须为 CHAR、VARCHAR、BOOL、INT 或 FLOAT。

CHAR、VARCHAR 和 BOOL 类型的列视为分类特征;所有其他类型的列则视为数字特征。

Vertica XGBoost 和随机森林算法为分类列 (BOOL/VARCHAR) 提供原生支持。仅需将分类列作为预测工具传递给模型,算法就会自动将这些列视为分类列,且不会尝试以与数值列相同的方式将它们拆分为多个二进制文件;Vertica 将这些列视为真正的分类值,而不是简单地将它们转换为底层的连续值。

参数

exclude_columns

input-columns 中要排除在处理范围之外的列名的逗号分隔列表。

max_ntree
[1,1000] 区间内的整数,用来设置要创建的树的最大个数。

默认值: 10

max_depth
[1,20] 区间内的整数,用来指定每个树的最大深度。

默认值: 6

objective
用来以迭代方式改进模型的目标/损失函数。目前,'squarederror' 是唯一的选项。

默认值: 'squarederror'

split_proposal_method
指定近似拆分策略,为以下几项之一:
  • global:/*describe */

  • local: /describe/

默认值: global

learning_rate
(0,1] 区间内的浮点数,用来指定每个树的预测权重。设置此参数可以减少每个树所造成的的影响,从而防止早期树以牺牲后期树的贡献为代价独占改进量。

默认值: 0.3

min_split_loss
[0,1000] 区间内的浮点数,用来指定为了避免修剪模型的目标函数值而必须针对该值实现的最小改进量。

如果设置为 0 或省略,则不设置最小值。在这种情况下,根据正或负目标函数值修剪树。

默认值: 0.0(禁用)

weight_reg
[0,1000] 区间内的浮点数,用来指定应用于分类树叶权重的正则化项。设置的值越大,权重越稀疏或越平滑,这有助于防止过度拟合。

默认值: 1.0

nbins
(1,1000] 区间内的整数,用来指定要用于在每列中查找拆分的 bin 数。bin 越多,运行时间越长,但粒度更细,拆分效果越好。

默认值: 32

sampling_size
(0,1] 区间内的浮点数,用来指定要在每次训练迭代中使用的行的比例。

值 1 表示使用所有行。

默认值: 1.0

col_sample_by_tree
(0,1] 区间内的浮点数,指定在构建每个树时随机选择的列(特征)的比例。

值 1 表示使用所有列。

col_sample_by 如果指定多个参数,则参数彼此上下“堆叠”。即:假如有 24 列,对于 col_sample_by_tree=0.5col_sample_by_node=0.5col_sample_by_tree 将采样 12 列。这样将可用的未采样列池减少到 12。 col_sample_by_node 然后对剩余池的一半进行采样,因此每个节点采样 6 列。

此算法始终对至少一列进行采样。

默认值: 1

col_sample_by_node
(0,1] 区间内的浮点数,指定在评估每个拆分时随机选择的列(特征)的比例。

值 1 表示使用所有列。

col_sample_by 如果指定多个参数,则参数彼此上下“堆叠”。即:假如有 24 列,对于 col_sample_by_tree=0.5col_sample_by_node=0.5col_sample_by_tree 将采样 12 列。这样将可用的未采样列池减少到 12。 col_sample_by_node 然后对剩余池的一半进行采样,因此每个节点采样 6 列。

此算法始终对至少一列进行采样。

默认值: 1

示例

请参阅用于回归的 XGBoost