梯度提升决策树 (Gradient Boosting Decision Trees) 二分类,是经典的基于梯度提升(Gradient Boosting)的有监督学习模型,可以用来解决二分类问题。
支持计算资源
支持的计算引擎为MaxCompute。
算法简介
梯度提升决策树 (Gradient Boosting Decision Trees) 二分类,是经典的基于梯度提升(Gradient Boosting)的有监督学习模型,可以用来解决二分类问题。
算法原理
梯度提升决策树模型构建了一个由多棵决策树组成的组合模型。每一棵决策树对应一个弱学习器,将这些弱学习器组合在一起,可以达到比较好的分类或回归效果。
梯度提升的基本递推结构为:
其中,通常为一棵 CART 决策树,
为决策树的参数,
为步长。第m棵决策树在前m-1棵决策树的基础上对目标函数进行优化。最终得到包含若干棵决策树的模型。
算法使用
该算法实现中包含了XGBoost提出的二阶梯度优化目标以及LightGBM的直方图近似计算。对于一些常见的二分类问题,都可以使用这个算法解决,模型拥有较好的性能,且拥有不错的可解释性。
该算法支持稀疏向量格式与多列特征格式的输入。输入为稀疏向量格式时,仅能选择1个String类型的列,每条数据是以单个空格为分隔符的键值对,键值之间用冒号分隔,例如:1:0.3 3:0.9
。输入为多列特征时,可以选择多个Double、Bigint和String的列,包括了数值型特征(numerical feature)与类别型特征(categorical feature)。对于数值型特征,算法会对数据进行分箱操作;对于类别型特征,不需要提前进行OneHot预处理,算法会使用 many-vs-many 的分裂策略。
该算法要求二分类的类别必须为0和1。
当该组件与GBDT二分类预测V2组件成对执行完成后,训练得到的模型支持部署为在线服务,详细操作可以参考Pipeline部署在线服务。
可视化配置参数
输入桩配置
输入桩(从左到右) | 限制数据类型 | 建议上游组件 | 是否必选 |
输入数据 | 无 | 是 |
组件参数
页签 | 参数 | 是否必选 | 描述 | 默认值 |
字段设置 | 是否为稀疏向量格式 | 否 | 输入表中用于训练的特征列是否为稀疏向量格式。在稀疏向量格式中,每条数据是以单个空格为分隔符的键值对,键值之间用冒号分隔,例如: | 否 |
选择特征列 | 是 | 输入表中用于训练的特征列名数组。非稀疏向量格式时,支持类型double/bigint/string;稀疏向量格式时,支持string类型,并且只能选择1列。 | 无 | |
选择类别型特征列 | 否 | 非稀疏向量格式,选择作为类别型特征(categorical feature)处理的列,其他列作为数值型特征处理。 | 无 | |
选择标签列 | 是 | 输入表中用于训练的标签列名。 | 无 | |
选择权重列 | 否 | 输入表中用于训练的权重列名。 | 无 | |
参数设置 | 树的数目 | 否 | 模型中树的棵数。 | 1 |
最大叶节点数 | 否 | 训练每棵树时,最多包含的叶节点个数。 | 32 | |
学习速率 | 否 | 学习率。 | 0.05 | |
训练样本比例 | 否 | 训练每棵树时,样本的采样比例,范围为 (0, 1]。 | 0.6 | |
训练特征比例 | 否 | 训练每棵树时,特征的采样比例,范围为 (0, 1]。 | 0.6 | |
叶节点最少样本数 | 否 | 训练每个树时,各个叶子节点至少包含的样本数量。 | 500 | |
最大分箱个数 | 否 | 连续特征进行离散分箱时的最大分箱个数。该值越大,进行节点分裂时越精确,但计算代价越大。 | 32 | |
最多类别数 | 否 | 类别型特征最多允许的类别个数:对于一个类别型特征,所有出现的值按频率从高到低排序后,序位多于该值的类别将合并到一个桶中。该值越大,进行节点分裂时越精确,但也更容易过拟合,计算代价也越大。 | 1024 | |
特征数量 | 否 | 稀疏特征时,填写最大特征ID+1;不填写时需要扫描一遍数据计算。 | 根据输入数据自动计算 | |
全局偏置项 | 否 | 初始预测为正样本的概率值;不填写时需要扫描一遍数据进行预估。 | 根据输入数据自动计算 | |
随机数产生器种子 | 否 | 随机种子,用于采样。 | 0 | |
执行调优 | 底层作业使用的计算资源 | 否 | 底层作业使用的计算资源:
| MaxCompute |
节点数 | 否 | 执行作业的节点数。 | 根据输入数据自动计算 | |
每节点内存 | 否 | 节点所使用的内存数,单位为MB。 | 根据输入数据自动计算 | |
线程数 | 否 | 使用多线程加速计算,但成本也更高;一般情况下,随着线程数的增加,性能会先上升后下降;请谨慎调整线程数。 | 1 |
输出桩说明
输出桩 | 存储位置 | 下游建议组件 | 数据类型 |
模型输出 | 不需要配置 | MaxCompute表 | |
特征重要性输出 | 不需要配置 | 无 | MaxCompute表 |
与PS-SMART二分类对比
如果您之前使用PS-SMART二分类训练组件遇到了一些问题不容易解决,那么可以尝试使用GBDT二分类V2组件。两个组件当前的功能和参数支持情况,见下表:
PS-SMART二分类参数 | 对应本组件的参数 |
是否稀疏格式 | 是否为稀疏向量格式 |
选择特征列 | 选择特征列 |
选择标签列 | 选择标签列 |
选择权重列 | 选择权重列 |
评估指标类型 | 不适用,默认为 AUC 指标,可以在 worker 日志中查看。 |
树数量 | 树的数目 |
树最大深度 | 最大叶节点数:换算公式为: |
数据采样比例 | 训练样本比例 |
特征采样比例 | 训练特征比例 |
L1惩罚项系数 | 暂不支持。 |
L2惩罚项系数 | 暂不支持。 |
学习速率 | 学习速率 |
近似Sketch精度 | 最大分箱个数:换算公式为: |
最小分裂损失变化 | 叶节点最少样本数:两者不能直接换算,但都可用于控制过拟合。 |
特征数量 | 特征数量 |
全局偏置项 | 全局偏置项 |
随机数产生器种子 | 随机数产生器种子 |
特征重要性类型 | 不适用,当前默认为信息增益。 |
计算核心数 | 节点数:不能直接使用相同数值,推荐先试用系统自动分配,然后进行细调。 |
每个核内存大小 | 每节点内存:不能直接使用相同数值,推荐先试用系统自动分配,然后进行细调。 |