给定下列训练样本,用AdaBoost算法学习一个强分类器。

 机器学习读书笔记(六)

 求解过程:初始化训练数据的权值分布,令每个权值W1i = 1/N = 0.1,其中,N = 10,i = 1,2, ..., 10,然后分别对于m = 1,2,3, ...等值进行迭代。

1 迭代过程1

对于m=1,在权值分布为D1(10个数据,每个数据的权值皆初始化为0.1)的训练数据上,经过计算可得:

阈值v取2.5时误差率为0.3(x < 2.5时取1,x > 2.5时取-1,则6 7 8分错,误差率为0.3),
阈值v取5.5时误差率最低为0.4(x < 5.5时取1,x > 5.5时取-1,则3 4 5 6 7 8皆分错,误差率0.6大于0.5,不可取。故令x > 5.5时取1,x < 5.5时取-1,则0 1 2 9分错,误差率为0.4),
阈值v取8.5时误差率为0.3(x < 8.5时取1,x > 8.5时取-1,则3 4 5分错,误差率为0.3)。

可以看到,无论阈值v取2.5,还是8.5,总得分错3个样本,故可任取其中任意一个如2.5,弄成第一个基本分类器为:

机器学习读书笔记(六)

上面说阈值v取2.5时则6 7 8分错,所以误差率为0.3,更加详细的解释是:因为样本集中

0 1 2对应的类(Y)是1,因它们本身都小于2.5,所以被G1(x)分在了相应的类“1”中,分对了。
3 4 5本身对应的类(Y)是-1,因它们本身都大于2.5,所以被G1(x)分在了相应的类“-1”中,分对了。
但6 7 8本身对应类(Y)是1,却因它们本身大于2.5而被G1(x)分在了类"-1"中,所以这3个样本被分错了。
9本身对应的类(Y)是-1,因它本身大于2.5,所以被G1(x)分在了相应的类“-1”中,分对了。

从而得到G1(x)在训练数据集上的误差率(被G1(x)误分类样本“6 7 8”的权值之和)e1=P(G1(xi)≠yi) = 3*0.1 = 0.3。

然后根据误差率e1计算G1的系数:

机器学习读书笔记(六)

这个a1代表G1(x)在最终的分类函数中所占的权重,为0.4236。

接着更新训练数据的权值分布,用于下一轮迭代:

机器学习读书笔记(六)

值得一提的是,由权值更新的公式可知,每个样本的新权值是变大还是变小,取决于它是被分错还是被分正确。

即如果某个样本被分错了,则yi * Gm(xi)为负,负负得正,结果使得整个式子变大(样本权值变大),否则变小。

第一轮迭代后,最后得到各个数据新的权值分布D2 = (0.0715, 0.0715, 0.0715, 0.0715, 0.0715, 0.0715, 0.1666, 0.1666, 0.1666, 0.0715)。

分类函数

f1(x)= a1*G1(x) = 0.4236G1(x)。

此时,得到的第一个基本分类器sign(f1(x))在训练数据集上有3个误分类点(即6 7 8)。

 

2 迭代过程2

对于m=2,在权值分布为D2 = (0.0715, 0.0715, 0.0715, 0.0715, 0.0715,  0.0715, 0.1666, 0.1666, 0.1666, 0.0715)的训练数据上,经过计算可得:

阈值v取2.5时误差率为0.1666*3(x < 2.5时取1,x > 2.5时取-1,则6 7 8分错,误差率为0.1666*3)
阈值v取5.5时误差率最低为0.0715*4(x > 5.5时取1,x < 5.5时取-1,则0 1 2 9分错,误差率为0.0715*3 + 0.0715)
阈值v取8.5时误差率为0.0715*3(x < 8.5时取1,x > 8.5时取-1,则3 4 5分错,误差率为0.0715*3)。

所以,阈值v取8.5时误差率最低,故第二个基本分类器为:

机器学习读书笔记(六)

很明显,G2(x)把样本“3 4 5”分错了,根据D2可知它们的权值为0.0715, 0.0715,  0.0715,所以G2(x)在训练数据集上的误差率e2=P(G2(xi)≠yi) = 0.0715 * 3 = 0.2143。

计算G2的系数:

机器学习读书笔记(六)

更新训练数据的权值分布:

机器学习读书笔记(六)

D3 = (0.0455, 0.0455, 0.0455, 0.1667, 0.1667,  0.01667, 0.1060, 0.1060, 0.1060, 0.0455)。被分错的样本“3 4 5”的权值变大,其它被分对的样本的权值变小。

分类函数

f2(x)=0.4236G1(x) + 0.6496G2(x)

 

