集成学习

集成学习

什么是集成学习

所谓集成学习简单理解就是指采用多个分类器对数据集进行预测,从而提高整体分类器的泛化能力。

弱学习和强学习

准确率仅比随机猜测略高的学习算法称为弱学习算法;识别准确率很高并能在多项式时间内完成的学习算法称为强学习算法。

集成学习有效的前提

1.分类器的精度,每个弱分类器的分类精度必须大于0.5。
2.弱分类器之间应该具有差异性,否则集成效果不是很好

集成学习分类

按照基本分类器之间的关系可以分为异态集成学习和同态集成学习。
异态集成学习是指弱分类器之间本身不同
同态集成学习是指弱分类器之间本身相同只是参数不同

>

AdaBoost

AdaBoost,是英文”Adaptive Boosting”(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出。

Adaboost是一种迭代算法,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率。其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。

算法根据每次训练集中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。

在具体实现上,最初令每个样本的权重都相等,对于第k次迭代操作,我们就根据这些权重来选取样本点,进而训练分类器。然后就根据这个分类器,来提高被它分错的的样本的权重,并降低被正确分类的样本权重。然后,权重更新过的样本集被用于训练下一个分类器。整个训练过程如此迭代地进行下去。

Adaboost的算法流程

1、初始化训练数据的权值分布 D1 。每一个训练样本最开始时都被赋予相同的权重: 1/m

D1=(w11,w12,...,w1m),w1i=1/m

接下来,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它被选中的概率就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。具体说来,则是

2、对于 t=1,2,...,T

3、基于分布 Dt 从数据集 D 中训练出分类器 ht。(选取让误差率最低的阈值来设计基本分类器)

ht(x)=ξ(D,Dt)

4、计算 ht(x) 在训练数据集上的分类误差

et=P(ht(xi)yi)=i=1mwtiI(ht(xi)yi)

I(ht(xi)yi)={01 if ht(xi)=yi if ht(xi)yi

由上述式子可知, ht(x) 在训练数据集上的误差率 et 就是被 ht(x) 误分类样本的权值之和。

5、计算分类器 ht 的权重, αt 表示 ht(x) 在最终分类器中的重要程度

αt=12ln(1etet)

这里写图片描述
由上述式子可知, et<=1/2 时, at>=0 ,且 at 随着 et 的减小而增大,意味着分类误差率越小的基本分类器在最终分类器中的作用越大

6、更新训练数据集的权值分布,得到样本的新的权值分布,用于下一轮迭代

Dt+1=(wt+1,1,wt+1,2,...,wt+1,m)

wt+1,i=wt,iZt×{exp(αt)exp(αt) if ht(xi)=yi if ht(xi)yi=wt,iZtexp(αtht(xi)yi)

使得被基本分类器 ht(x) 误分类样本的权值增大,而被正确分类样本的权值减小。通过这样的方式,AdaBoost方法能“聚焦于”那些较难分的样本上。其中, Zt 是规范化因子,使得 Dt+1 成为一个概率分布。
Zt=i=1mwtiexp(αtyiht(xi))

7、最后总体分类的判决使用各个弱分类器的加权平均

f(x)=t=1Tαtht(x)

8、得到最终分类器

h(x)=sign(f(x))=sign(t=1Tαtht(x))

弱分类器的误差和AdaBoost框架的误差

在整个训练的过程中,每轮训练得到的弱分类器可能一直会存在分类错误的问题(不论训练了多少轮,生成的单个弱分类器都有分类错误),然而整个AdaBoost框架却有可能快速收敛(整个AdaBoost框架的错误率为0)。造成这个现象的原因是:

每轮训练结束后,AdaBoost框架会对样本的权重进行调整,该调整的结果是越到后面被错误分类的样本权重会越高。这样到后面,单个弱分类器为了达到较低的带权分类误差都会把样本权重高的样本分类正确。

虽然单个弱分类器会造成分类错误,但这些错误分类的弱分类器的权重相对全体分类器是比较低的,在最后输出时会被前面正确分类的高权重弱分类器“平衡”掉。这样造成的结果就是,虽然每个弱分类器可能都有分错的样本,然而整个AdaBoost框架却能保证对每个样本进行正确分类,从而实现快速收敛。

多属性数据集的处理

在每一轮训练过程中,在每个属性上根据分割的阈值不同得到多个单层分类器。在这些从所有属性上得到的分类器中选取一个带权误差率最小的单层分类器作为该轮训练的弱分类器。

Bagging

想要得到泛化性能强的集成,集成中的个体学习器应尽可能相互独立,但是相互独立很难做到,我们可以做的是使基学习器尽可能具有较大的差异。

一种可能的做法是对训练样本进行采样,产生若干个不同的子集,再从每个子集中训练出一个基学习器。这样获得的基学习器渴望有较大的差异。为了获得好的集成,使用相互有交叠的采样子集,这样每个学习器使用到足够多的训练数据,使得学习器不会太差

Bagging是并行式集成学习方法的著名代表,它是基于自助采样法(有放回的取样)来提高学习器泛化能力的一种很高效的集成学习方法。

Bagging的策略

从包含 m 个样本的数据集 D 中用自助采样选出 m 个样本,执行 T 次,选出 T 个样本子集 {D1,D2,...,DT}。在所有属性上,分别对应这 T 个样本子集建立 T 个学习器 {h1(x),h2(x),...,hT(x)} ,将这 T 个学习器放在各自的训练数据上进行学习通过投票法或平均法对这 T 个学习器进行结合。
Alt text

由于Bagging采用的是自助采样法,那么基学习器大概只使用了初始训练集中约63.2%的样本,剩下的样本可以用作验证集来对泛化性能进行估计。

模型的偏差和方差

任何模型中出现的误差都可以在数学上分解成三个分量

Err(x)=(E[fˆ(x)]f(x))2+E[fˆ(x)E[fˆ(x)]]2+σ2e

Err(x)=Bias2+Variance+IrreducibleError

偏差:描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据,
方差:描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散

通常情况下,增加模型的复杂性时,偏差的降低将直接导致模型总误差的减少,但当过了某个特定的点之后,再增加模型的复杂程度则会适得其反。最终,模型将面临过度拟合的问题,并且具有了较高的方差。理论上,最优的模型应该做到尽量保持上述两类误差之间平衡。
Alt text

方差和偏差的来源

机器学习的模型,对数据非常依赖。如果我们不知道数据服从什么样的分布,或者没有办法拿到所有可能的数据,那么训练出来的模型和真实模型之间就会存在不一致。这种不一致表现在两个方面。

1、真实模型根本就没有包含在我们训练模型的模型空间中。比如本来是非线性模型,你非要拿线性模型去拟合数据,那么不论你怎么调整模型参数去选择模型,结果也是不对的。这就是偏差的来源。表现为模型不正确。

2、不管真实模型在不在我们训练模型的空间中,由于我们不能拿到所有可能的数据,如果拿到的数据不是那么具有代表性,那么不同的数据训练出来的模型参数就会不同。然后用这个模型去做预测,结果也就会和真实值之间有差异。这就是方差的来源。表现为模型不稳定。

用打靶的例子来说明。偏差好比你的瞄准能力;方差好比你使用的枪的性能。
Alt text

随机森林

Bagging算法通过自助采样得到不同的数据,然后得到不同的学习器,最后通过投票和平均的方式得到最终的学习器,以达到降低variance的效果。决策树算法通过递归方式建立子树,最终得到完整的树,它对于不同的数据相对会敏感,即其算法的variance很大。如果将这两种方法结合起来,就是随机森林。

随机森林是一种多功能的机器学习算法,能够执行回归和分类的任务。在随机森林中,我们将生成很多的决策树。在分类任务中,随机森林中的每一棵树都会给出自己的分类选择,并由此进行“投票”,森林整体的输出结果将会是票数最多的分类选项;在回归问题中,随机森林的输出将会是所有决策树输出的平均值。

Alt text

算法

Alt text

随机选取训练样本集

使用自助采样方法形成每颗树的训练集。

随机选取分裂属性集(特征投影)

假设共有M个属性,指定一个属性数F≤M,在每个内部结点,从M个属性中随机抽取F个属性,以这F个属性上最好的分裂方式对结点进行分裂。这个过程中,相当于作了低维度的投影。 得到的特征实际上是原始特征的随机子集,这使得生成模型过程中的效率也大大提高了。

特征扩展

更加有能力的特征投影就是不再单一选取单一维度的特征,而是将多个维度的特征进行组合,得到新的一维的特征,这称为特征扩展。

特征选择

为了解决如何选择特征的组合方式的问题,我们暂不考虑特征之间的相关关系,而是为每个特征打一个分数,表示特征的重要性,然后按照重要性进行排序,选择最重要的前K个特征作为选取出来的特征。

特征选择舍去不必要的特征,使得模型复杂度大大降低,可以简化假设,缩短预测时间;同时,舍去了特征的噪声,可以提高模型的泛化能力,使得模型不容易对噪声过拟合。随机森林算法是一个非线性的模型,我们不能单纯以线性模型中的权重作为衡量特征重要性的标准。

Permutation Test:

Permutation Test的方法是通过将第i个维度特征的所有数据重新的随机调整位置,然后比较一下原始数据和调整之后的数据表现的差距,来评价这个维度的特征是有多么重要。

随机森林的优点与缺点

优点
1.随机森林算法能解决分类与回归两种类型的问题,并在这两个方面都有相当好的估计表现

2.随机森林对于高维数据集的处理能力令人兴奋,它可以处理成千上万的输入变量,并确定最重要的变量,因此被认为是一个不错的降维方法。

3.在对缺失数据进行估计时,随机森林是一个十分有效的方法。就算存在大量的数据缺失,随机森林也能较好地保持精确性;

4.当存在分类不平衡的情况时,随机森林能够提供平衡数据集误差的有效方法;

5.模型的上述性能可以被扩展运用到未标记的数据集中,用于引导无监督聚类、数据透视和异常检测
缺点
1.随机森林在解决回归问题时并不能给出一个连续型的输出。随机森林不能够作出超越训练集数据范围的预测,这可能导致在对某些还有特定噪声的数据进行建模时出现过度拟合。

2.对于许多统计建模者来说,随机森林给人的感觉像是一个黑盒子——你几乎无法控制模型内部的运行,只能在不同的参数和随机种子之间进行尝试。

Stacking

stacked 产生方法是一种截然不同的组合多个模型的方法,它讲的是组合学习器的概念

过程
1、划分训练数据集为两个不相交的集合。
2、 在第一个集合上训练多个学习器。
3、 在第二个集合上测试这几个学习器
4、把第三步得到的预测结果作为输入,把正确的回应作为输出,训练一个高层学习器,

Alt text

  • 4
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值