方便查阅资料
- Boosting和梯度Boosting
- 梯度提升树GBDT(Gradient Boosting Decision Tree)
- XGBoost(eXtreme Gradient Boosting)
- lightGBM(Gradient Boosting Machine)
Boosting
是一种**,意思是用一些弱分类器的组合来构造一个强分类器。 对于分类问题而言,给定一个训练样本集,求比较粗糙的分类规则(弱分类器)要比求精确的分类规则(强分类器)容易得多,Boosting
**就是从弱学习算法出发,反复学习,得到一系列弱分类器,然后组合这些弱分类器--(《统计学习方法》第8章)。和这个理念相对应的是一次性构造一个强分类器,像支持向量机,逻辑回归等。通常,我们通过相加来组合这些弱分类器,形式如下:
F=a0·f0+a1·f1+...+an·fn
这里F为最终构造出来的强分类器,fn为各个弱分类器,an为这些分类器所占权重。 由此,有一个问题需要回答:
每一轮训练如何改变训练数据的权值和概率分布。 解决这个问题的方法叫做AdaBoosting
,《统计学习方法》中含有许多数学推导,没细看,占坑。
将AdaBoosting
方法和决策树
结合便构成了提升树。当损失函数是平方损失和指数损失时,此方法的每一步优化都十分简单,但对于一般的损失函数而言,往往每一步优化并不那么容易。
针对这个问题,Freidman提出了梯度提升GBDT
,利用最速下降法的近似方法,即损失函数的负梯度在当前模型的值,作为回归问题提升树中残差的近似值,拟合一个回归树。有许多数学推导,没细看,占坑。
XGBoost
和lightGBM
是上述算法的实现,表现为可以被Python调用的包。 如何使用还没细看,占坑。
各个模块API的PDF文档下载见github库内文件
- Numpy
- Pandas
- Matplotlib
- XGBoost
- LightGBM