XGBoost(eXtreme Gradient Boosting)

XGBoost(eXtreme Gradient Boosting)极致梯度提升,是一种基于GBDT的算法或者说工程实现。

XGBoost的基本思想和GBDT相同,但是做了一些优化,比如二阶导数使损失函数更精准;正则项避免树过拟合;Block存储可以并行计算等。

XGBoost具有高效、灵活和轻便的特点,在数据挖掘、推荐系统等领域得到广泛的应用。

GBDT

梯度提升决策树(Gradient Boosting Decision Tree,GBDT)是一种基于boosting集成思想的加法模型,训练时采用前向分布算法进行贪婪的学习,每次迭代都学习一棵CART树来拟合之前 t-1 棵树的预测结果与训练样本真实值的残差
梯度提升决策树算法(GBDT)如下:

第一步:初始化弱学习器
第二步:迭代训练
第三步:得到最终学习器

函数的近似计算
f(x)≈ f(x0)+ f ’ (x0)(x - x0)
适用于:f(x0),f ’ (x0)易求
本质:用x的线性函数f(x0)+ f ’ (x0)(x - x0)来近似表达函数f(x)

泰勒公式
一阶展开式同上
二阶展开式精度更高,误差更小

正则
L1正则化:根据权重的绝对值的总和来惩罚权重。
L2正则化:根据权重的平方来惩罚权重。

XGBoost原理

XGBoost(eXtreme Gradient Boosting)极致梯度提升,是基于GBDT的一种算法。

2016年,陈天奇在论文《 XGBoost:A Scalable Tree Boosting System》中正式提出。

XGBoost的基本思想和GBDT相同,但XGBoost进行许多优化:

  • 利用二阶泰勒公式展开,优化损失函数,提高计算精确度
  • 利用正则项。简化模型,避免过拟合
  • 采用Blocks存储结构。可以进行并行计算

XGBoost目标函数推导
XGBoost的目标函数由损失函数正则化项两部分组成。
在这里插入图片描述
用GBDT梯度提升树表达方式XGBoost。

接下来,三个步骤优化XGBoost目标函数。

第一步:二阶泰勒展开,去除常数项,优化损失函数项;
第二步:正则化项展开,去除常数项,优化正则化项;
第三步:合并一次项系数、二次项系数,得到最终目标函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

XGBoost目标函数解,构建形如一元二次方程形式,求最优值
在这里插入图片描述
在这里插入图片描述

XGBoost应用

XGBoost库是XGBoost算法的一种实现。

XGBoost是一个优化的分布式梯度提升库,被设计为高效、灵活和轻便。

GitHub:[https://github.com/tqchen/xgboost]
(https://github.com/tqchen/xgboost)
XGBoost一个很重要应用就是进行数据特征挖掘分析

总结

1、XGBoost的优缺点
在这里插入图片描述
2、XGBoost VS GBDT
在这里插入图片描述
在这里插入图片描述

### XGBoost模型介绍 XGBoostExtreme Gradient Boosting)是一种基于决策树的集成学习方法,属于梯度提升框架的一种高效实现[^1]。该算法因其高效的计算速度、优秀的预测性能以及灵活性而受到广泛关注,在许多机器学习比赛中取得了优异的成绩。 #### 主要特点 - **正则化项**:引入L1和L2正则化减少过拟合现象。 - **并行处理能力**:支持多线程训练加速模型构建过程。 - **自定义损失函数**:允许用户根据具体应用场景设计不同的目标函数。 - **缺失值处理机制**:内置对含有缺失特征的数据集的支持。 ### 使用方法 为了更好地展示如何应用XGBoost解决实际问题,这里给出一段简单的Python代码示例: ```python import xgboost as xgb from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error # 加载波士顿房价数据集作为例子 data = load_boston() X, y = data.data, data.target # 划分训练集与测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # 将数据转换成DMatrix格式,这是XGBoost特有的输入形式 dtrain = xgb.DMatrix(X_train, label=y_train) dtest = xgb.DMatrix(X_test, label=y_test) # 设置参数字典 params = { 'objective': 'reg:squarederror', # 回归任务使用的平方误差损失 'eval_metric': ['rmse'], # 测试时评估指标为均方根误差 } # 训练模型 model = xgb.train(params=params, dtrain=dtrain, num_boost_round=100) # 进行100轮迭代 # 预测 preds = model.predict(dtest) # 输出结果 print(f'Mean Squared Error: {mean_squared_error(y_test, preds)}') ``` 这段程序展示了从加载数据到最终输出预测结果的一系列操作流程,其中涉及到的关键步骤包括但不限于数据预处理、模型配置、训练及评价等环节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值