[机器学习]集成学习

集成学习

集成学习(ensemble learning):构建并结合多个学习器来完成学习任务。
集成学习示意图
集成学习通过将多个学习器结合,常可获得比单一学习器显著优越的泛化性能。但想获得好的集成,个体学习器应“好而不同”,即准确性、多样性。

数学验证

考虑二分类问题 y ∈ { − 1 , + 1 } y\in\left \{-1,+1 \right \} y{1,+1} 和真实函数 f f f,假设基分类器错误率为 ϵ \epsilon ϵ,即对每个基分类器 h i h_i hi 有: P ( h i ( x ) ≠ f ( x ) ) = ϵ P(h_i(x)\ne f(x))=\epsilon P(hi(x)=f(x))=ϵ

若集成通过简单投票法结合 T T T 个基分类器,若有超过半数的基分类器正确,则集成分类就正确: H ( x ) = s i g n ( ∑ i = 1 T h i ( x ) ) H(x)=sign(\sum_{i=1}^{T}h_i(x) ) H(x)=sign(i=1Thi(x))

假设基分类器的错误率相互独立,则由Hoeffding不等式可知,集成的错误率为: P ( H ( x ) ≠ f ( x ) ) = ∑ k = 0 [ T 2 ] ( 1 − ϵ ) k ϵ T − k ≤ e x p ( − 1 2 T ( 1 − 2 ϵ ) 2 ) P(H(x) \ne f(x))=\sum_{k=0}^{\left [ \frac{T}{2} \right ] }(1-\epsilon)^k \epsilon^{T-k}\le exp(-\frac{1}{2}T(1-2\epsilon)^2) P(H(x)=f(x))=k=0[2T](1ϵ)kϵTkexp(21T(12ϵ)2)

这表明,随着集成中个体分类器数目 T T T 的增大,集成的错误率将指数级下降,最终趋于0。

问题:我们假设基学习器的误差相互独立,但现实任务里,个体学习器是为解决同一个问题训练出来的,显然不独立。

于是问题在于我们如何找到“好而不同”的个体学习器?

集成学习的分类

Boosting

工作机制:
先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;重复进行直至基学习器数目达到事先指定的值 T T T,最后将 T T T个基学习器加权结合。

AdaBoost
基于“加性模型”,即基学习器的线性组合: H ( x ) = ∑ t = 1 T α t h t ( x ) H(x)=\sum_{t=1}^{T}\alpha_th_t(x) H(x)=t=1Tαtht(x)
最小化指数损失函数:
ℓ e x p ( H ∣ D ) = E x ∼ D [ e − f ( x ) H ( x ) ] \ell_{exp}(H|D)=\mathbb{E}_{x\sim D}\left [ e^{-f(x)H(x)} \right ] exp(HD)=ExD[ef(x)H(x)]

AdaBoost算法

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

Bagging

自助采样法: 给定包含 m m m个样本的数据集,先随机去除一个样本放入采样机,再把该样本放回初始数据集时期下次仍可能被选中,经过 m m m次随机采样,得到 m m m个样本的采样集,初始训练集中有的样本在采样集里多次出现有的从未出现,初始训练集中约有 63.2 63.2% 63.2的样本出现在采样集中。

Bagging的学习机制: 采样出 T T T个含 m m m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,将基学习器结合。对预测输出结合时,对分类任务使用简单投票法,对回归任务使用简单平均法。

Bagging算法

  • 假定基学习器计算复杂度 O ( m ) O(m) O(m),则bagging复杂度为 T ( O ( m ) + O ( s ) ) T(O(m)+O(s)) T(O(m)+O(s)),其中 O ( s ) O(s) O(s)和常数 T T T都很小,故近似同阶,于是bagging是一个很高效的集成学习算法。
  • 与标准AdaBoost只适用二分类任务不同,Bagging能不经修改的用于多分类、回归等任务。
  • 由于每个基学习器只使用了 63.2 63.2% 63.2的样本,剩下样本可用作验证集对泛化性能进行包外估计

从偏差-方差分解的角度看,Bagging主要关注降低方差,因此它在不剪枝决策树、神经网络等一首样本扰动的学习器上效用更明显。

随机森林

随机森林(Random Forest)简称RF,是Bagging的一个扩展变体,它在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树训练中引入了随机属性选择。

与Bagging基学习器的“多样性”仅仅通过样本扰动(对初始训练集采样)而来不同,随机森林的基学习器多样性不仅来自样本扰动还来自属性扰动,这使得它泛化性能进一步提升。

结合策略

  • 平均法
  • 投票法
  • 学习法
    Stacking先从初始数据集训练出初始学习器,生成一个新数据集用于训练次级学习器,在新数据集中初级学习器的输出被当作样例输入特征,初始样本的标记被当作样例标记。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值