3 迭代过程3

对于m=3,在权值分布为D3 = (0.0455, 0.0455, 0.0455, 0.1667, 0.1667,  0.01667, 0.1060, 0.1060, 0.1060, 0.0455)的训练数据上,经过计算可得:

阈值v取2.5时误差率为0.1060*3(x < 2.5时取1,x > 2.5时取-1,则6 7 8分错,误差率为0.1060*3),
阈值v取5.5时误差率最低为0.0455*4(x > 5.5时取1,x < 5.5时取-1,则0 1 2 9分错,误差率为0.0455*3 + 0.0715),
阈值v取8.5时误差率为0.1667*3(x < 8.5时取1,x > 8.5时取-1,则3 4 5分错,误差率为0.1667*3)。

所以阈值v取5.5时误差率最低,故第三个基本分类器为:

机器学习读书笔记(六)

此时,被误分类的样本是:0 1 2 9,这4个样本所对应的权值皆为0.0455,

所以G3(x)在训练数据集上的误差率e3 = P(G3(xi)≠yi) = 0.0455*4 = 0.1820。

计算G3的系数:

机器学习读书笔记(六)

分类函数:

f3(x)=0.4236G1(x) + 0.6496G2(x)+0.7514G3(x)

此时,得到的第三个基本分类器sign(f3(x))在训练数据集上有0个误分类点。至此,整个训练过程结束。

 

现在,咱们来总结下3轮迭代下来,各个样本权值和误差率的变化,如下所示(其中,样本权值D中加了下划线的表示在上一轮中被分错的样本的新权值):

训练之前,各个样本的权值被初始化为D1 = (0.1, 0.1,0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1);
第一轮迭代中,样本“6 7 8”被分错,对应的误差率为e1=P(G1(xi)≠yi) = 3*0.1 = 0.3,此第一个基本分类器在最终的分类器中所占的权重为a1 = 0.4236。第一轮迭代过后,样本新的权值为D2 = (0.0715, 0.0715, 0.0715, 0.0715, 0.0715,  0.0715, 0.1666, 0.1666, 0.1666, 0.0715);
第二轮迭代中,样本“3 4 5”被分错,对应的误差率为e2=P(G2(xi)≠yi) = 0.0715 * 3 = 0.2143,此第二个基本分类器在最终的分类器中所占的权重为a2 = 0.6496。第二轮迭代过后,样本新的权值为D3 = (0.0455, 0.0455, 0.0455, 0.1667, 0.1667,  0.01667, 0.1060, 0.1060, 0.1060, 0.0455);
第三轮迭代中,样本“0 1 2 9”被分错,对应的误差率为e3 = P(G3(xi)≠yi) = 0.0455*4 = 0.1820,此第三个基本分类器在最终的分类器中所占的权重为a3 = 0.7514。第三轮迭代过后,样本新的权值为D4 = (0.125, 0.125, 0.125, 0.102, 0.102,  0.102, 0.065, 0.065, 0.065, 0.125)。

从上述过程中可以发现,如果某些个样本被分错,它们在下一轮迭代中的权值将被增大,同时,其它被分对的样本在下一轮迭代中的权值将被减小。就这样,分错样本权值增大,分对样本权值变小,而在下一轮迭代中,总是选取让误差率最低的阈值来设计基本分类器,所以误差率e(所有被Gm(x)误分类样本的权值之和)不断降低。

综上,将上面计算得到的a1、a2、a3各值代入G(x)中,G(x) = sign[f3(x)] = sign[ a1 * G1(x) + a2 * G2(x) + a3 * G3(x) ],得到最终的分类器为:

G(x) = sign[f3(x)] = sign[ 0.4236G1(x) + 0.6496G2(x)+0.7514G3(x) ]。

 

二、算法流程

总结一下,得到AdaBoost的算法流程:

1)输入:训练数据集M

2)初始化训练样本的权值分布:D1=(w1,1,w1,2,…,w1,i),w1,i=1N,i=1,2,…,N。

3)对于M:

3.1)使用具有权值分布)

3.2)计算Gm(x)在训练数据集上的分类误差率:

机器学习读书笔记(六)

 

3.3)计算Gm(x)在强分类器中所占的权重:

机器学习读书笔记(六)

3.4)更新训练数据集的权值分布(这里,zm是归一化因子,为了使样本的概率分布和为

 机器学习读书笔记(六)

4)得到最终分类器:

机器学习读书笔记(六)

 

 

三、公式推导

现在我们来搞清楚上述公式是怎么来的。

Adaboost的最终分类器:

机器学习读书笔记(六)

