集成学习

作者: 三方斜阳 | 来源:发表于2021-05-20 20:58 被阅读0次


    基本概念:

    集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务,称为多分类器系统

    集成学习的主要思路是先通过一定的规则生成多个”个体学习器“,再采用某种集成策略进行组合,最后综合判断输出最终结果。一般而言,通常所说的集成学习中的多个学习器都是同质的"弱学习器"。同质是指的集成中只包含同种类型的个体学习器,如”决策树集成“中全是决策树,”神经网络集成“中只包含神经网络。基于该弱学习器,通过样本集扰动、输入特征扰动、输出表示扰动、算法参数扰动等方式生成多个学习器,进行集成后获得一个精度较好的"强学习器"。

    为了获得比单一学习器更好的效果,个体学习器需要具备“好而不同”的特性,也就是个体学习器的性能不能太差,要具有一定的准确性,并且要有多样性,即学习器之间具有差异。

    集成学习的一个关键假设就是:基学习器的误差相互独立,在现实任务中,个体学习器是为了解决同一个问题而训练出来的,他们显然不可能相互独立,事实上,个体学习器的“准确性”和“多样性”本身就存在冲突,一般,准确性很高之后,要增加多样性就要牺牲准确性,如何产生并结合“好而不同”的个体学习器,恰好是集成学习研究的核心。

    根据个体学习器的生成方式,目前的集成学习方法大致可以分成两类:

    1. 个体学习器之间存在强依赖关系,必须串行生成的序列化方法:Boosting

    2. 个体学习器之间不存在强依赖关系,可同时生成的并行化方法:Bagging 和 随机森林

    1. Boosting:

    Boosting算法的工作机制是:先从初始的训练集中训练出一个基学习器,在根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器,也就是每一轮根据上一轮的分类结果动态调整每个样本在分类器中的权重,如此重复进行,直到基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。

    从偏差-方差的角度,Boosting 更关注降低偏差,因此 Boosting 能基于泛化性能相当弱的学习器构建出很强的集成

    主要的算法有:AdaBoost/GBDT/Xgboost/LightGBM

    2. Bagging 和随机森林:

    Bagging 是并行式集成学习方法的著名代表,基于自助采样法,给定包含m个样本的数据集,先随机取出一个放入采样集中,再把该样本放回初始数据集,下次采样时该样本仍有可能被选中,这样,经过m次随机采样的操作,我们得到含有m个样本的采样集,初始训练集中有点样本在采样集里多次出现,有的则从未出现,这样采样出T个含有m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合。

    这种抽样的方式会导致有的样本取不到,大约有\lim\nolimits_{n\to\propto } (1-\frac{1}{n} )^n=36.8的样本取不到,这部分可以作为测试集。

    在对预测输出进行结合时,Bagging 通常对分类任务使用简单投票法,对回归任务使用简单平均法,若分类任务时出现两个类收到同样票数的情况,则简单的做法是随机选择一个,也可以进一步考察学习器投票的置信度来确定最终胜者。

    从偏差-方差的角度来看,Bagging 主要关注降低方差,因此它在不剪枝决策数据,神经网络等易受样本扰动的学习器上效用更为明显。

    3. 随机森林:

    是一种基于树模型的bagging算法改进的模型。假定数据集中有M个特征和 N个观测值。每一个树有放回的随机抽出N个观测值m(m=M或者m=logM)个特征。把每一个单一决策树的结果综合起来。

    4. adaboost

    假设弱分类器为 Gi(x),它在强分类器中的权重 αi,那么就可以得出强分类器 f(x):

    1. 每个弱分类器在强分类器中的权重是如何计算的?

    实际上在一个由 K 个弱分类器中组成的强分类器中,如果弱分类器的分类效果好,那么权重应该比较大,如果弱分类器的分类效果一般,权重应该降低。所以我们需要基于这个弱分类器对样本的分类错误率来决定它的权重,用公式表示就是:

    其中 ei 代表第 i 个分类器的分类错误率。

    2. 如何在每次训练迭代的过程中选择最优的弱分类器?

    实际上,AdaBoost 算法是通过改变样本的数据分布来实现的。AdaBoost 会判断每次训练的样本是否正确分类,对于正确分类的样本,降低它的权重,对于被错误分类的样本,增加它的权重。再基于上一次得到的分类准确率,来确定这次训练样本中每个样本的权重。然后将修改过权重的新数据集传递给下一层的分类器进行训练。这样做的好处就是,通过每一轮训练样本的动态权重,可以让训练的焦点集中到难分类的样本上,最终得到的弱分类器的组合更容易得到更高的分类准确率

    我们可以用 Dk+1 代表第 k+1 轮训练中,样本的权重集合,其中 Wk+1,1 代表第 k+1 轮中第一个样本的权重,以此类推 Wk+1,N 代表第 k+1 轮中第 N 个样本的权重,因此用公式表示为:

    第 k+1 轮中的样本权重,是根据该样本在第 k 轮的权重以及第 k 个分类器的准确率而定,具体的公式为:

    实例:

    假设我有 10 个训练样本,如下所示:

    首先在第一轮训练中,我们得到 10 个样本的权重为 1/10,即初始的 10 个样本权重一致,D1=(0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1)。假设我有 3 个基础分类器:

    我们可以知道分类器 f1 的错误率为 0.3,也就是 x 取值 6、7、8 时分类错误;分类器 f2 的错误率为 0.4,即 x 取值 0、1、2、9 时分类错误;分类器 f3 的错误率为 0.3,即 x 取值为 3、4、5 时分类错误。

    这 3 个分类器中,f1、f3 分类器的错误率最低,因此我们选择 f1 或 f3 作为最优分类器,假设我们选 f1 分类器作为最优分类器,即第一轮训练得到:

    根据分类器权重公式得到:

    然后我们对下一轮的样本更新求权重值,代入 Wk+1,i 和 Dk+1 的公式,可以得到新的权重矩阵:D2=(0.0715, 0.0715, 0.0715, 0.0715, 0.0715, 0.0715, 0.1666, 0.1666, 0.1666, 0.0715)。

    在第二轮训练中,我们继续统计三个分类器的准确率,可以得到分类器 f1 的错误率为 0.1666*3,也就是 x 取值为 6、7、8 时分类错误。分类器 f2 的错误率为 0.0715*4,即 x 取值为 0、1、2、9 时分类错误。分类器 f3 的错误率为 0.0715*3,即 x 取值 3、4、5 时分类错误。

    在这 3 个分类器中,f3 分类器的错误率最低,因此我们选择 f3 作为第二轮训练的最优分类器,即:

    根据分类器权重公式得到:

    同样,我们对下一轮的样本更新求权重值,代入 Wk+1,i 和 Dk+1 的公式,可以得到 D3=(0.0455,0.0455,0.0455,0.1667, 0.1667,0.01667,0.1060, 0.1060, 0.1060, 0.0455)。

    在第三轮训练中,我们继续统计三个分类器的准确率,可以得到分类器 f1 的错误率为 0.1060*3,也就是 x 取值 6、7、8 时分类错误。分类器 f2 的错误率为 0.0455*4,即 x 取值为 0、1、2、9 时分类错误。分类器 f3 的错误率为 0.1667*3,即 x 取值 3、4、5 时分类错误。

    在这 3 个分类器中,f2 分类器的错误率最低,因此我们选择 f2 作为第三轮训练的最优分类器,即:

    我们根据分类器权重公式得到:

    假设我们只进行 3 轮的训练,选择 3 个弱分类器,组合成一个强分类器,那么最终的强分类器 G(x) = 0.4236G1(x) + 0.6496G2(x)+0.7514G3(x)。

    实际上 AdaBoost 算法是一个框架,可以指定任意的分类器,通常可以采用 CART 分类器作为弱分类器。

    AdaBoost 算法可以把它理解为一种集成算法,通过训练不同的弱分类器,将这些弱分类器集成起来形成一个强分类器。在每一轮的训练中都会加入一个新的弱分类器,直到达到足够低的错误率或者达到指定的最大迭代次数为止。实际上每一次迭代都会引入一个新的弱分类器(这个分类器是每一次迭代中计算出来的,是新的分类器,不是事先准备好的)。

    在弱分类器的集合中,你不必担心弱分类器太弱了。实际上它只需要比随机猜测的效果略好一些即可。如果随机猜测的准确率是 50% 的话,那么每个弱分类器的准确率只要大于 50% 就可用。AdaBoost 的强大在于迭代训练的机制,这样通过 K 个“臭皮匠”的组合也可以得到一个“诸葛亮”(强分类器)。

    当然在每一轮的训练中,我们都需要从众多“臭皮匠”中选择一个拔尖的,也就是这一轮训练评比中的最优“臭皮匠”,对应的就是错误率最低的分类器。当然每一轮的样本的权重都会发生变化,这样做的目的是为了让之前错误分类的样本得到更多概率的重复训练机会。

    相关文章

      网友评论

        本文标题:集成学习

        本文链接:https://www.haomeiwen.com/subject/mltgjltx.html