机器学习之集成学习(一)

一、集成学习概述

集成学习一般是,先产生一组个体学习器,这些个体学习器可以由同一个学习算法或不同的学习算法从训练数据中产生,再通过某种结合策略将它们结合起来。这里,我们可以看到,个体学习器的产生有两种:

  • 集成是同质的,即个体学习器的产生是由同一个学习算法得到的,比如只包括决策树或只包括神经网络等
  • 集成是异质的,即个体学习器的产生是由不同的学习算法得到的,比如同时包括决策树和神经网络。

根据个体学习器之间的关联关系,集成学习可以分为以下两种类型:

  1. 序列集成方法:参与训练的个体学习器是按顺序生成的,这些个体学习器之间是相互依赖的。通过给上一个学习器误分类的样本较高的权重,使得当前的个体学习器重点训练这些误分类的样本。依次迭代,从而整体上提高分类的准确率。比如,Boosting,代表算法为Adaboost算法。
  2. 并行集成方法:参与训练的学习器是并行生成的。其基本动机是利用个体学习器之间的独立性,通过平均化来减少误差。一般而言,这些独立的个体学习器可以是同质的,也可以是异质的。比如,Bagging与随机森林 Random Forest。

集成学习方法在不同规模的数据集上的处理方式:

  • 大规模数据集:划分为多个小数据集,学习多个模型进行组合。
  • 小规模数据集:利用Bootstrap方法,有放回的随机抽样,得到多个数据集(和原数据集的规模一致),分别训练多个模型进行组合。

集成学习将多个个体学习器进行组合,常可获得比单一学习器显著优越的泛化性能。这些学习器一般为弱学习器,弱学习器一般是指泛化性能略高于随机猜测的学习器,比如,二分类问题上精度略高于50%的学习器。
集成学习要想到达好的效果,弱学习器需要满足好而不同表现在弱学习器的学习效果不能太差,不同表现在弱学习器之间是有差异的,要有多样性。

二、Boosting

Boosting是一族可将弱学习器提升为强学习器的算法。前面我们讲过,它属于串行生成的序列化方法,个体学习器之间是强依赖关系。这族算法的工作机制类似:

首先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本的分布进行调整,使得先前基学习器误分类的样本在后续会受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器,如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权求和。
                                             —《机器学习》周志华

在这里插入图片描述
我们结合这个图来说明Boosting算法,首先利用初始训练集和初始权重训练出第一个弱分类器 h 1 h1 h1,可以看到,样本集中有两个被误分类,接下来,将误分类的样本的权重提高,使得其在下一次分类中得到更多的关注,然后基于调整的样本权重的数据集训练出新的弱分类器 h 2 h2 h2,这一次,我们可以看到,之前被误分类的样本被正确的分类,依次重复进行,直到达到预定的分类器的个数M,这里M=4。
在这里插入图片描述
每一个弱分类器都有自己的权重 α m \alpha_{m} αm y m ( x ) y_{m}(x) ym(x)就是我们训练出来的分类器,共有 M M M个, Y M ( x ) Y_{M}(x) YM(x)为加权求和后的分类器。

Boosting算法里主要包括Adaboost算法和提升树(Boosting Tree)算法。提升树算法里面又包括了GBDT梯度提升树(Gradient Boosting Decision Tree)算法和XGBoost极端梯度提升(Extreme Gradient Boosting)算法。

三、Bagging 与随机森林

Bagging

Bagging全称为Bootstrap Aggregating(装袋)。==它出现的意义?==我们之前说了,要得到泛化性能强的集成,需要个体分类器好而不同。这里强调不同,也就是说个体分类器要有差异。给定一个数据集,一种做法是对数据集进行采样,产生若干个不同的子集,再从每个数据子集训练出一个基学习器。但是这样可能会有一个问题,每个子集只是完整数据集的一部分,所以训练出来的基学习器只能反映部分样本,造成基学习器性能不佳。
为了解决这个问题,Bagging提出了Bootstrap的方法,也叫自助采样法,即在训练集中进行有放回的随机抽样。整个Bagging流程如下:

1.从原始数据集中抽取训练集。给定包含m个样本的原始数据集,我们进行有放回的随机抽样,抽取m个样本。这一过程重复K次,因为有K个基学习器。同时这m个样本中可能会有重复的样本。这正是Bootstrap的巧妙之处。自助采样法给Bagging带来的好处就是:每个基学习器使用的数据只占了原数据集的63.2%,剩下的36.8%的样本可以用作验证集来对泛化能力进行“包外估计”。那么这里的63.2%怎么得出来的呢?
假设我们有 n n n 个样本,进行有放回的随机抽样,那么每个样本不被抽到的概率为 1 − 1 n 1-\frac{1}{n} 1n1,则每个样本都不被抽到的概率为 ( 1 − 1 n ) n (1-\frac{1}{n})^{n} (1n1)n。当样本是容量很大, n → ∞ n\to \infty n,有
lim ⁡   n → ∞ ( 1 − 1 n ) n = lim ⁡   n → ∞ [ ( 1 − 1 n ) ( − n ) ] − 1 = e − 1 \lim_{\ \scriptscriptstyle n\to\infty}(1-\frac{1}{n})^{n}=\lim_{\ \scriptscriptstyle n\to\infty}[(1-\frac{1}{n})^{(-n)}]^{-1}=e^{-1}  nlim(1n1)n= nlim[(1n1)(n)]1=e1
因此,每个样本被抽到的概率就为,
1 − lim ⁡   n → ∞ ( 1 − 1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值