前言

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))]

DtDt+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. 算法步骤

集成学习(一):AdaBoost原理

3. 参考

  1. 机器学习——周志华
  2. 统计学习方法——李航

相关文章:

  • 2021-11-04
  • 2021-05-28
  • 2022-12-23
  • 2022-12-23
  • 2021-12-31
猜你喜欢
  • 2021-04-06
  • 2021-07-04
  • 2021-10-23
  • 2021-11-11
  • 2021-08-03
相关资源
相似解决方案