XGBoost机器之心

XGboost能够在一系列的问题上取得良好的效果,这些问题包括存销预测、物理事件分类、网页文本分类、顾客行为预测、点击率预测、动机探测、产品分类。多领域依赖数据分析和特征工程在这些结果中扮演重要的角色。XGboost在所有场景中提供可扩展的功能,XGBoost可扩展性保证了相比其他系统更快速,XGBoost算法优势具体体现在:处理稀疏数据的新颖的树的学习算法、近似学习的分布式加权直方图。XGBoost能够基于外存的计算,保障了大数据的计算,使用少量的节点资源可处理大量的数据。XGBoost的主要贡献:

XGboost的正则化目标

在给出n个实例,m维特征的情况下,

(q将样本实例(Rm)映射到叶子节点,wT为空间,T为叶子的数量)是CART的假设空间,q代表每颗树的结构,映射实例样本到对应的叶子节点,T代表一棵树叶子的数量,w代表叶子节点的分数,wq(x)表示为一颗独立的树对于样本实例的预测值。如图:

一种标准的正则化目标项=differentiableconvexlossfunction+regularization,即损失函数+正则项。

L衡量预测值与真实值的差异,Ω作为模型复杂度的惩罚项,对于树的叶子节点个数和叶子节点权重的正则,防止过拟合,即simpleisperfect,正则化项比RGF模型更加简单。

梯度boosting树

树的集成模型不能在传统的欧几里得空间中找到合适的解,而应该通过迭代求近似解。^yi(t)表示通过t次迭代去近似真实的值,这样可以添加迭代更新项ft,也就是boosting的想法:

gi和hi分别为L的一阶、二阶偏导(梯度),移除常数项:

将样本分解为每个节点上的样本,所以目标函数化简为统一的在叶子节点上的和:

带入目标函数可得最优解:

方程(6)作为衡量树结构质量的指标,这个分数类似于决策树中的纯度,只是这个评价树的指标通过目标函数获得,而不是自定义的.列举所有可能的树的结构是不可能的,应该在初始叶子节点上通过贪心算法迭代添加分支。IL和IR是split(划分)之后左右节点的集合。I=ILUIR,所以lossfunction变为:

左+右-合并的形式通常作为评估划分的评价指标,对照公式(6),应该使上式最大。

收缩(学习速率)和列抽样(借鉴随机深林)

XGBoost除了使用正则项防止过拟合外,还使用了收缩和列抽样。收缩再次添加权重因子η到每一步树boosting的过程中,这个过程和随机优化中的学习速率相似,收缩减少每棵单独树的影响并且为将形成的树预留了空间(提高了模型的效果)。特征(列)抽样(在随机森林中使用)(相对于遍历每个特征,获取所有可能的gain消耗大)找到近似最优的分割点,列抽样防止过拟合,并且可以加速并行化。

基础精确的贪心算法

方程(7)的关键问题是找到合适的分割,精确的贪心算法通过列举所有特征的可能划分找到最优划分解,许多单机Tree算法使用这种方式找到划分点。精确的算法需要排序成连续的特征,之后计算每个可能划分的梯度统计值,如算法1:

近似算法

加权分位法

key-value为第k样本的(样本点的第K维特征,二阶导数),定义排序

表示小于z的点的比例,目标是找到划分点{sk1,sk2,···skl},这样的划分点满足式(9)

当出现特征值缺失时,实例被映射到默认的方向分支,关键是访问非缺失实体对Ik。现在的算法处理不存在的作为缺失值,学到处理缺失的最好方向,算法通过枚举一致性情况同样适用于用户指定的值。现有的树系统仅仅优化稠密的数据或者专注于处理有限的任务,例如:分类编码。XGBoost通过一种统一的方式处理所有的稀疏性情况。当出现稀疏情况的时候,稀疏性计算只有线性的计算复杂度。如图所示,稀疏自适应算法比基本的非稀疏数据算法快大约50倍。

适应于并行学习的列块

每一列通过相应的特征排序,在列中进行线性扫描。在近似算法中,每一块对应于数据的子集,不同的块可以分布在不同的机器上,发现分位点的扫描变成线性复杂度。

自适应缓存的访问

对于近似算法,我们通过选择合适的块大小解决问题,我们定义块的大小为包含在块中最大实例,因为这个反应了梯度数据的存储开销。选择太小的工作块会有线程负载,从而导致低效的并行化。而太大的块导致cache缺失,梯度数据不能很好的匹配CPU的cache。下图比较了块选择:

核外计算的块

块压缩

