算法介绍
梯度提升决策树 (GBDT)
TCHouse-X 利用 LightGBM 框架实现的梯度提升决策树(GBDT)。它是一种基于决策树的集成学习算法。
该算法原理为:采用 Boosting(提升)策略,通过迭代地训练决策树来最小化损失函数。与传统GBDT不同,LightGBM 采用基于直方图的算法和带有深度限制的按叶子生长 (Leaf-wise) 策略。即每次从当前所有叶子节点中,选择分裂收益最大(损失减少最多)的节点进行分裂,而不是像传统算法那样对每一层所有节点进行分裂。这使得模型收敛速度更快,精度更高。
梯度提升回归树 (GBRT)
GBRT(Gradient Boosting Regression Tree)是GBDT在回归问题上的应用,后端同样基于 LightGBM 实现。
该算法原理为:通过多轮迭代,每轮训练一棵新的回归树来拟合前一轮模型的残差(即真实值与当前预测值的差)。最终的预测结果是所有树预测值的加权和。
LightGBM 通过直方图算法将连续的浮点特征值离散化为k个整数,构造直方图,从而大幅减少了计算分割点的时间复杂度。
算法参数介绍
公共入参
入参 | 类型 | 默认值 | 说明 |
num_leaves | INT | 31 | 基学习器(树)的最大叶子数,为正整数。 |
max_depth | INT | -1 | 基学习器最大深度: 不设限:设置为 <= 0 时,不对树深度进行硬性限制。 正值限制:若设定大于 0 的具体深度,建议配合调整 num_leaves,使其满足 num_leaves <= 2^max_depth,以防生长失衡。 |
learning_rate | FLOAT | 0.1 | 收敛步长:控制每棵基学习器对最终模型的贡献权重。 |
n_estimators | INT | 100 | 基学习器数量:指定模型中包含的弱学习器的总数,为正整数。 |
subsample_for_bin | INT | 200000 | 构建直方图分箱(bins)时用于采样的样本数,为正整数。 |
min_split_gain | FLOAT | 0.0 | 叶节点继续分裂所需的最小损失下降(增益)阈值。 |
min_child_weight | FLOAT | 1e-3 | 子节点(叶子)所需的最小样本权重和(Hessian)。 |
min_child_samples | INT | 20 | 子节点(叶子)所需的最小样本数,为正整数。 |
subsample | FLOAT | 1.0 | 训练样本的采样比例(行采样)。 |
subsample_freq | INT | 0 | 行采样频率;<=0 表示不启用。 |
colsample_bytree | FLOAT | 1.0 | 构建每棵树时的特征采样比例(列采样)。 |
reg_alpha | FLOAT | 0.0 | L1 正则项系数。 |
reg_lambda | FLOAT | 0.0 | L2 正则项系数。 |
random_state | INT | 42 | 随机种子,为非负整数。 |
GBDT 入参
入参 | 类型 | 默认值 | 说明(中文) |
objective | STRING | multiclass | 目标函数/学习任务,LightGBM 在训练中要优化的损失。GBDT 下可选:['binary','multiclass']。 |
num_class | INT | 10 | 类别数,为正整数。若 objective='binary',无需设置该参数。 |
GBRT 入参
入参 | 类型 | 默认值 | 说明 |
objective | STRING | regression | 目标函数/学习任务,LightGBM 在训练中要优化的损失。GBRT 下可选:['regression','regression_l1','huber','quantile','mape']。 |
alpha | FLOAT | 0.9 | 控制某些回归目标的损失不对称/鲁棒性:对 quantile 回归表示目标分位数(如 0.5 为中位数,0.9 更关注上尾);对 huber 表示从二次(L2)到线性(L1)区域的过渡点,用于提升对离群点的鲁棒性。取值 (0,1);仅当 objective ∈ ['quantile','huber'] 时生效。 |