drwuHUST的个人博客分享 http://blog.sciencenet.cn/u/drwuHUST

博文

集成学习新方法:BoostTree与BoostForest

已有 994 次阅读 2020-3-27 02:42 |个人分类:机器学习|系统分类:科研笔记


集成学习的主要思想是构建多个基学习器来挖掘目标值与应变量之间的关系,然后通过一定的策略将它们联合起来。集成多个学习器来进行预测一般能提高学习器对离群点和异常值的鲁棒性,从而达到比单个学习器更强的泛化能力。集成学习在现实应用中取得了很大的成功,比如Kaggle竞赛的大部分冠军都使用了集成学习。

我们最近提出了一种新的树模型(BoostTree)和融合多个树模型的集成学习算法(BoostForest),还创新地提出参数池采样的技巧来避免交叉验证调整超参数的繁琐步骤。BoostTree结合了加法逻辑回归与模型树的思想,BoostForest则进一步结合了随机森林的思想。

本文介绍集成学习的一些背景知识,提升基学习器多样性的技巧,以及从加法逻辑回归与模型树中得到的启发。最后简单介绍了BoostTreeBoostForest的模型特点。

 

集成学习背景知识:

在集成学习中,根据基学习器的模型复杂度,主要有两种策略来训练这些基学习器,即Bootstrap Aggregating (Bagging) Boosting。当基学习器的假设过于激进时,每个基学习器的预测值的方差可能会比较大,此时通过Bagging策略来联合它们可以降低预测值的方差,其中最著名的模型是随机森林。Boosting是一种通过联合多个弱学习器来产生一个强学习器的学习策略,当基学习器的假设过于保守时,每个基学习器的预测值与真实值的偏差会比较大,此时通过Boosting策略来联合它们可以降低预测值与真实值的偏差,其中最著名的模型是梯度提升决策树(GBDT,  XGBoostLightGBM。在Kaggle以及很多机器学习任务中,XGBoost在类别型特征的数据建模中几乎占据着统治地位。

  为了集成出一个好的复合学习器,一般希望各个基学习器都尽量准确且具有多样性。在处理一个机器学习任务时,一般会先使用目标函数来建模,例如均方误差、交叉熵、Gini系数等,然后使用梯度下降法或者贪婪搜索法来优化目标函数,从而提高准确性。但是基学习器的多样性是一个比较抽象的数学概念,很难构建出一个目标函数去优化它,而且多个基学习器只有在训练好之后,才能衡量它们的多样性,所以多样性是不能直接放在目标函数中优化的。为了提高基学习器的多样性,一般会在训练各个基学习器的过程中引入随机性。主要有以下五种技巧来增强训练过程中的随机性:

1.  基于训练样本,即产生不同的训练样本作为各个基学习器的训练集。比如,Bagging中使用的训练样本是通过bootstrap采样得到的;AdaBoost每次生成学习器时都使用不同的样本权重。这个技巧在实际应用中,可以使模型能处理大数据问题,因为每次可以只需从全部数据中采样一部分数据用来训练模型,这样既能减少学习器处理的数据量,也能提升样本的随机性。

2.  基于特征空间,即在不同的特征子空间中训练各个基学习器。比如,在随机森林中,每次分割树的节点时,限制学习器只能在随机划分出的特征子空间中寻找最优的分割。这个技巧既可以提升基学习器的多样性,又可以降低训练模型的时间代价,还可以使模型能处理高特征维度的数据。

3.  基于参数,这个技巧理解起来比较直观:如果一个机器学习算法对超参数比较敏感的话,设置不同的超参数来训练基学习器也能提升它们的多样性。

4.  基于标签,即对于不同的基学习器使用不同的输出表示,比如,误差纠错输出编码(ECOC)。这个技巧可以让一个只能处理二分类的机器学习算法扩展到能处理多分类问题,例如,将SVM改进为ECOC-SVM

5.  基于算法种类,使用不同的机器学习算法训练基学习器。

 

加法逻辑回归(Additive Logistic Regression):

Friedman2000年提出了加法逻辑回归的概念。加法逻辑回归模型中很经典地体现出了boosting的核心思想,它把新的基学习器逐步加入到模型中,随着boosting迭代次数增加,后生成的基学习器会更关注那些较难学习的样本。加法逻辑回归从梯度下降的角度来进行boosting,直观上理解,它通过迭代地使用牛顿法来优化逻辑回归。在每一次迭代时,它在之前已生成的基学习器的输出的基础上,结合目标函数的一阶导数与二阶导数生成新的数据集,然后利用这个新的数据集结合最小二乘法训练一个新的基学习器。

从加法逻辑回归中,我们可以有以下启发:

1.  Boosting学习策略是基于梯度下降的,其实它是在迭代地优化目标函数。随着迭代次数增加,模型会得到一个局部最优解,从而保证了模型在训练集上会取得较好的结果,同时也比较容易出现过拟合。

2.  借用加法逻辑回归的思路,分类问题与回归问题都可以先拆分为一系列的小回归问题,然后再通过相应的集成策略将它们的输出联合起来。

 

模型树(Model Tree):

模型树结合了决策树与线性模型的优点。它会在决策树的每个叶子节点拟合一个线性模型,体现了一种分段线性的思想。决策树算法的优点在于它可以将样本空间进行划分,而线性模型则可以把每一个节点的样本点拟合得更贴近,比简单地使用均值拟合的效果更好。

从模型树中,我们可以有以下启发:树模型与线性模型结合,可以有分段线性模型的效果,具有更高的模型复杂度,可以对数据更准确地建模。

 

BoostTree:

       结合加法逻辑回归与模型树的思路,我们提出了BoostTree模型,如图1(a)所示。BoostTree在树的每个节点都会拟合一个基学习器。当一个新的的样本进入BoostTree时,它会先被分到一个叶节点,然后输出为从根节点到该叶节点路径上所有基学习器的集成。


BoostTree1.png


BoostTree主要有以下特点:

1.  它具有比决策树更高的模型复杂度,因为在每个节点(不管是叶节点还是中间节点)都会拟合一个基学习器,所以它能对更复杂的数据进行建模。

2.  它的输出是很多基学习器的集成,而不是一个学习器,所以它的性能可能会更鲁棒。

3.  它的扩展性较高,因为每个节点的基学习器是通过求解回归问题得到的,所以很多传统的回归模型都能与BoostTree结合,比如SVRELM或者结构更复杂的神经网络模型。

4.  为了提高参数的随机性,每个基学习器的参数都是随机从参数池中采样得到的。

5.  它具有比决策树更高的分裂效率,可以使用叶节点较少的树取得较好的性能。

总的来说,BoostTree是一种模型复杂度较高、参数随机性较强的学习器。BoostTree在进行预测时,具有较低的偏差和较高的方差,于是为了降低学习器预测值的方差,本研究还提出了BoostForest来集成多个BoostTree模型。

 

BoostForest:

在传统的机器学习算法中,一般都会附加很多的超参数需要调整,比如交叉验证或early stopping, 但交叉验证会增加计算代价,early stopping则需单独留出一部分数据做验证集,从而减少训练集的样本数。为了进一步提高BoostTree的泛化性能,省略交叉验证的步骤,我们提出了BoostForest来集成多棵BoostTree, 如图1(b)所示。同时我们也借鉴了随机森林的思想来增强训练样本和特征的随机性。

BoostForest主要有以下特点:

1.  不需要使用交叉验证或early stopping来调整超参数。在BoostForest中,超参数都被存在参数池中,需要时随机选取,这样可以大大提升模型对参数的鲁棒性。人们在使用它时,只需将认为可能的参数放入参数池中即可,学习器会随机的从参数池中采样超参数。

2.      高兼容性,别的树模型也可以嵌入到BoostForest中,比如CART model treelogistic model tree等。

    我们在30个UCI数据集(15分类,15回归)上面验证了BoostForest的性能,如下图所示。BoostForest的表现几乎总是显著优于RandomForest、Extra-Tress、XGBoost和LightGBM。

BoostTree2.png



BoostTree3.png


目前该算法是通过python实现的,运行速度还不够快,我们下一步打算使用C++来实现它,同时进一步探索如何改进它,希望让它成为像XGBoost一样流行的机器学习工具。

 

arXiv: https://arxiv.org/abs/2003.09737

Python 代码:https://github.com/zhaochangming/BoostForest

 

 




http://blog.sciencenet.cn/blog-3418535-1225468.html

上一篇:基于头皮脑电图(EEG)的癫痫发作检测
下一篇:迁移学习中的联合概率判别MMD度量

1 李冰

该博文允许注册用户评论 请点击登录 评论 (9 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2020-9-22 10:19

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部