这是个深度学习的时代,传统的机器学习算法仿佛已经失去了往日的光彩,你能随处听到卷积神经网络、循环神经网络以及其他各种net,偶尔听到的机器学习算法也是支持向量机,逻辑回归。今天给大家介绍一个自出生便统治数据科学界的王者——XGBoost算法,往期文章中我们分析过该算法的基本原理,本文让我们来看一下为什么XGBoost如此强大。
什么是XGBoost
XGBoost 是一种基于决策树的集成机器学习算法,它基于Boosting框架。虽然在涉及非结构化数据(图像,文本等)的预测问题中,人工神经网络倾向于优于所有其他算法或框架。但是当涉及到中小型结构/表格数据时,基于决策树的算法目前被认为是最好的。基于树的算法从最初的决策树开始,通过不断的改进,其发展历程如下:
XGBoost算法是华盛顿大学的研究开发项目。由2016年陈天奇和Carlos Guestrin在SIGKDD会议上发表的论文提出。自推出以来,该算法不仅赢得了众多Kaggle比赛的胜利,而且还成为几个尖端行业应用的引擎驱动力。其中有一个强大的数据科学家社区为XGBoost开源项目做出贡献,在GitHub上有大约350个贡献者和大约3600个提交。该算法具有以下特点:
为什么强大
XGBoost和Gradient Boosting Machines都是集合树方法,都基于梯度下降来提升弱学习器(通常是CART)。但不同的是,XGBoost在GBM的基础上通过系统优化和算法增强改进了GBM框架已达到更好的效果。
系统优化:
算法增强:
没有对比就没有伤害
没有对比就没有伤害,不那个数据集练练都显得很虚。所以我们使用Scikit-learn的Make_Classification数据包创建了一个包含20个特征的100万个数据点的随机样本来测试了几种算法,如Logistic回归,随机森林,标准梯度提升和XGBoost。通过比较其准确率和训练时间来直观说明XGBoost的强大,看图:
如上图所示,与其他算法相比,XGBoost模型具有预测性能和处理时间的最佳组合。其他严格的基准研究也产生了类似的结果。难怪XGBoost在最近的数据科学竞赛中被广泛使用。
竞争对手
机器学习在数据挖掘中的使用是目前一个热门研究方向,在进行数据处理时,除了选择强大的算法,参数的调整以及数据特征处理也是非常重要的。此外,选择算法还有其他几个考虑因素,例如计算复杂性,可解释性和易于实现,这也是机器学习能否用于实际生活的重要因素。目前微软研究院发布的LightGBM框架以及Yandex开发的CatBoost框架都相对于XGBoost做了改进,但在一个在预测性能,灵活性,可解释性和实用性方面都优于XGBoost的框架诞生之前,XGBoost仍然占据数据分析的江湖。