XGBoost回归(XGBoostRegressor)使用文档
组件名称 | XGBoost回归(XGBoostRegressor) | ||
---|---|---|---|
工具集 | 机器学习 | ||
组件作者 | 雪浪云-燕青 | ||
文档版本 | 1.0 | ||
功能 | XGBoost回归(XGBoostRegressor)算法 | ||
镜像名称 | ml_components:3 | ||
开发语言 | Python |
组件原理
GBDT(Gradient Boosting Decision Tree) ,是一种广泛应用于回归、分类、排序的机器学习算法。从定义上对GBDT拆解,就是GB和DT两部分。
- DT, 决策树(Decision Tree),决策树是易于可视化、可解释性相对较强的算法,GBDT的基学习器具体为CART回归树。如图,从结构上来看,CART回归树是一个二叉树,其非叶节点对应着特征的最优切分点,每个叶节点对应着数据空间中的一片区域,落入此区域的x的预测值为该叶子节点的值。比如图中预测一个人是否喜欢玩电脑游戏, 如果年龄小于15且是男性,则预测值是2 。需要说明的是,GBDT不论做分类还是回归,这里用到的都是CART回归树。对于回归问题,预测分数可以直接作为目标值,对于分类问题,需要进一步将分数映射成概率值,比如选用sigmoid进行映射。因为GBDT每一轮的训练都是在上一轮训练的残差基础之上进行拟合,所以最终的预测结果是每一轮的结果相加,那么也就要求相加的结果是有意义的,如果用分类树,结果:是+否+否,就没有意义了,而回归树的数值相加是可行的。
- GB,梯度提升(Gradient Boosting)。首先需要了解 boosting,作为ensemble learning的一种,boosting 是一种和 bagging很类似的技术,两者都是使用多个弱分类器来得到一个强的分类器,(所谓弱也没有特别弱,只是组合起来会比较强)。具体来说,bagging在训练过程中,各弱分类器之间无强依赖,可以并行训练。而boosting不同的弱学习器是通过串行训练得到的,在迭代的每一步所构建的弱学习器都是为了弥补已有学习的不足,区别在于不同的boosting方法采用何种的方式来弥补这个不足。比如Adaboost,采用的是增加上一轮学习错误的样本权重的策略,它的每次迭代后都会提高被误分样本的分布。单决策树算法简单易懂可解释性强,但过拟合风险很大应用场景有限。
XGBoost--X (Extreme) GBoosted, 本质上来说还是GBDT框架,但是力争把速度和效率发挥到极致,且在目标函数、求解方法、建树过程、系统实现等方面都做了一些优化。
XGB的目标函数由两部分组成:损失函数和正则化项。 其中损失函数是用来评估模型的预测值f(x)与真实值Y的差距,衡量的是模型的拟合误差 。而加入正则化项是它与GBDT在目标函数上的区别,正则化项来限制树模型的复杂度,防止过拟合。直接将正则项加入到目标函数中,每一轮迭代均在数学层面上进行了正则化,效果与可操作性大大提升。正则化项由两部分组成:叶子结点个数和叶节点的分数。叶节点个数越多,树的结构越复杂,过拟合风险也越高,这个很容易理解。而叶节点分数的形式,相当于在做L2正则,要求叶节点数值尽量不极端,因为叶节点分数过大的话留给后面的学习空间就少了。
与GBDT相比,XGB使用二阶泰勒展开,这样做的好处是:
- 模块化上,支持自定义损失函数,仅要求损失函数二阶可导即可
- 算法层面上,利用二阶导信息本身就能让梯度收敛更快更准
输入桩
支持单个csv文件输入。
输入端子1
- 端口名称:训练数据
- 输入类型:Csv文件
- 功能描述: 输入用于训练的数据
输出桩
支持sklearn模型输出。
输出端子1
- 端口名称:输出模型
- 输出类型:sklearn模型
- 功能描述: 输出训练好的模型用于预测
参数配置
max_depth
- 功能描述:树的最大深度.
- 必选参数:是
- 默认值:3
learning_rate增强学习率
- 功能描述:增强学习率
- 必选参数:是
- 默认值:0.1
n_estimators
- 功能描述:树的数量
- 必选参数:是
- 默认值:100
verbosity
- 功能描述:verbose的程度。有效值为0(静默)- 3(调试)
- 必选参数:是
- 默认值:0
booster
- 功能描述:指定要使用的增强器: gbtree, gblinear or dart.
- 必选参数:是
- 默认值:gbtree
n_jobs
- 功能描述:任务并行数
- 必选参数:是
- 默认值:1
gamma
- 功能描述:在树的叶节点上进行进一步分区所需的最小损失减少。
- 必选参数:是
- 默认值:0
min_child_weight
- 功能描述: 子节点所需的最小实例权重总和(hessian).
- 必选参数:是
- 默认值:1
max_delta_step
- 功能描述:允许的每棵树权重估计的最大增量步长。
- 必选参数:是
- 默认值:0
subsample
- 功能描述:训练实例的子样本比率
- 必选参数:是
- 默认值:1
colsample_bytree
- 功能描述: 构建每棵树时列的子样本比率
- 必选参数:是
- 默认值:1
colsample_bylevel
- 功能描述:每个层级的列的子样本比率。
- 必选参数:是
- 默认值:1
reg_alpha
- 功能描述:权重的L1正则项
- 必选参数:是
- 默认值:0
reg_lambda
- 功能描述:权重的L2正则项
- 必选参数:是
- 默认值:1
scale_pos_weight
- 功能描述: 正负权重的平衡。
- 必选参数:否
- 默认值:(无)
base_score
- 功能描述:所有实例的初始预测分数,全局偏差.
- 必选参数:是
- 默认值:0.5
seed
- 功能描述:每次迭代期间构建的并行树的数量
- 必选参数:是
- 默认值:1
missing
- 功能描述:数据中需要显示为缺失值的值。如果没有,则默认为np.nan
- 必选参数:否
- 默认值:(无)
需要训练
- 功能描述:该模型是否需要训练,默认为需要训练。
- 必选参数:是
- 默认值:true
特征字段
- 功能描述:特征字段
- 必选参数:是
- 默认值:(无)
识别字段
- 功能描述:识别字段
- 必选参数:是
- 默认值:(无)
使用方法
- 将组件拖入到项目中
- 与前一个组件输出的端口连接(必须是csv类型)
- 点击运行该节点
测试用例
- 模板
- 右面板配置
- 查看结果