xgboost

本文详细介绍了XGBoost的核心概念,包括其作为boosting算法的特性、损失函数、评估指标和参数调整。损失函数涵盖二分类逻辑回归和多分类问题,评估指标包括RMSE和错误率。文章还探讨了XGBoost如何处理节点划分、缺失值以及优化策略,如L1和L2正则化。此外,列举了关键参数如学习率、alpha、lambda、gamma等,以及如何通过近似算法提高效率。

1 介绍xgboost

1.1

xgboost是boosting算法的一种,是多个表现一般的学习器结合成的强分类器。

在目标函数上,增加了结构风险,也就是正则化项,L1和L2正则,L1是树叶子节点个数,L2是叶子节点打分的平方

在目标函数的优化上,采用二阶泰勒展开,使用了二阶导数,然后令偏导等于0,于是就可以计算出每一个叶子节点的预测分数

以及最小损失

1.2 损失函数:

二分类逻辑回归

多分类softmax

每次迭代的模型:gbtree树模型CART,gblinear线性模型,linear booster很少用到

1.3评估指标:

回归:rmse 均方根误差

分类:错误率,1-准确率

1.4 参数

通用参数:

  • 选择线性模型还是树模型
  • silent:训练的过程是否输出信息
  • nthread线程数

模型参数:(树模型的参数)

  • 学习率
  • alpha: L1前的系数(在公式中没有看到,只看到γT)
  • lambda:L2前的系数
  • gamma: 阈值,节点分裂所需的最小损失函数下降值
  • min_child_weight:叶子节点样本最小权重和,和GBM的 min_child_leaf 参数类似,但不完全一样。XGBoost的这个参数是最小样本权重的和,而GBM参数是最小样本总数,可以避免过拟合
  • subsample:样本采样,

    用于训练模型的子样本占整个样本集合的比例,这能够防止过拟合

  • colsample_bytree:列采样,选择用来训练决策树所用的特征。subsample,colsample_bytree就是所说的借用随机森林的做法,样本随机抽样,对特征抽样</

XGBoost(eXtreme Gradient Boosting)是一种高效的梯度提升库,在机器学习领域应用广泛。 ### 原理 XGBoost是Gradient Boosting算法的一种高效实现,可对比GBDT模型来理解其核心差异 [^1]。它通过迭代地训练一系列弱类器(通常是决策树),并将它们组合成一个强类器。在每一轮迭代中,XGBoost会拟合前一轮模型的残差,从而逐步减小预测误差。 ### 使用方法 #### 库参数了解 要熟练使用XGBoost库,需了解其原理和API参数。通用参数包括 `booster`(基类器的模型,如 `gbtree` 和 `gbliner`)、`nthread`(线程数)等;`booster` 参数(以 `gbtree` 提升树为例)包含 `learning_rate`(梯度下降的学习率,一般为0.01 - 0.2)、`min_child_weight`(最小叶子节点样本权重和,用于避免过拟合,一般为1)等;学习目标函数参数有 `objective`(指定类回归问题,如 `binary:logistic`)、`eval_metric`(评价指标)等 [^2]。 #### 示例代码 ```python import xgboost as xgb from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split # 加载数据集 boston = load_boston() X = boston.data y = boston.target # 划训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建XGBRegressor对象 model = xgb.XGBRegressor(max_depth=3, learning_rate=0.1, n_estimators=100) # 训练模型 model.fit(X_train, y_train) # 进行预测 y_pred = model.predict(X_test) ``` #### 类别特征处理 原生XGBoost对类别特征需手动做one - hot编码,解决方案是升级到XGBoost 1.5+,使用 `enable_categorical=True` [^4]。 ### 应用场景 XGBoost适用于各种类和回归问题,尤其在数据挖掘、机器学习竞赛等领域表现出色,例如: - 金融领域的风险评估、信贷违约预测。 - 医疗领域的疾病诊断、病情预测。 - 电商领域的用户购买行为预测、商品推荐等。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值