集成学习的基本步骤

集成学习的基本步骤

集成学习一般可分为以下3个步骤。

(1)找到误差互相独立的基分类器。

(2)训练基分类器。

(3)合并基分类器的结果。

合并基分类器的方法有voting和stacking两种。前者是用投票的方式,将获得最多选票的结果作为最终的结果。后者是用串行的方式,把前一个基分类器的结果输出到下一个分类器,将所有基分类器的输出结果相加(或者用更复杂的算法
融合,比如把各基分类器的输出作为特征,使用逻辑回归作为融合模型进行最后的结果预测)作为最终的输出。

以Adaboost为例,其基分类器的训练和合并的基本步骤如下。

(1)确定基分类器:这里可以选取ID3决策树作为基分类器。事实上,任何分类模型都可以作为基分类器,但树形模型由于结构简单且较易产生随机性所以比较常用。

(2)训练基分类器:假设训练集为 { x i , y i } , i = 1 , . . . , N , \{x_i,y_i\},i=1,...,N, {xi,yi},i=1,...,N其中 y i ∈ { − 1 , 1 } y_i\boldsymbol{\in}\{−1,1\} yi{1,1},并且有T个基分类器,则可以按照如下过程来训练基分类器。

1.初始化采分布
D l ( i ) = 1 / N D_{\mathrm{l}}(i)={1/N} Dl(i)=1/N
2.令 t = 1 , 2 , . . . , T t=1,2,...,T t=1,2,...,T循环:

  • 从训练集中,按照 D t D_t Dt分布,采样出子集 S t = { x i , y i } , i = 1 , … , N t ; S_{t}=\{x_{i},y_{i}\},i=1,\ldots,N_{t}; St={xi,yi},i=1,,Nt;

  • S t S_{t} St训练出基分类器 h t h_t ht

  • 计算 h t h_t ht的错误率:
    E t = ∑ i = 1 N t I [ h t ( x i ) ≠ y i ] D t ( x i ) N t \mathcal{E}_t=\frac{\sum_{i=1}^{N_t}I[h_t(x_i)\neq y_i]D_t(x_i)}{N_t} Et=Nti=1NtI[ht(xi)=yi]Dt(xi)
    其中 I [ ] I[] I[]为判别函数;

  • 计算基分类器 h t h_t ht的权重:
    a t = log ⁡ ( 1 − E t ) E t a_{t}=\log{\frac{(1-{\mathcal{E}}_{t})}{{\mathcal{E}}_{t}}} at=logEt(1Et)

  • 设置下一次采样
    D i + 1 = { D i ( i ) 或者 D i ( i ) ( 1 − ε i ) ε i , h i ( x i ) ≠ y i ; D i ( i ) ε i ( 1 − ε i ) , p i ( x i ) = y i . D_{i+1}=\begin{cases}D_i(i)\text{或者}\dfrac{D_i(i)(1-\varepsilon_i)}{\varepsilon_i},h_i(x_i)\neq y_i;\\ \\ \dfrac{D_i(i)\varepsilon_i}{(1-\varepsilon_i)},p_i(x_i)=y_i.\end{cases} Di+1= Di(i)或者εiDi(i)(1εi),hi(xi)=yi;(1εi)Di(i)εi,pi(xi)=yi.
    并将它归一化为一个概率分布函数。

(3)合并基分类器:给定一个未知样本 z z z,输出分类结果为加权投票的结果 S i g n ( ∑ t = 1 T h t ( z ) a t ) Sign(\sum\limits_{t=1}^T h_t(z)a_t) Sign(t=1Tht(z)at)

从Adaboost的例子中我们可以明显地看到Boosting的思想,对分类正确的样本降低了权重,对分类错误的样本升高或者保持权重不变。 在最后进行模型融合的过程中,也根据错误率对基分类器进行加权融合。错误率低的分类器拥有更大的“话语权”。

另一个非常流行的模型是梯度提升决策树,其核心思想是,每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。

我们以一个视频网站的用户画像为例,为了将广告定向投放给指定年龄的用户,视频网站需要对每个用户的年龄做出预测。在这个问题中,每个样本是一个已知性别/年龄的用户,而特征则包括这个人访问的时长、时段、观看的视频的类型等。

例如用户A的真实年龄是25岁,但第一棵决策树的预测年龄是22岁,差了3
岁,即残差为3。那么在第二棵树里我们把A的年龄设为3岁去学习,如果第二棵树
能把A分到3岁的叶子节点,那两棵树的结果相加就可以得到A的真实年龄;如果第二棵树的结论是5岁,则A仍然存在−2岁的残差,第三棵树里A的年龄就变成−2岁,继续学。这里使用残差继续学习,就是GBDT中Gradient Boosted所表达的意思。

基分类器

基分类器的选择是集成学习主要步骤中的第一步,也是非常重要的一步。

最常用的基分类器是决策树,主要有以下3个方面的原因。

(1)决策树可以较为方便地将样本的权重整合到训练过程中,而不需要使用过采样的方法来调整样本权重。

(2)决策树的表达能力和泛化能力,可以通过调节树的层数来做折中。

(3)数据样本的扰动对于决策树的影响较大,因此不同子样本集合生成的决策树基分类器随机性较大,这样的“不稳定学习器”更适合作为基分类器。此外,在决策树节点分裂的时候,随机地选择一个特征子集,从中找出最优分裂属性,很好地引入了随机性。除了决策树外,神经网络模型也适合作为基分类器,主要由于神经网络模型也比较“不稳定”,而且还可以通过调整神经元数量、连接方式、网络层数、初始权值等方式引入随机性。

随机森林中的基分类器即为决策树。

这是随机森林属于Bagging类的集成学习。Bagging的主要好处是集成后的分类器的方差,比基分类器的方差小。Bagging所采用的基分类器,最好是本身对样本分布较为敏感的(即所谓不稳定的分类器),这样Bagging才能有用武之地。线性分类器或者K-近邻都是较为稳定的分类器,本身方差就不大,所以以它们为基分类器使用Bagging并不能在原有基分类器的基础上获得更好的表现,甚至可能因为Bagging的采样,而导致他们在训练中更难收敛,从而增大了集成分类器的偏差。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值