这个最终分类器其实就是一个加法模型。只是这个加法模型由基本分类器机器学习读书笔记(六)及其系数机器学习读书笔记(六)组成,m = 1, 2, ..., M。前向分步算法逐一学习基函数的过程,与Adaboost算法逐一学习各个基本分类器的过程一致。

下面,咱们便来证明:当前向分步算法的损失函数是指数损失函数

机器学习读书笔记(六)

 

 时,其学习的具体操作等价于Adaboost算法的学习过程。

假设经过m-1轮迭代,前向分步算法已经得到机器学习读书笔记(六)

 机器学习读书笔记(六)

而后在第m轮迭代得到机器学习读书笔记(六)机器学习读书笔记(六)机器学习读书笔记(六)。其中,机器学习读书笔记(六)为:

 机器学习读书笔记(六)

 而机器学习读书笔记(六)机器学习读书笔记(六)未知。所以,现在咱们的目标便是根据前向分步算法训练机器学习读书笔记(六)机器学习读书笔记(六),使得最终机器学习读书笔记(六)在训练数据集T上的指数损失最小,即

机器学习读书笔记(六)

针对这种需要求解多个参数的情况,可以先固定其它参数,求解其中一两个参数,然后逐一求解剩下的参数。例如我们可以固定机器学习读书笔记(六)机器学习读书笔记(六),只针对机器学习读书笔记(六)机器学习读书笔记(六)做优化。

换言之,在面对机器学习读书笔记(六)机器学习读书笔记(六) 这2m个参数都未知的情况下,可以:

1)先假定机器学习读书笔记(六)机器学习读书笔记(六)已知,求解出机器学习读书笔记(六)机器学习读书笔记(六)

2)然后再逐一求解其它未知参数。

且考虑到上式中的机器学习读书笔记(六)既不依赖机器学习读书笔记(六)也不依赖G,所以是个与最小化无关的固定值,记为机器学习读书笔记(六),即机器学习读书笔记(六),则上式可以表示为(后面要多次用到这个式子,简记为机器学习读书笔记(六)):

机器学习读书笔记(六)

值得一提的是,机器学习读书笔记(六)虽然与最小化无关,但机器学习读书笔记(六)依赖于机器学习读书笔记(六),随着每一轮迭代而发生变化。

接下来,便是要证使得上式达到最小的机器学习读书笔记(六)机器学习读书笔记(六)就是Adaboost算法所求解得到的机器学习读书笔记(六)机器学习读书笔记(六)

为求解上式,咱们先求机器学习读书笔记(六)再求机器学习读书笔记(六)

首先求机器学习读书笔记(六)。对于任意机器学习读书笔记(六),使上式机器学习读书笔记(六)最小的G(x)由下式得到:

 机器学习读书笔记(六)

别忘了,机器学习读书笔记(六)

 跟上述的误差率的计算公式对比下:

 机器学习读书笔记(六)

可知,上面得到的机器学习读书笔记(六)便是Adaboost算法的基本分类器机器学习读书笔记(六),因为它是在第m轮加权训练数据时,使分类误差率最小的基本分类器。换言之,这个机器学习读书笔记(六)便是Adaboost算法所要求的机器学习读书笔记(六),别忘了,在Adaboost算法的每一轮迭代中,都是选取让误差率最低的阈值来设计基本分类器。

 然后求机器学习读书笔记(六)。还是回到之前的这个式子机器学习读书笔记(六)上:

 机器学习读书笔记(六)

这个式子的后半部分可以进一步化简,得:

机器学习读书笔记(六)

接着将上面求得的机器学习读书笔记(六)

机器学习读书笔记(六)

代入上式中,且对机器学习读书笔记(六)求导,令其求导结果为0,即得到使得机器学习读书笔记(六)一式最小的机器学习读书笔记(六),即为:

机器学习读书笔记(六)

此外,毫无疑问,上式中的机器学习读书笔记(六)便是误差率:

机器学习读书笔记(六)

机器学习读书笔记(六)就是被Gm(x)误分类样本的权值之和。

就这样,结合模型机器学习读书笔记(六),跟机器学习读书笔记(六),可以推出

机器学习读书笔记(六)

从而有:

机器学习读书笔记(六)

与上文介绍的权值更新公式

机器学习读书笔记(六)

相比,只相差一个规范化因子,即后者多了一个

 机器学习读书笔记(六)

所以,整个过程下来,我们可以看到,前向分步算法逐一学习基函数的过程,确实是与Adaboost算法逐一学习各个基本分类器的过程一致,两者完全等价。

 

 

 

 

 

 

 

相关文章: