-->

机器学习40讲_27_26_集成化处理Boosting与Bagging

你好,我是王天一。

今天我和你分享的主题是集成化处理。

Pusting与bagging伊比鸠鲁是古希腊一位伟大的哲学家,他的哲学思想呢自成一派,在认识论上。

Eb九鲁最核心的观点就是多重解释原则。

其内容是当多种理论都能符合观察到的现象的时候,就需要将他们全部保留。

这在某种程度上可以看成是机器学习当中集成方法哲学基础,点击文稿。

你可以看到集成学习的常用架构。

在统计学习里,机器学习指的是将多个机学习器进行集成,以得到比每个单独的机学习器更优。

预测性能的方法,每个用于集成的基学习器都是弱学习器,它的性能啊只比随机猜测稍微好一点点。

集成学习的作用就是将这多个弱学习器提升成为一个强学习器,达到任意小的错误率。

在设计算法之前呢,集成学习先要解决的一个理论问题是集成方法到底有没有提升的效果。

虽说三个臭皮匠能赛过诸葛亮,但是如果皮匠之间没法产生化学反应的话,别说诸葛亮了,可能连个蒋碗废衣都凑不出来。

在计算学习的理论当中,这个问题可以解释成为弱可学习问题和强可学习问题。

复杂性是否等价可以解释成为这样的一个问题,幸运的是什么呢?这个问题的答案是是,那要实现这个从弱到强的过程,实现的手段就是提升方法。

通俗的说呢提升方法就是诸葛丞相手下这三个臭皮匠。

当然这里的皮匠呢不是制作皮革的这个手艺人啊,而是作为将领的这个皮匠。

其中的第一位呢善用步兵和骑兵。

可是对于水战一窍不通,这样的将领用来对付曹操可以,那对付孙权呢就有点吃亏了。

为了补上第一位将军的短板,在选择第二位的时候,专门选了这个水战,功力深厚的可惜,人无完人。

这位水战高手也有严重的偏科,骑在马上可以,但指挥步兵呢就是送人头。

所以说这两位参谋放在一块儿啊,指挥骑兵一点问题都没有。

但是另外两个军种就差点意思,为了查缺补漏啊,丞相在第三位皮将的选择上颇费了一番心思,找到了一位步战和水战精通的将军。

这样一来呢,这三位皮将三位参谋组成的这个联席会议就能游刃有余的指挥各种战斗。

无论在哪种战法上,专业的将领啊,都能够占到总体当中的多数。

虽然说每一位将领单独拎出来的话,都有严重的缺陷,但三个组合在一起就能让战斗力,不管是步兵、骑兵还是水军,都能大大的提升。

上面的解释呢意在说明提升方法,通过改变训练数据的分布,来训练不同的弱学习器,再将它们组合成强学机器。

虽说不受具体训练方法的限制,但大多数提升算法呢都会迭代生成和数据分布相关的弱分类器,并把他们以加权组合的方式添加到最终的强分类器当中。

每当一个新的弱分类器加入之后,数据的权重都会被重新的分配,被错误分类的样本会占据更大的权重。

被正确分类的样本呢?权重则会被相应的削减,这保证了未来的弱雪机器会更多的。

以前车之父作为后车之鉴,既然训练数据都是一样的,那么如何在每个轮次当中选择不同的权重分配呢?在自适应提升也就是ADABO st这个最成功的提升算法当中,权重分配的策略是这样。

以二分类任务为例,首先呢我给每个样本赋予相同的权重n分之一,再用它们来训练一个弱分类器FMX,并且计算出它相应的训练误差。

Ecom根据训练误差呢可以计算出权重调整的系数。

根据这个系数,我再来对每个样本的权重WI做出调整。

点击文稿呢,你可以看到这个调整的具体公式。

这个公式其实说明的就是一个问题。

放大物分类样本的权重新计算出来的这个权重。

