以XGBoost为代表的集成算法体现的哲学思想与数学技巧

目录

 

哲学思想一:抓住主要矛盾

为什么AdaBoost要增加前一次错分样本的权重?

为什么lightGBM可以忽略梯度小的样本?

哲学思想二:

矛盾在一定条件下是可以相互转化的。

为什么随机森林比单一决策树更好?

为什么要用弱学习器?

用偏差与方差理论解释:

哲学思想三:如无必要、勿增实体

数学技巧一:利用牛顿法优化

数学技巧二:特征合并


哲学思想一:抓住主要矛盾

主要矛盾决定着事物发展的方向,规定和影响着其他矛盾的产生和发展。所以,解决问题要抓主要矛盾。如果抓不住主要矛盾,就抓不住重点,找不到中心。所以,抓住了主要矛盾,解决了主要矛盾,其他矛盾就会迎刃而解,在实践中我们必须学会“牵牛鼻子”的工作方法。

为什么AdaBoost要增加前一次错分样本的权重?

在AdaBoost中前一个基本分类器被错误分类的样本的权值会增大,而正确分类的样本的权值会减小,并再次用来训练下一个基本分类器。

这是AdaBoost算法的灵魂思想,其背后就是抓住主要矛盾、忽略次要矛盾,在构建下一个分类器时,重点关注前一个分类器分错的样本,它与前边的分类器形成协同作用,扩大正确分类的边界,减少错误分类的范围,共同提高了分类的能力。

我举一个现实中的例子作类比,假设一个基本分类器是一个小学生,AdaBoost更像老师,每次小学生有做错的题时,老师会重点标注,引起学生的重点学习,以提升下一次的学习正确率。这就是上文讲的改变数据的分布或者权值。

为什么lightGBM可以忽略梯度小的样本?

在一般的梯度提升树GBDT算法中,没有这样的直接权重来反应样本的重要程度。我们如何才能在不同的弱的决策树算法中,体现错分样本或者确切的说,未训练好样本的重要程度呢?

那就是梯度,梯度是一个很好的替代指标。我们在建一棵新树时,要计算损失函数对于之前已经构建模型预测的梯度,一个样本的梯度很小,说明已经构建模型的预测接近目标值,说明训练误差很小,或者说该样本已经得到了很好的训练(well-trained)。

所以,在集成算法lightGBM中,基于梯度的单侧采样技术(Gradient-based One-Side Sampling,GOSS)就是应用了这一重要思想,与AdaBoost改变样本权重有着异曲同工之妙!GOSS技术忽略了很大一部分梯度很小的数据,只关注梯度比较大的去估计树结构分数的增益。

这可以避免低梯度长尾部分的影响。由于梯度大的数据在计算增益的时候更重要,所以GOSS在忽略一些数据后仍然可以取得相当准确的估计值。

在GOSS中,通过以下步骤来选择梯度较大的样本,并且兼顾梯度较小的样本。

首先根据数据的梯度将训练降序排序。保留top a个(百分比)数据实例,作为数据子集A。对于剩下的数据的实例,随机采样获得大小为b(百分比)的数据子集B在计算增益的时候,放大样本B中的梯度(1a)/b 倍最后我们通过以下方程估计信息增益:

以上过程既抓住了主要矛盾,同时双兼顾了次要矛盾。

哲学思想二:

矛盾在一定条件下是可以相互转化的。

各哲学流派对此都有不少精彩论述。中国著名的哲学名著《道德经》就有"...故有无相生,难易相成,长短相形,高下相倾,音声相和,前后相随"。就这么几句话几十个字,就把自然界、宇宙、社会、人生的一个普遍规律概括出来了:矛盾对立统一。

我们在任何地方都不怕遇到矛盾,因为矛盾是两面的,有它对立的一面又有它统一的一面。在一定条件是相互转化的。矛盾双方的转化未有穷尽。正如《道德家》中"强大处下,柔弱处上",集成算法中基本分类器都是弱分类器,但在一定条件集成下,却是非常强的分类器。

为什么随机森林比单一决策树更好?

随机森林背后的基本思想是将许多决策树组合成一个单一的模型。单独地,决策树做出的预测可能不准确,但结合在一起,预测平均后更接近目标。

森林中的每个决策树在形成问题时都会考虑一个随机的特征子集,并且只访问一组随机的训练数据点。这增加了森林的多样性,导致更强大的整体预测。

举一个预测第二天最高天气温度的问题,假如我们可以让数百人估计第二天温度:通过汇总预测,可以得到比任何一个人更接近真实温度的预测。

每个人都会为问题带来自己的背景经验和信息来源。也许一个人依靠气象学家朋友进行预测,而另一个人则使用数百年的温度数据,或者天气预报。如果我们只问一个人,我们只会利用他们有限的信息范围,但通过将每个人的预测结合起来,我们的信息网络要大得多。此外,每个人的信息来源越多样化,随机森林越健壮,因为它不会受到单个异常数据源的影响。如果每个人都一样,那么我们的整个模型将毫无价值。相反,如果我们的"森林"中的个体使用了许多不同的天气来源,那么我们的模型不会受到单一来源的极大影响,我们可以做出合理的预测。

这种将许多简单的想法结合在一起,却可以产生从数据中"学习"的极其准确的模型。随机森林也不例外。随机森林模型的力量来源于,将随机的、多样化的弱的决策树组合起来的思想。而随机和多样化这两个思想在我们的日常生活中都是众所周知的。

为什么要用弱学习器?

AdaBoost中对弱分类器的要求,只要比随机猜测要好一些就可以,也就是错误率要小于50%。AdaBoost算法把这些弱分类器组合起来,形成一个强大的分类器。

这是分类器权重αt与错分率εt的函数关系。用图示如下图:

那么:

没有错误: εt=0→αt=∞全部错误: εt=1 →αt=∞随机: εt=0.5→αt=0可见只要基分类器比随机的错误率为0.5的要好,那么它就在最后的加法模型中有权重。并且越是错误率越低权重越大。

弱分类器有几大好处:

第一、弱学习者计算速度快,模型复杂度低。

第二、弱学习者更容易解释,线性模型居多。

第三、留有改进空间。如果我们使用更强的学习者,那么改进的空间会变小,不利于集成,不利用把占各个方面占有特长的学习器集成起来,同时避免过拟合风险。

用偏差与方差理论解释:

集成方法设计体现了同时追求减少方差、减少偏差。减少方差,是因为你使用的是多个模型;减少偏差,是因为先前模型所做的错误(增强部分)来训练后续模型,从而减少偏差。

提升是基于弱学习者(具有高偏差,低方差)。在决策树方面,弱学习者是浅树,有时甚至像决策树桩一样小(有两片叶子的树),提升主要通过减少偏差来减少真实风险。随机森林使用完全成长的决策树(具有低偏差,高方差)。通过汇总来自许多单个树模型的输出,来提高泛化能力,减少方差。因为这些单个决策树是随机的、多样化的,模型更加接近真实,减少过拟合。

哲学思想三:如无必要、勿增实体

奥卡姆剃刀(Occam's Razor)是由14世纪逻辑学家、圣方济各会修士奥卡姆的威廉(William of Occam)提出。他在《箴言书注》2卷15题说:“切勿浪费较多东西去做,用较少的东西,同样可以做好的事情。”

剃刀原则在当时的主要作用是:对学界争论的一些问题,如上帝是否存在?什么是真实?等等进行哲学思辨。他主张的“思维经济原则”,概括起来就是“如无必要,勿增实体”。奥卡姆剃刀在社会各方面已得到越来越多的应用,在科学思维、企业管理、美学等等都有着广泛的应用。在机器学习中也有着重要的应用,控制模型复杂度、规避过拟合就是Occam's Razor的直接应用。

在XGBoost中,定义树的复杂度如下,包括叶子节点的个数和叶子权重的L2范数。

最后加到目标损失函数中去:

对于控制叶子节点个数很好理解,但是叶子权重为什么要加以限制呢?

这是要求节点数值尽量不偏大,比如,如果某个样本真实数值为5,一个模型中第1棵回归树预测4,第2棵预测为1;另一个模型,三棵树分别预测2、1.5、1.5,那么选择后一种,前一种情况,第1棵树学到的太多,太接近4,意味着有较大的过拟合风险,这与我们选择弱分类器的思想如出一辙。

数学技巧一:利用牛顿法优化

装袋法(bagging)集成算法每次构建基分类器是采用的是不同的样本,而随机森林是每次会使用不同的特征,构建多样化的决策树。GBDT和其他的算法都不太一样,因为其他算法每次都是去优化真实值的拟合,而GBDT每个基分类器拟合的是残差。

GBDT在函数空间中利用梯度下降法进行优化XGBoost在函数空间中用牛顿法进行优化

用g、h表示一阶导数和二阶导数:

让L(θt)最小,那么有:

从而得:

参数更新方式:

与只用一阶梯度下的相比

这里1/h充当了步长。两种优化的差异如下:

梯度下降法用目标函数的一阶偏导、以负梯度方向作为搜索方向,仅考虑目标函数在迭代点的局部性质,搜寻路线往往曲折往返牛顿法加入对二阶导数的考量,选择方向时,不仅考虑当前梯度是否够大,还会考虑走了一步之后,梯度是否会变得更大

总之,牛顿法要比梯度下降法更具有全局判断能力、收敛速度更快。

另一方面,如果从步长的角度看,其技巧也是非常精妙的:

1、普遍GBDT只用到了一阶信息,无法确定步长,所以只能用常数步长根据一阶梯度方向去不断逼近;2、XGBoost用二阶信息去逼近函数,所以可以利用二阶信息确定更新步长,比只利用一阶信息的GBDT用更少的迭代获得更好的效果。

数学技巧二:特征合并

在实际应用中,在有很多特征的情况下,数据往往是稀疏的,而稀疏的特征空间中,许多特征是互斥的。所谓互斥就是他们从来不会同时具有非零值。

LightGBM利用这一点提出互斥特征捆绑技术(Exclusive Feature Bundling,EFB)来进行互斥特征的合并,从而减少特征的数目。将极大的提高训练速度。

这里举一个例子,理解互斥特征以及合并的技巧,假设现在有13个样本,每个样本有四个特征A、B、C、D,数据稀疏,在所有样本中,这4个特征从来不同时非零,符合互斥特征定义,所以可以利用EFB技术将ABCD捆绑为一个特征M。逆过程类似one-hot。

更进一步的,通常有很多特征,尽管不是100%相互排斥的,也很少同时取非零值,如果我们算法可以允许一小部分的冲突,我们可以得到更少的特征包,进一步提高计算效率。这是在速度和精度之间达到平衡的有效手段。

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页