XGBoost回归
算法介绍
XGBRegressor是基于GBDT算法的一种回归模型,主要特点是结合了树模型和梯度提升技术,以获得具有高准确性和高训练效率的预测模型。它采用决策树作为基本分类器,并仔细选择用于改进模型性能的目标函数。
使用场景
- 数据样本数量较小,特征空间较大;
- 样本具有缺失值、异常值等噪声;
- 特征之间存在高度非线性关系或交互作用;
- 需要进行特征选择和特征重要性排名。
- 优势介绍
- 准确性高:相对于传统算法,XGBoost 在许多数据集上都能够获得更好的预测性能。
- 扩展性强:XGBoost 支持在分布式环境中进行并行计算,在大规模的数据集上处理速度较快且具备可扩展性。
- 可解释性强:XGBoost 可以通过特征重要性评分等方法提供有关模型如何作出决策的额外信息。
- 鲁棒性强:XGBoost 对异常值和缺失值等噪声具有较强的容忍度。
- 劣势介绍
- 超参数调整比较困难:XGBoost 具有许多可调的超参数,而其最佳取值通常不容易确定,需要使用交叉验证等技术进行调优和选择合适的参数组合。
- 运行时间较长:由于 XGBoost 采用的是梯度 Boosting 决策树算法,因此需要构建大量的决策树。当树的数量或深度过大时,可能会导致训练和预测时的运行时间较长。
- 不易处理高维稀疏数据:当特征维度非常高时,例如在文本分类问题中,由于大部分特征取值为0,所以需要采用一些特殊技术进行处理。
参数介绍
仅支持通过可视化方式,配置读取该组件参数,参数详情如下表所示:
页签 | 参数 | 参数名称 | 是否必选 | 参数描述 | 默认值 |
---|---|---|---|---|---|
数据源 | 表名 | inputTable | 是 | 数据表 | 无 |
默认参数 | 选择特征标签列 | labelColName | 是 | 输入表中选择标签列名类型。 | 无 |
模型参数 | 训练轮数 | n_estimators | 是 | 提升树的数量,即训练轮数。 | 100 |
模型参数 | 树的最大深度 | max_depth | 是 | 树的最大深度。 | 30 |
模型参数 | 学习率 | learning_rate | 是 | 学习率。 | 0.01 |
调优参数 | 学习目标及其损失函数 | objective | 是 | 学习目标及其损失函数包括reg:squaredlogerror和reg:logistic。 | reg:squaredlogerror |
调优参数 | 弱评估器 | booster | 是 | 弱评估器包括gbtree、gblinear、dart。 | gbtree |
调优参数 | 计算特征重要性依据 | importance_type | 是 | 计算特征重要性的依据,主要包括gain、weight、cover、total_gain、total_cover。 | gain |
调优参数 | 构建树采用的算法 | tree_method | 是 | 构建树采用的算法包括auto、exact、approx、hist、gpu_hist。 | auto |
- 推荐参数值
- n_estimators(默认为100):弱学习器的数量,即决策树的个数,它是提高模型性能的关键参数之一。推荐值取决于训练数据集的规模和复杂程度,通常在 100 到 1000 之间选择,可以通过 GridSearchCV 或 RandomizedSearchCV 等方法进行自动化调参。
- max_depth(默认为6):决策树的最大深度,用于控制树的结构以避免过拟合。建议将其设置为 [3, 10] 区间内的较小整数,根据数据集的复杂度适当调整。
- learning_rate(默认为0.1):也称为 step_size,表示每棵树贡献的系数,控制了每一步的权重变化。较大的值可以加速收敛,但可能会导致过拟合或不稳定性,建议取值在 [0, 1] 区间内,通常设置在 0.01 到 0.2 之间。
- 调参建议
- 选择一个适当的学习率(learning rate):学习率会影响到每棵树对结果的影响程度,较大的学习率可以让模型快速收敛,但也容易造成过拟合。通常情况下,初始值为0.1,可以通过调整而达到更好的性能。建议采用较小的学习率(例如0.01或0.005),然后逐步增大,直到损失函数开始出现急剧的下降。
- 增加决策树数量(n_estimators):XGBoost的优势之一就是它可以处理大量的决策树,并结合多个模型来进行优化。因此,通过增加树的数量,可以提高模型的准确性。虽然树的数量越多,模型表现越好,但在实践中,经验法则是设置最佳迭代次数,其值通常取决于数据集的大小和复杂度等因素。
- 调整单个决策树的深度(max_depth):深度控制着每个决策树所能够捕捉的数据集的变化。增加决策树的深度可以提高模型的准确性,但也会增加过拟合的风险。因此,建议先对max_depth设置较小的值(例如3-10),然后通过网格搜索或随机搜索等技术进行多次调整。