前向分布算法与Adaboost

首先了解一下提升方法的思路:”将多个弱学习模型组合成一个强学习模型,这个强学习模型可以达到比任何一个弱学习模型都要好的预测效果”,那么应该怎样求这个强学习模型,直接就能求出来吗?况且到目前为止连弱学习模型都还没有,那么就必须弄明白怎样来学习弱学习模型,之后又该怎样来组合它们呢?显然第一个问题非常困难,基本上是不可能求解的,而第二个问题前向分布算法给出了答案。

前向分布算法

前向分布算法考虑的问题及解决方案
前向分布算法考虑这样一个问题:”给定一个训练数据集和损失函数,并且弱模型通过权重之和的方式组合成强模型,那么我们怎么来求这些弱模型以及最终的强模型?“
我们用数学化的语言描述一下上面的问题:
给定训练数据集T={(x1, y1),(x2, y2),…,(xN, yN)}和损失函数L(y, f(x)),f(x)是最终的强学习模型,因为弱模型通过权重之和的方式组合成强模型,所以f(x)可以如下表示:
在这里插入图片描述
其中b(x;γm)是弱学习模型,βm是弱学习模型的权重系数,γm是弱学习模型的参数。
所以前向分布算法考虑的问题是,如何求出所有的βm和γm,即优化如下目标表达式:
在这里插入图片描述
显然一次性求出所有的βm和γm基本不可能,所以前向分布算法给出的解决办法是:“利用贪心算法,每一步只学习一个弱模型及其系数,使得当前弱模型和之前所有的弱模型组合后目标表达式取得最优值,最终就可以使得所有弱模型组合后目标表达式取得最优值”。

前向分布算法:
输入:训练数据集T={(x1, y1),(x2, y2),…,(xN, yN)};损失函数L(y, f(x))
输出:强学习模型f(x)
(1)初始化f0(x)=0
(2)对m=1, 2 ,…, M

  • (a)极小化损失函数
    在这里插入图片描述
  • (b)更新
    在这里插入图片描述

(3)最终得到强学习模型f(x)
在这里插入图片描述
总之,提升方法告诉我们如何来求一个效果更好模型,那就是将多个弱模型组合起来,这仅仅是一个思路,而前向分布算法就具体告诉我们应该如何来做。

Adaboost算法

Adaboost是提升算法中最具代表性的算法之一,它和前向分布算法有着千丝万缕的联系
,可以这样来说,当前向分布算法的损失函数L(y, f(x))取指数函数时,该前向分布算法就成了Adaboost算法。

Adaboost算法:
输入:训练数据集T={(x1, y1),(x2, y2),…,(xN, yN)},其中xi∈Rn , yi∈{-1, +1}。
输出:最终分类器C(x)
( 1 )初始化训练数据集的权值分布
在这里插入图片描述
( 2 )m=1, 2, …, M

  • ( a ) 使用具有权值分布Dm的训练数据集来训练数据,得到一个在加权训练数据集上误差率最小的弱分类器Gm(x)
  • ( b ) 计算弱分类器Gm(x)在训练数据集上的误差率em
    在这里插入图片描述
  • ( c ) 计算弱分类器Gm(x)的系数αm
    在这里插入图片描述
    这里的对数是自然对数。
  • ( d ) 更新训练数据集的权值分布Dm,得到新的权值分布Dm+1
    在这里插入图片描述
    Zm是规范化因子,它使得Dm+1也构成一个概率分布即相加之和等于1,如下:
    在这里插入图片描述

(3)得到强分类器f(x)
在这里插入图片描述
(4)得到最终分类器C(x)
在这里插入图片描述
Adaboost算法说明:
上述算法步骤(2)中:
( a ) Gm(x)可以是任一种若分类模型,但它必须是当前加权训练数据集上误差率最小的,因为这样才可以使得fm-1(x) + Gm(x)在指数损失函数上取得最小值,其中fm-1(x)指的是第 m 次迭代之前的所有弱模型的加权和。后面在分析Adaboost和前向分布算法的关系时,会讲到这个知识。
( b ) 弱分类器Gm(x)在训练数据集上的误差率em是被Gm(x)误分类的样本的权值之和,由此可以看出样本权值和误差率的关系。
( c )当误差率em≤1/2时,αm≥0,并且随着em的减小,αm越来越大。由此可以看出,误差率越小的弱分类器的权重越大,那它在最终分类器中的作用就越大。
( d )更新样本权值分布,为下一轮做准备
在这里插入图片描述
由此可以看出,正确分类的样本在下一轮中的权重会减小,而误分类的样本在下一轮
中的权重会增大,两者相比,误分类的样本在下一轮中权重被放大e2αm倍,所以误分类样本在下一轮学习过程中的作用更大。

Adaboost算法和前向分布算法的关系:
现在来证明当前向分布算法的损失函数是指数函数时,其学习操作等价于Adaboost算法。
指数损失函数如下:
在这里插入图片描述
证明:
我们知道前向分布算法第m轮的执行过程有两个,如下:
过程(1):求得αm和Gm(x),使得fm-1(x) + αm Gm(x)在训练数据集上的指数损失最小,如下所示:
在这里插入图片描述
过程(2):更新
fm(x) = fm-1(x) + αm Gm(x)

现在证明前向分布算法第m轮求出的αm和Gm(x)就是Adaboost算法中第m轮求出的αm和Gm(x),证明过程如下:
上式可以表示为:
在这里插入图片描述
其中wmi=exp(-yifm-1(xi)),它既不依赖与 α 也不依赖于G(x),所以它与最小化无关,但是它每一轮都要更新。

首先求解Gm(x),因为wmi和第m-1轮的强学习模型fm-1(x)有关,在第m轮时wmi相当于就是一个定值,对于第m轮的弱学习器Gm(x)分类错误的点有wmi · e正值,对于第m轮的弱学习器Gm(x)分类正确的点有wmi · e负值,那么第m轮的弱学习器Gm(x)分类错误的点越少,即Gm(x)的误差率越小,目标表达式A就可以取得最小值啦。所以说前向分布算法第m轮求得的弱分类器Gm(x)就是Adaboost第m轮求得的弱分类器Gm(x),它们都是在当前加权数据集上误差率最小的弱分类器。

其次求解αm,先将目标表达式A转换成如下形式:
在这里插入图片描述
即得到
在这里插入图片描述
接着将上面求得的Gm(x)带入B式,然后对α求导并令导数等于0得:

在这里插入图片描述
其中,em如下表示:
在这里插入图片描述
em正是第m轮弱学习器Gm(x)的误差率,所以前向分布算法第m轮求得的αm就是Adaboost第m轮求得的αm。因为Adaboost更新样本权值分布时做了规范化,所示上式中的分母就为1了,那在计算误差率就只需要计算分子即可。

最后来看一下样本权值的更新,前向分布算法的权值更新公式为wm,i= exp(-yifm-1(xi)),所以wm+1,i = exp(-yi fm(xi)),又因为fm(xi) = fm-1(x) + αmGm(x),所以wm+1,i = exp(-yi(fm-1(x) + αmGm(x))) = wm,i · exp(-yiαmGm(x)),这与Adaboost的样本权值更新公式只差了规范化因子,所以前向分布算法的样本权值更新公式和Adaboost的样本权值更新公式是等价的。

综上所述,当前向分布算法的损失函数是指数函数时,其学习操作等价于Adaboost算法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章