集成学习(一):AdaBoost原理

前言

AdaBost算法是Boosting族算法最著名的代表。这一族算法的工作机制也是很类似的:先从初始训练集训练处一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续收到更多关注,然后基于调整之后的的样本分布来训练下一个基学习器;日此往复,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权组合。
由于这里重点介绍的是AdsBoost算法,接下来就将介绍其原理和算法步骤。

1. 算法原理

这里讲解AdaBoost算法的推导,使用的是“加性模型”,既基学习器的线性组合

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

其中, ht(x) 是代表一个基学习器, αt 是代表权重。然后定义最小化指数损失函数
Lexp(H|D)=Ex D[ef(x)H(x)]

其中D代表的是两个分类,这里使用的是 ±1 表示。在AdaBoost算法中,第一个基分类器 h1 是通过直接将基学习算法用于初始数据分布而得;伺候迭代地生成 ht αt ,当基分类器 ht 基于分布 Dt 产生后,该及分类器的权重 αt 应使得 αtht 最小化指数函数
Lexp(αtht)=Ex Dt[ef(x)αtht(x)]=Ex Dt[eαtΠ(f(x)=ht(x))+eαtΠ(f(x)ht(x))]=eαtPx Dt(f(x)=ht(x))+eαtPx Dt(f(x)ht(x))=eαt(1ϵt)+eαtϵt

其中 ϵt=Px Dt(ht(x)f(x)) ,也就是分类错误率。在对指数损失函数求偏导得到
Lexp(αtht|Dt)αt=eαt(1ϵt)+eαtϵt

令偏导数为零,得到
αt=12ln(1ϵtϵt)

AdaBoost
算法在获得 Ht1 之后仰恩分布将进行调整,使下一轮的基学习器 ht 能够修成 Ht1 的错误。理想的 ht 能修正 Ht1 的全部错误,既最小化
Lexp(Ht1+ht|D)=Ex D[ef(x)(Ht1(x)+ht(x))]=Ex D[ef(x)(Ht1(x))ef(x)ht(x)]

由于 f2(x)=h2(x)=1 ,上面式子中的 ef(x)ht(x) 的泰勒展开近似为
Lexp(Ht1+ht|D)Ex D[ef(x)(Ht1(x))(1f(x)ht(x)+f2(x)h2t(x)2]=Ex D[ef(x)(Ht1(x))(1f(x)ht(x)+12]

在最优化的过程中是最小化指数损失函数
ht(x)=argminhLexp(Ht1(x)+ht|D)=argminhEx D[ef(x)(Ht1)(x)(1f(x)ht(x)+12]=argmaxhEx D[ef(x)(Ht1(x))f(x)ht(x)]=argmaxhEx D[ef(x)Ht1(x)Ex D[ef(x)Ht1(x)]f(x)ht(x)]

注意到 Ex D[ef(x)Ht1(x)] 是一个常数。令 Dt 表示一个分布
Dt(x)=D(x)ef(x)Ht1(x)Ex D[ef(x)Ht1(x)]

则根据数学期望的定义,这等价于令
ht(x)=argmaxhEx D[ef(x)Ht1(x)Ex D[ef(x)Ht1(x)]f(x)ht(x)]=argmaxhEx Dt[f(x)ht(x)]

f(x) h(x)1,+1 ,有
f(x)h(x)=12Π(f(x)f(x))


ht(x)=argminhEx Dt[Π(f(x)f(x))]

Dt Dt+1 的关系有
Dt+1=D(x)ef(x)Ht(x)Ex D[ef(x)Ht(x)]f(x)ht(x)]=D(x)ef(x)Ht1(x)ef(x)αtht(x)Ex D[ef(x)Ht(x)]=Dt(x)ef(x)αtht(x)Ex D[ef(x)Ht1(x)]Ex D[ef(x)Ht(x)]

这里从基于加性模型迭代式,优化指数损失函数的角度推导了AdaBoost算法。

2. 算法步骤

这里写图片描述

3. 参考

  1. 机器学习——周志华
  2. 统计学习方法——李航
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值