详细推导:基于“加性模型”的AdaBoost算法,即线性组合,简化模型为二分类任务
H(x)=∑t=0Tαtht(x),此处我们假设有T个个体学习器,即训练T次
我们的目的是得到αt和Dt来最小化指数损失函数
L(H)=Ex−D[e−y∗H(x)],
1. 怎么求αt:
对于每个学习器有L(αtht(x))=Ex−Dt[e−y∗αtht(x)]这个形式很难看懂,然后来看看更易于理解的形式:
L(αtht(x))=e−αtP(y=ht(x))+eαtp(y=ht(x))
因为对于每个x,对于的y和h(x)都只是1或-1
L对αt求导并等于0,即
e−αt(1−ϵt)+eαtϵt=0,得到α1=21ln(ϵ11−ϵ1)
2. 怎么求Dt:
AdaBoost算法在获得Ht−1之后样本分布将进行调整,是下一轮的基学习器ht能纠正Ht−1的一些错误,即最小化损失函数(此处有些疑惑,为什么是这样的损失函数,分布D是什么)
L(Ht−1+ht)=Ex−D[e−y(Ht−1(x+ht(x))]=EX−D[e−yHt−1(x)e−yht(x)]
指数函数的泰勒展开
L(Ht−1+ht)=Ex−D[e−yHt−1(x)(1−yht(x)+2y2ht2(x))]=Ex−D[e−yHt−1(x)(1−yht(x)+21)]=Ex−D[−e−yHt−1(x)yht(x)](舍去常数) ∗
上式的一些备注:首先Ht−1是确定的,要想最小化损失函数,即最小化在D分布下的期望,即最大化在某一个Dt分布下的yht(x)期望,又yht(x)=1−2I(y=ht(x)),其中I函数是为真时是1,假时是0,
上面的式子说明理想的ht将在分布Dt下最小化分类误差,个人的理解是只要分布符合Dt,即数据集的权重符合一定的分布,任何有效学习器分类都能使分类损失降到最小
那么Dt是什么呢?看回*式,将常数e−yHt−1(x)加入到分布D中,则可得到Dt分布
L(Ht−1+ht)=Ex−D[−e−yHt−1(x)yht(x)]=Ex−Dt[yht(x)]
根据分布相关知识,
Dt=ZtD∗e−yHt−1(x),此处Zt是一个规范化因子,使得Dt符合分布的特征
Dt=e−yHt−2(x)Dt−1Zt−1∗Zte−yHt−1(x)=Dt−1∗e−yht−1αt−1∗ZtZt−1
(这里Zt−1/Zt是规范化因子,此处具体是什么不是很理解)
上式的具体含义就是:
如果该样本在上一个学习器中分类正确,则该样本的权重变为
Wt+1=sum(Wt)Wt∗e−α
如果该样本在上一个学习器中分类错误,则该样本的权重变为
Wt+1=sum(Wt)Wt∗eα
其中sum(Wt)=∑tTWt∗e−α∗y∗ht(x),大概就是上文的Zt−1/Zt
到此基于加性模型的AdaBoost算法二分类任务详细推导结束,该结论同样适用于多分类任务
😉