XGBoost与GBDT(一)-几种最优化方法对比

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XGBoost与GBDT(一)-几种最优化方法对比相关的知识,希望对你有一定的参考价值。

参考技术A 发现了作者的一个ppt GBDT算法原理与系统设计简介 ,从头复习了一波相关的内容,写两篇记录下来.
从根本上来说, GBDT 与XGBoost最大的区别在于二者用的优化方法不一样,所以从先从最优化方法开始复习.

最优化问题通常分为两个大类:

在机器学习中,典型的做法就是选择一个合适的模型 ,对该模型的损失函数 ,通过最优化的方法最小化损失函数,从而求解模型的参数.
最常见的几种优化方法包括[2]:

可以看出,虽然牛顿法收敛速度较快,但是每次迭代过程,计算海塞矩阵的逆过程相当繁琐,特别是当该矩阵维度较大时.因此就有了逆牛顿法,他使用正定矩阵来近似求海塞矩阵的逆.
拟牛顿法和梯度下降法一样只要求每一步迭代时知道目标函数的梯度,另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法更为有效。常用的拟牛顿法有DFP算法和BFGS算法.此处不再赘述.
下面补充拟牛顿法的思路(摘自[3]):

共轭梯度法是一种用于解决无约束凸二次规划问题的方法.

启发式方法指人在解决问题时所采取的一种根据经验规则进行发现的方法。其特点是在解决问题时,利用过去的经验,选择已经行之有效的方法,而不是系统地、以确定的步骤去寻求答案。启发式优化方法种类繁多,包括经典的模拟退火方法、遗传算法、蚁群算法以及粒子群算法等等。

上面前三种算法,解决的问题都仅限于无约束的凸优化, 而拉格朗日乘数法则解决含有约束条件的优化问题,例如svm算法的解法推导.约束优化问题的一般形式是:

这个问题可以转化成函数 的无条件极值问题.
对于约束条件为不等式的问题,有科学家拓展了拉格朗日乘数法.增加了kkt条件以求解.没学过最优化,这块就没法细谈了.有机会一定要补上.

[1]Poll的笔记.常见的几种最优化方法[EB/OL]. https://www.cnblogs.com/maybe2030/p/4751804.html,2015-08-23 .
[2]超神冉.最优化算法——常见优化算法分类及总结[EB/OL]. https://blog.csdn.net/qq997843911/article/details/83445318,2018-10-27 .
[3]李航.统计学习方法[M].清华大学出版社:北京,2012:220.
[4]Ja1r0.共轭梯度法[EB/OL]. https://zhuanlan.zhihu.com/p/28623599,2018-05-28 .

GBDT与XGBoost速度对比

同样的数据量,在同样的环境下的速度对比

正负样本数量:142287,711435

参数设置:

model_xgb=XGBClassifier(learning_rate=0.1,max_depth=5,n_estimators=300,subsample=0.6,objective='binary:logistic',n_jobs=10,enable_categorical=True)
#model_GBDT = GradientBoostingClassifier(max_depth=5, n_estimators=300, subsample=0.6, max_features=0.5)

用时对比:

GBDT:

predict used time: 2145.752547979355
train and predict used time all: 10983.663108110428

XGBoost:

predict used time: 1919.792335987091
train and predict used time all: 9046.629899263382
 

以上是关于XGBoost与GBDT(一)-几种最优化方法对比的主要内容,如果未能解决你的问题,请参考以下文章

GBDT与XGBoost速度对比

GBDT与XGBoost速度对比

GBDT与XGBoost速度对比

XGBoost算法

GBDT XGBOOST的区别与联系

LightGBM算法 & XGBoost算法对比分析