基于XGBoost的电商优惠券使用情况预测研究

发布日期:2019年5月31日
基于XGBoost的电商优惠券使用情况预测研究 基于XGBoost的电商优惠券使用情况预测研究

本内容试读结束

下载后可阅读完整内容,立即下载

Boosting是十分有效的序列集成算法,在实践中有着广泛的应用。本文着重研究的XGBoost算法针对快速并行树结构进行了优化,并且在分布环境下容错,这使得它可以精确快速处理亿级数据、给出可靠的结果。本文分别通过模拟分析和实证分析,对比GBDT和RF算法验证了XGBoost的优良特性。

机器学习已经被广泛应用于解决各种各样的现实问题,由于现实问题往往都十分的复杂,因此仅仅用一个单一的学习器或模型得到的结果往往不尽如人意。实践证明,集成学习相较于单一学习器往往能得到更为准确的结果。所谓集成学习,就是通过组合多个学习器以期得到一个更好更全面的学习器。集成方法可以分为两类:一是并行集成方法(Bagging),其中参与训练的基学习器并行生成,并行集成方法的原理是利用基学习器之间的独立性,通过平均可以显著降低错误。二是序列集成方法(Boosting),其中参与训练的基学习器按照顺序生成,序列集成方法的原理是利用基学习器之间的依赖关系,通过对之前训练中错误标记的样本赋值较高的权重,可以提高整体的预测效果。从偏差方差分解角度看,Bagging主要关注降低方差,Boosting 主要关注降低方差。本文主要研究Boosting 相关方法及应用。

Schapire [1]于1990 年对“弱学习是否等价于强学习”这个理论问题给出构造性证明,这也是最初的Boosting 算法。一年后,Schapire 提出了一种更为高效的Boosting 算法,但这两种算法都需要知道弱学习器的学习正确率的下限,难以应用实际问题。1997 年,Schapire [2]提出了AdaBoost 算法,能够更好地利用弱学习器的优势,同时也摆脱了对弱学习器先验知识的依赖。AdaBoost 算法的很多变体都是对损失函数做了改变,比如LogitBoost 考虑了log 损失函数、L2Boost 考虑L2 损失函数等。2001 年,Freund [3]将梯度下降的思想引入Boosting 算法,提出了Gradient Boosting 算法,其思想在函数空间以负的梯度方向优化损失函数,可以认为是AdaBoost 的推广。

然而,现有的树模型Boosting 算法仍局限于计算百万量级的数据,尽管已有一些关于如何并行算法的研究,但是关于同时优化系统和算法使之能用于计算亿级数据的研究很少。本文主要研究的XGBoost正是这样一种可以用于处理亿级数据可靠的机器学习方法。

本文分为五个部分:第一节引言部分简单介绍了Boosting 及相关的研究进展;第二节简单概括了Boosting 的基本思想,详细说明XGBboost 的原理及改进优化之处;第三节详细说明XGBoost 求解的基本算法;第四节模拟分析,把XGBoost 用于模拟数据并于GBDT、RF 进行比较分析;第五节实证分析, 把XGBoost 用于真实数据并评价其效果。

2. Boosting 2.1. Boosting Boosting 分类器[4]属于集成学习模型, 它基本思想是把多个“弱”分类器结合成一个“强”分类器, 所谓的“弱”分类器是指错误率仅仅只比随意猜测低一点的分类器,也就是说将许多分类准确率较低的分类器组合起来,成为一个准确率很高的分类器,个体分类器间存在强依赖关系,意思是说每次迭代生成的新的分类器都是在上一个分类器的基础上生成的。通常分类器采用分类回归决策树,每次生成新的决策树时,根据已有决策树的分类效果对样本分布进行调整,给分对的样本较小的权重、给分错的样本



相关标签