目录
XGBoost概述
有监督学习
算法原理
寻找分割点算法
系统设计
优缺点
XGBoost概述
XGBoost是一个具有可扩展性的树提升算法机器学习系统,它的可扩展性体现在以下四个方面(该算法开发者陈天奇《XGBoost: A Scalable Tree Boosting System》):
- 模型的scalability,弱分类器除cart外也支持lr和linear。
- 策略的scalability,可以支持不同的loss functions,来优化效果,只要一、二阶可导即可。
- 算法的scalability,做了很多细节工作,来优化参数学习和迭代速度,特征压缩技,bagging学习中的特征抽样,特征选择与阈值分裂的分位方法和并行方法等。
- 数据的scalability,因为3中的优化,支持B级别的快速训练和建模;同时也因为加上了正则项和随机特征抽样,减少了过拟合问题。
XGBoost的主要优势及创新根据作者的描述,可以归纳为以下几点:
- 一个新奇的(novel)处理稀疏数据的树学习算法。
- 使用近似树学习( approximate tree learning)理论利用分位数的描述,可以给每一个训练实例一个合理的加权权重。
- 并行和分布式的设计使得学习速度非常快,建模更快速。
- XGBoost exploits out-of-core computation 机制让仅使用笔记本就可以处理数以亿计的数据成为可能。
- 端到端系统使用最小的集群资源就可以处理大量的数据。
XGBoost被用于监督学习,监督学习指利用具有多个特征的训练数据xi来预测目标变量yi,在训练数据中yi作为标签是给定的。
先从有监督学习讲起。
有监督学习
在有监督学习里面有几个逻辑上的重要组成部件,初略地分可以分为:模型,参数和目标函数。
模型和参数
模型:指给定输入如何去预测输出
参数:指我们需要学习的东西
我们比较常见的模型如线性模型(包括线性回归和logistic regression)采用了线性叠加的方式进行预测。
对于最简单的线性模型,它的模型结构如下: