集成学习(ensemble Learning)

集成学习(ensemble Learning)通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统(multi-classifier system)、基于委员会的学习(committee-based learning)等,其一般结构是先产生一组“个体学习器”(individual learning),再用某种策略将它们结合起来。个体学习器通常由一个现有的学习算法从训练数据中产生,如果个体学习器的集成是同质(homogeneous)的,那么同质集成中的个体学习器称为“基学习器”(base learner);如果是异质(heterogenous)的,则相应的个体学习器称为“组件学习器”(component learner)或直接称为个体学习器。

其主要分为三大类:Boosting、Bagging、Stacking。其中Boosting的代表有AdaBoost,gbdt,xgboost;Bagging的代表则是随机森林(Random Forest)。

Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构造出很强的集成;而Bagging主要关注降低方差,因此它在不剪枝的决策树、神经网络等学习器上效用更为明显。

一、Boosting

Boosting是一种可将弱学习器提升为强学习器的算法,它是一种序列化方法,有着强依赖关系,必须串行生成,不过xgboost有些例外,xgboost可以在节点分裂属性选择上做并行计算。Boosting的工作类似:先基于初始训练集训练出一个弱的学习器,然后根据前一个弱学习器做错的训练样本,改变样本的概率分布,构成新的训练集,然后基于调整后的样本分布训练下一个学习器,这样反复迭代提升,知道基学习器的数目达到指定值,最后将这T个基学习器进行加权结合,就构成了一个很强的学习器。

(1)AdaBoost,也就是Adaptive Boosting(自适应增强),其主要思想就是在不改变训练数据的情况下,通过在迭代训练弱学习器中,不断提升被错分类的样本权重,不断减少正确分类样本的权重;最后通过加权线性组合M个弱分类器得到最终的分类器;正确率越高的弱分类器,其投票权数就越高,相反越低。

(2)GBDT,也就是Gradient Boosting Decision Tree,又叫MART(Multiple Additive Regression Tree)。GBDT中的树都是回归树,不是分类树,因为gradient boost需要按照损失函数的梯度近似地几何残差,这样拟合的是连续值,所以是回归树。它是一种迭代决策树的算法,该算法由多颗决策树组成,所有树的结论累加起来才能得到最终答案。

——Regression Decision Tree(回归树),总体流程类似于分类树,但是回归树的每个节点都会得到一个预测值;

——Boosting Decision Tree(提升树),是迭代多颗回归树来共同决策,也就是说,整个迭代过程生成的回归树的累加;

——Gradient Boosting Decision Tree(梯度梯度提升决策树),提升树利用加性模型(additive model)和前向分步算法实现学习的优化过程。

(3)xgboost,类似于GBDT,但是其在精度和效率上都有提升,相对于GBDT,其具体优点有

1)损失函数用泰勒展开式二项逼近,而不是GBDT中的一阶导数

2)对树的结构进行了正则化约束,防止模型过度复杂,降低了过拟合的风险

3)节点分裂的方式不同,GBDT使用的是Gini系数,xgboost是进过优化推导后的

——xgboost是GB算法的高效实现,xgboost中的基学习器除了可以是CART(gbtree)也可以是线性分类器(gblinear)。

二、Bagging

Bagging是一种并列化方法,没有强依赖关系,可同时生成。其基本流程:采样出T个含m个训练样本的采样集(又放回采样),然后基于每个采样集训练出一个基学习器,再将这些学习器进行结合。

随机森林(Random Forest,RF),是Bagging的一个扩展变体,RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。随机森林简单、容易实现、计算开销小,随机森林中基学习器的多样性不仅来自样本扰动,也来自属性扰动(Bagging中基学习器的多样性只来自样本扰动)。

三、Stacking

stacking产生方法是一种截然不同的组合多个模型的方法,它讲的是组合学习器的概念,但是使用的比Bagging和Boosting要少。具体过程如下:

(1)将训练集划分为两个不相交的集合;

(2)在第一个集合上训练多个学习器;

(3)在第二个集合上训练这几个学习器;

(4)把第三步得到的预测结果作为输入,把正确的回应作为输出,训练一个高层学习器。

猜你喜欢

转载自www.cnblogs.com/williamtse/p/9159679.html