Python机器学习之XGBoost从入门到实战(基本理论说明)

本文深入探讨Python中的机器学习库XGBoost,从基础理论出发,介绍其工作原理、优缺点,并通过实例展示如何使用XGBoost进行模型训练和调优,同时探讨了XGBoost在分布式环境下的应用。
摘要由CSDN通过智能技术生成
Xgboost从基础到实战

XGBoost:eXtreme Gradient Boosting
    * 应用机器学习领域的一个强有力的工具
    * Gradient Booting Machines(GBM)的优化表现,快速有效
        —深盟分布式机器学习开源平台(Distributed machine learning Community,DMLC)的分支
        —DMLC也开源流行的深度学习库mxnet
    * GBM:
        Machine:机器学习模型-对数据的产生规律建模
        Boosting Machines:弱学习器组合成强学习器/模型
        Gradient Booting Machines:根据梯度下降方式组合弱学习器

Machines:
    Machines:机器学习模型,建模数据产生规律--最小化目标函数
    目标函数通常包括两个部分:
        * 损失函数:与任务相关(选择和训练数据匹配的最好模型)
            ** 回归:残差平方
            ** 分类:0-1损失、logistic损失、合叶损失(SVM)
        *正则项:与模型复杂度有关(选择最简单的模型)
            L0、L1、L2正则项
            L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。L1在特征选择时候非常有用,而L2就只是一种规则化而已。
Boosting Machines
    * Boosting:价格弱学习器组合成强学习器
    * 弱学习器;比随机猜测性能好的学习器
    * 常用弱学习器:决策树/分类回归树
        决策树:每个叶子节点对应一个决策
        分类回归树:每个叶子节点有个预测分数(score),比决策树更加的灵活
    * Adaptive Boosting(AdaBoost):第一个Boosting算法,最初应用于人脸识别,现在这个工具基本上用于机器学习
        弱分类器:只有一个分裂的决策树
        对于当前分类器不能处理的样本,增加其权重
        不断的加入新的弱学习器,知道达到终止条件(强学习器:弱学习器的加权线性组合,权重与其正确率有关)
Gradient Boosting Machine(GBM)
    * Friedman将AdaBoost推广到一般Gradient Booting框架,得到Gradient Booting Machines(GBM):将Booting视作一个数值优化问题,采用类似梯度下降的方式优化求解
        也被称为stage-wise additive model:每次增加一个弱分类器到已有模型,已在模型中的弱学习器不在变化
        这种推广使得我们可以使用可微的损失函数,从而支持的任务从两类分类扩展到回归和多类分类问题。
XGBoost的特别之处:
    * 正则化:以“正则化提升(regularized booting )”著称
        -标准GBM的实现没有显式的正则化步骤
        -正则化对减少过拟合有帮助
    * 并行处理,相比GBM有了速度的飞跃
        -借助OpenMP,自动将单机CPU的多核进行并行计算
        -支持GPU加速
        -支持分布式
    * 高度的灵活性:允许用户自定义优化目标和评级标准
        -只需要损失函数的一阶导数和二阶导数
    * 剪枝
        -当新增分裂带来负增益时,GBM会停止分裂
        -XGBoost一直分裂到指定的最大深度(max_depth),然后回头来剪枝
    * 内置交叉验证
        -XGBoost允许子在每一轮Boosting迭代中使用交叉验证->可以方便的获得Boosting迭代次数
        -GBM使用网格搜索,只能检测有限个值
    * 在线学习;XGBoost和GBM都支持
XGBoost的优势
    执行速度:确实比其他Gradient boosting实现快
    模型性能:在结构化数据集上,在分类/回归/排序预测建模上表现突出
如何使用?
    处理流程:
        训练数据读取-->数据导入(设置训练参数(超参数))-->模型训练-->模型评估(如果效果不好要转换到第二步骤)
        注意:训练数据要进行特征变换一.xgboost的优点

1.正则化
    xgboost在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。从Bias-variance tradeoff角度来讲,正则项降低了模型的variance,使学习出来的模型更加简单,防止过拟合,这也是xgboost优于传统GBDT的一个特性。
2.并行处理
    xgboost工具支持并行。boosting不是一种串行的结构吗?怎么并行的?注意xgboost的并行不是tree粒度的并行,xgboost也是一次迭代完才能进行下一次迭代的(第t次迭代的代价函数里包含了前面t-1次迭代的预测值)。xgboost的并行是在特征粒度上的。我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),xgboost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值