在加载数据进内存时,块按照列进行压缩,压缩通过独立的线程进行,这是以压缩、解压代价换区磁盘I/O。

块分片

将数据分片在在多个磁盘上,一个预取线程对应一个磁盘。

同时,Valiant和Kearns首次提出了PAC学习模型中弱学习算法和强学习算法的等价性问题,即任意给定仅比随机猜测略好的弱学习算法,是否可以将其提升为强学习算法如果二者等价,那么只需找到一个比随机猜测略好的弱学习算法就可以将其提升为强学习算法,而不必寻找很难获得的强学习算法。

1990年,Schapire最先构造出一种多项式级的算法,对该问题做了肯定的证明,这就是最初的Boosting算法。一年后,Freund提出了一种效率更高的Boosting算法。但是,这两种算法存在共同的实践上的缺陷,那就是都要求事先知道弱学习算法学习正确的下限。

AdaBoost方法的自适应在于:前一个分类器分错的样本会被用来训练下一个分类器。AdaBoost方法对于噪声数据和异常数据很敏感。但在一些问题中,AdaBoost方法相对于大多数其它学习算法而言,不会很容易出现过拟合现象。AdaBooast方法中使用的分类器可能很弱(比如出现很大错误率),但只要它的分类效果比随机好一点(比如两类问题分类错误率略小于0.5),就能够改善最终得到的模型。而错误率高于随机分类器的弱分类器也是有用的,因为在最终得到的多个分类器的线性组合中,可以给它们赋予负系数,同样也能提升分类效果。

梯度增强的思想起源于LeoBreiman的观察,它可以被解释为一种适用于成本函数的优化算法。由JeromeH.Friedman开发的显式回归梯度增强算法。

2016年,XGBoost全名叫(eXtremeGradientBoosting)极端梯度提升,经常被用在一些比赛中,其效果显著。由ChenTianqi为主要作者的Distributed(Deep)MachineLearningCommunity(DMLC)开发

尽管xgboost在Kaggle很多问题上都有优越的性能,但是xgboost还是存在一些问题。

1)xgBoosting采用预排序,在迭代之前,对结点的特征做预排序,遍历选择最优分割点,数据量大时,贪心法耗时。

2)xgBoosting采用level-wise生成决策树,同时分裂同一层的叶子,从而进行多线程优化,不容易过拟合,但很多叶子节点的分裂增益较低,没必要进行跟进一步的分裂,这就带来了不必要的开销;

xgboost主要作者陈天奇在探访中谈到,“我觉得相对来说它确实到了一个比较成熟的阶段了,可以说该有的东西基本都有了。未来需要完善的功能应该是外存计算,这是最近刚加进去的功能。其实出现这个功能的原因也是很直接的:我当时在20台机器上面跑400G的数据做分布式XGBoost实验,于是每台机器就要分20G的原始数据,这些数据在内存里做一些数据结构的处理,可能就需要60G的内存,这就已经塞不下了。所以又想到了外部存储这个解决方法,加入了这个功能。”

xgboost也可以在调参困难,贪心法耗时,叶子节点分裂增益较低等问题做进一步优化。

THE END
1.提高分析结果准确度的方法分析化学基础知识专区1 提高分析结果准确度的方法;(1)选择合适的分析方法,高含量组分用化学分析,低含量组分用仪器分析法测定(2)减小测量误差,滴定分析体积》=20ml,重量分析》=0.2g(3)增加平衡测定次数,减小偶然误差(4)消除测定过程中的系统误差。即空白试验,对照试验,仪器校正,方法校正。 https://m.instrument.com.cn/bbs/d-4122818-1.html
2.食品伙伴网手机版―关注食品安全,探讨食品技术,中国食品行业专业12.提高分析准确度的方法有那些? 选择合适的分析方法,增加平行测定的次数,消除测定中的系统误差。 13.系统误差的定义? 系统误差又称可测误差,它是由分析过程中某些经常原因造成的,在重复测定中,它会重复表现出来,对分析结果影响比较固定。 14.系统误差的特点及消除方法? http://m.foodmate.net/index.php?moduleid=28&itemid=164769
3.提高分析结果准确度的方法有哪些?点击查看答案https://www.netkao.com/shiti/825452/1980936aruy9hje83.html
4.提高分析结果准确度的方法A选择合适的分析方法B减小测定误差C多项选择题 提高分析结果准确度的方法 A、选择合适的分析方法 B、减小测定误差 C、增加测定次数,减小偶然误差 D、消除和减免测定过程中的系统误差 点击查看答案http://www.ppkao.com/wangke/daan/e2359b2655d74a0f9699077cd8d9dc7e
5.提高分析结果准确度的方法【题目】 提高分析结果准确度的方法 纠错 查看答案 查找其他问题的答案?助考班推荐 HOT:整专业保障班 全专业资料、题库、学位、网课 最高直省2344元 超值精品网课 剖析考点 上千+科次精品网课 买网课即送全真模考题库 自考教材资料 备考助考 五千+科次教材资料 电子资料满三件9折 全真模拟考场 考试助手https://www.zikaosw.cn/daan/33210306.html
6.提高分析结果准确度的方法有()()()和()。简述提高分析结果准确度的方法。 点击查看答案 第4题 提高分析结果准确度的方法有() A.空白试验 B. 对照试验 C. 严格操作 D. 校准仪器 E. 增加平行测定次数 点击查看答案 第5题 提高分析结果准确度的方法有:___ 、___ 、增加平行实验次数,减少偶然误差、消除测量中的系统误差。 点击查看答案 账号:尚未https://www.shangxueba.cn/4891831.html
7.提高分析结果的准确度()【多选题】有关准确度的叙述中,正确的是( )。 A. 准确度是指分析结果与真值的接近程度 B. 准确度越高,测量误差越小 C. 准确度反映了几次测量值的接近程度 D. 准确度的好坏与系统误差和偶然误差都有关 查看完整题目与答案 【单选题】准确度主要取决于()。 A. 难测结果的优劣 B. 偶然误差的大小 C.https://www.shuashuati.com/ti/0242a4235e374a78b6e4864e49bec8dd.html?fm=bd3e80125096a7cb63646a0a966ba56c9d
8.提高分析结果准确度的方法.ppt如分析天平及各种仪器的定期校正,滴定管、移液管等容量仪器,应注意其质量等级,必要时可进行体积的校正。(四)改进分析方法或采用辅助方法校正测定结果分析方法的不够完善是提高分析结果准确度的方法(三)校准仪器和量器如分析天平及各种仪器的定期校正,滴定管、移液管等容量仪器,应注意其质量等级,必要时可进行体积的https://m.taodocs.com/p-768215556.html
9.BAT机器学习面试1000题系列abcd统计考勤用啥函数工程上,主要提升算法准确度的方法是分别在模型的前端(特征清洗和预处理,不同的采样模式)与后端(模型融合)上下功夫。因为他们比较标准可复制,效果比较稳定。而直接调参的工作不会很多,毕竟大量数据训练起来太慢了,而且效果难以保证。 7 上线运行 这一部分内容主要跟工程实现的相关性比较大。工程上是结果导向,模型在线https://m.blog.csdn.net/sinat_35512245/article/details/78796328
10.覆盖最全面的学术论文写作的70类细节150+ChatGPT提示词写作风格和清晰度、准备口头答辩、出版和传播、研究过程的反思、跨文化研究考虑、应对意外挑战、探索替代方法论、多学科方法、利用初级和次级数据、解决偏见、保持论证一致性、论文写作的数字工具、案例研究方法论、定量分析技术、理论基础构建、比较分析、克服写作障碍、社区参与、档案研究、视觉元素的整合、处理冲突发现、https://blog.51cto.com/u_16695960/10480946
11.提高分析结果准确度的方法不包括()A选择适当的分析方法B增加平行网站导航:试题大全46>正文 题目题型:单选题 难度:★★★12.1万热度 提高分析结果准确度的方法不包括( ) A、选择适当的分析方法 B、增加平行测定次数 C、增加有效数字的位数 D、减少系统误差 E、减少测量误差 正确答案 点击免费查看答案 试题上传试题纠错 TAGS https://m.12tiku.com/newtiku/919846/35481147.html
12.如何提升乳液稳定性分析仪的结果准确度7. 持续改进与创新:乳液稳定性分析是一个不断发展和完善的过程。实验人员应关注相关领域的最新研究进展和技术动态,不断更新实验方法和手段,提高分析结果的准确度。同时,还应加强与其他实验室和研究机构的交流与合作,共同推动乳液稳定性分析技术的发展和应用。 https://www.chem17.com/tech_news/detail/3553936.html
13.食品检验结果论文12篇(全文)如何提高食品检验结果的准确度 第4篇 食品质量关乎消费者身体健康,因此食品检验工作中,检验结果是否准确制关重要。 准确度通常用误差来表示,误差越小,检验结果愈接近真实数据。误差按其性质的不同可分为系统性误差和偶然性误差。系统误差是由某种确定的原因造成的,如分析方法不够完善,仪器本身的缺陷或使用了未经校正https://www.99xueshu.com/w/ikey93jk9v6n.html