机器学习系列(9)——XGBoost算法

XGBoost算法挺复杂的,要多读几遍论文,梳理算法思路。本文希望有助于理解这个算法。

 

0x01、XGBoost简介

XGBoost即 Extreme Gradient Boosting,极端梯度提升,或者叫极值梯度提升。XGBoost所应用的算法就是GBDT的改进,既可用于分类也可用于回归问题中。作为GBDT的高效实现,XGBoost是一个上限特别高的算法。

1、XGBoost与GBDT的比较

  XGBoost算法

GBDT算法 

基分类器 使用CART回归树作为基分类器,还支持线性的基学习器。 使用CART树作为基分类器
结点分类方法 依据影响Loss的程度来确定连续特征的切分值 使用基尼指数
损失函数 使用了二阶泰勒展开,有利于梯度下降得更快更准确 只用到一阶导数
防止过拟合 在代价函数里加入了正则项用于控制模型复杂度,降低了过拟合的可能性 无正则项,可能出现过拟合
模型实现

在训练之前预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,可以大大减少计算量。

能够实现在特征粒度的并行。

串行,不支持并行

2、XGBoost的优缺点

优点:速度快,效果好,能处理大规模数据,支持多种基学习器,支持自定义损失函数等;

缺点:算法参数过多,调参复杂,不适合处理超高维特征数据。

 

0x02、XGBoost的模型和框架

1、XGBoost的模型

(回归树)给定一个包含个样本,M 个特征的数据集 T=\left\{ (x_1,y_1),(x_2,y_2),...,(x_N,y_N) \right\},集成模型的预测输出表示为:

        \hat{y}_i = \phi(x_i) = \sum_{k=1}^{K} f_k(x_i)  

其中,f_k 表示回归树,K 为回归树的数量。整个公式表示给定一个输入 x_i,输出值为 K 棵回归树的预测值相加。

2、XGBoost算法的基本框架

输入:训练数据集 T=\left\{ (x_1,y_1),(x_2,y_2),...,(x_N,y_N) \right\}, ~x_i \in \chi \sqsubseteq R^n, ~ y_i \in \gamma \sqsubseteq R,最大迭代次数 T,损失函数 L正则化系数 \lambda\gamma

输出:强学习器 f_M(x) 。

对迭代轮数 m=1,2,...,M

(1)计算一阶二阶导:计算第 i 个样本(i=1,2,...N)在当前轮的损失函数 L 基于 f_{m-1}(x_i) 的一阶导数 g_{mi},二阶导数 h_{mi},并计算所有样本的一阶导数和  G_{t} = \sum _{i=1}^{N} g_{mi},二阶导数和  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值