一、龙珠计划-机器学习

一、龙珠计划-机器学习
1.2 XGBoost
介绍:XGBoost并不是一种模型,而是一个可供用户轻松解决分类、回归或排序问题的软件包。它的内部实现了梯度提升树(GBDT)模型,并对模型中的算法进行了诸多优化,并对模型中的算法进行了诸多优化,在取得高精度的同时又保持了极快的速度。
优点:
(1)简单易用。相对其他机器学习库,用户可以轻松使用XGBoost并获得相当不错的效果。
(2)高效可扩展。在处理大规模数据集时速度快效果好,对内存等硬件资源要求不高。
(3)鲁棒性强。相对于深度学习模型不需要精细调参便能取得接近的效果。
(4)XGBoost内部实现提升树模型,可以自动处理缺失值。
缺点:
(1)相对于深度学习模型无法对时空位置建模,不能很好地捕获图像、语音、文本等高维数据。
(2)在拥有海量训练数据,并能找到合适的深度学习模型时,深度学习的精度可以遥遥领先XGBoost。
应用:
XGBoost在机器学习与数据挖掘领域有着极为广泛的应用。据统计在2015年Kaggle平台上29个获奖方案中,17只队伍使用了XGBoost;在2015年KDD-Cup中,前十名的队伍均使用了XGBoost,且集成其他模型比不上调节XGBoost的参数所带来的提升。这些实实在在的例子都表明,XGBoost在各种问题上都可以取得非常好的效果。
同时,XGBoost还被成功应用在工业界与学术界的各种问题中。例如商店销售额预测、高能物理事件分类、web文本分类;用户行为预测、运动检测、广告点击率预测、恶意软件分类、灾害风险预测、在线课程退学率预测。虽然领域相关的数据分析和特性工程在这些解决方案中也发挥了重要作用,但学习者与实践者对XGBoost的一致选择表明了这一软件包的影响力与重要性。
算法实战:基于天气数据集的XGBoost分类实战
具体详见教程(很细致)

重要知识点
XGBoost的核心算法思想,基本就是:
(1)不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数f(x),去拟合上次预测的残差。
(2)当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数
(3)最后只需要将每棵树对应的分数加起来就是该样本的预测值。
XGBoost与GBDT有什么不同?
除了算法上与传统的GBDT有一些不同外,XGBoost还在工程实现上做了大量的优化。总的来说,两者之间的区别和联系可以总结成以下几个方面。
(1)GBDT是机器学习算法,XGBoost是该算法的工程实现。
(2)在使用CART作为基分类器时,XGBoost显式地加入了正则项来控制模 型的复杂度,有利于防止过拟合,从而提高模型的泛化能力。
(3)GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代 价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数。
(4)传统的GBDT采用CART作为基分类器,XGBoost支持多种类型的基分类 器,比如线性分类器。
(5)传统的GBDT在每轮迭代时使用全部的数据,XGBoost则采用了与随机 森林相似的策略,支持对数据进行采样。
(6)传统的GBDT没有设计对缺失值进行处理,XGBoost能够自动学习出缺 失值的处理策略。

为什么XGBoost要用泰勒展开,优势在哪里?
XGBoost使用了一阶和二阶偏导, 二阶导数有利于梯度下降的更快更准. 使用泰勒展开取得函数做自变量的二阶导数形式, 可以在不选定损失函数具体形式的情况下, 仅仅依靠输入数据的值就可以进行叶子分裂优化计算, 本质上也就把损失函数的选取和模型算法优化/参数选择分开了. 这种去耦合增加了XGBoost的适用性, 使得它按需选取损失函数, 可以用于分类, 也可以用于回归。

参考链接:https://www.cnblogs.com/mantch/p/11164221.html

上一篇:XGboost 安装(win10)


下一篇:XGBoost原理介绍