经过规划处理之后,就可以用来继续训练下一个弱分类器,直到集成出强粉类器为止和决策树类似。

提升方法呢本质上也是一个广义可加模型,它的每一个组成部分都是一个单独的弱学习器。

随着这个弱学习器不断的被添加到强学习器当中,新的扩展的奇函数也被不断的添加到广义的线性模型当中。

但每一个添加的扩展奇函数都会预先经过优化。

那优化的过程呢是逐步的来完成。

在此基础上,可以进一步推导得出,当使用这个指数函数作为损失函数的时候,作为机扩展的ADABOST模型计算出来的就是样本属于某个类别的对数几率。

换言之呢,这说明ADABOST就是加强版的逻辑。

回归提升方法的重点在于说取新模型之长,补旧模型之短,从而降低偏差。

尽可能呢获得无偏的估计模型之间是存在这个相互的依赖性的。

如果说我要去除对于依赖性的限制,使用相互独立的模型来实现集成的话,这时的典型方法就是这个装袋法啊,也就是bagging这种代法呢它是自主聚合的简称,是模型均衡的一种手段。

我们都知道啊,如果对于n个相互独立,并且方差相同的高速分布取均值的话,兴分布的方差就会变成原始方差的n分之一。

同样的道理,推广到统计学习之上。

我从训练集当中利用重采样抽取出若干个子集,再利用每个子集分别建立预测模型,并且呢对这多个预测值求平均这样做就可以降低统计学习方法的方差。

那需要注意的一点是,装载法它并没有降低偏差的效果,也就没有办法提升预测的准确性。

所以在选择这个机学机器的时候,应当以偏差较小的优先考虑。

秉承这个平均主义观点的装态法有个特点,就是在不稳定的弱学习器上,效果尤为明显。

假设说用于平均的学习机是HX,那么装待法的结果就是HX在自助采样法采出来的数据分布上的一个期望值。

也就是我对这个训练数据不同的数据求期望得到的结果。

利用方差不等式可以计算出来,经过装待后的模型,它的方差不会大于每个单独训练出来。

模型的方差在自助采样分布上的数据期望,也就是说先求期望再求方差,会优于先求方差,再求期望。

这样的性质呢说明装袋法对于方差的降低啊,实际上是一种平滑效应。

模型在不同子集上的波动越大,装袋法的效果就越好。

如果说模型本身受数据的影响不大的话,那装袋也不会起到太好的提升效果。

这样的道理呢在生活当中也有所体现。

一个团队里总会有一些哪里需要哪里搬的这种万金油的成员,在必要的时候呢顶到缺人的岗位之上。

可是一旦所有成员全都是万金油的话,这反而会拉低团队的平均水准状态。

法之所以能够降低方差呢,最主要的原因在于它可以平滑高次向的方差。

对于具有x的n次方,那其中n大于等于三形式的这个高阶指数项来说,输入和输出之间会存在着类似雪崩的效应。

输入端一点微小的扰动都可能导致输出大幅度的波动。

如果说输入输出之间的关系啊,拟合结果当中存在着这样高阶像的话,那它必然是不稳定状态。

法的好处就在于能够降低高阶项的方差,同时呢又不会影响到线性项的输出。

如果弱学习器是多项式这类高阶的模型,或者说是决策树这类容易受到样本扰动影响的模型,用装待法来继承的话,都是不错的选择。

从贝叶斯的角度来看,装袋法的输出是近似于后验最优的预测,但是这需要弱学习器满足次序正确的条件还是以分类问题为例。

如果说给定量本x属于类别y的概率最大,那么次序正确的分类器就应该以最大的概率把x划分到y当中。

可以证明这种情况下,装袋法所能达到的最高精度就是按照后验概率对样本进行划分。

这时候模型的错误率呢就是贝叶斯错误率。

决策树啊是集成学习当中最青睐的机学习器,无论是提升法还是装待法,它代表性的算法都是在决策树的基础上发展出来的。

接下来呢我将原始的决策树算法和经过集成处理之后的决策树算法应用在线性不可分的曼城西布朗这个数据集之上,点击文告。

你可以看到分类的结果。

在使用单个决策树的这个decision tree classifier类当中,即使当决策树的深度设置为四的数,还会存在着误分类点,可如果再增加一层节点的话,就可以实现完全正确的分类。

在这里需要说明的一个事是什么呢?由于决策树的初始生成方式它是随机的,所以即使深度相同的数啊,也不见得能够保证每次都能够生成完全一致的边界。

也就是说在不同的仿真当中,它得到的结果可能是不一样。

采用决策树的集成呢可以得到不同的分类边界。

在SK line当中,两种集成的方法都在ensemble.这个模块当中类的名称呢分别是ADABO、 st、 classifier,还有bagging classifier.在ADB boost和装袋方法当中啊,每个计时器我都把它设置为深度为三的决策书。

那点击文稿你就可以看到集成方法。

它分类的结果从结果当中可以看出,提升方法,它可以得到完全正确的结果。

但装袋方法的分类呢还会存在着一点点的误差。

它的原因在于说深度为三的这个决策树呢,它本身是一个弱学习器,会存在着不小的偏差,提升方法能够同时控制偏差和方差。

所以呢可以将每个数据点都正确分类,但装戴方法它只能降低方差,而没法改善偏差,出现误分类点也就不奇怪了。

除了提升法和装待法之外,另一种知名度比较低的集成方法是堆叠法,堆叠法呢也叫做堆叠泛化,它是层次化的集成方法。

思想的话和神经网络类似,只不过神经网络它堆叠的对象是神经元啊是隐藏层。

而集成方法呢堆叠的是同构或者异构的基学习器。

堆叠法它先要用自助采样生成不同的数据子集,用数据子集训练。

第一层当中不同的机械机器,第一层机械机器的输出,再被送到第二层的原分类器当中作一输入,用来呢训练原分类器的参数。

队列法的思想,它和前两种方法是有所不同的,无论是提升法还是装待法,它的重点都落在单个模型的生成方市场,也就是如何训练出较好的机学习器。

机械机器的形式呢一般来说是统一的,而堆叠法的重点在于如何将不同的机械机器它的结果给它组合起来。

研究的对象是让所有机学机器发挥出最大效果的组合策略,研究的是这个策略。

某种意义上来说,堆叠法的训练数据不是原始的训练数据集,而是不同的机械机器。

在训练数据集上的结果起到的呢是模型平均的作用。

提升,把和装待把都可以看成是它的特例。

正因如此,堆叠法除了被视为集成方法之外,还可以看作是模型选择的一个手段。

集成方法呢它超出了简单的模型范畴,属于一类元学习的方法。

元学习呢还没有业界公认的这个标准的解释,但通常可以理解成是关于学习的学习在集成方法这个实例。

当中原学习体现在通过改变数据的特征,改变数据集,还有改变算法的构造方式,通过多算法的融合来实现更加灵活的学习。

今天,我和你分享了集成学习的基本原理,并且介绍了提升法。

装袋法。

还有堆叠法的一些细节,包含着以下四个要点。

第一,极正学习可以将多个弱学习器组合成强学习器,是模型的融合方法。

第二,提升方法,通过重新分配数据的权重来改善弱学习器,可以提升模型的偏差性。

第三,装待方法,通过重新采样数据来改善弱学习器,可以提升模型的方法性能。

第四,堆叠方法,通过重新构造输出来改善弱学习器,可以看成广义的模型。

选择不同的集成方法呢其实也可以集成起来。

如果将提升方法的输出作为装袋方法的机学机器,得到的就是multiboost性方法。

而如果将装袋方法的输出作为提升方法的机学习器,得到的就是iteriity bagging这样的方法。

那么这两种方法呢你可以深入了解它们的原理和优缺点,并在这里呢留下你的见解。