基于adaboost算法推导的球员推荐算法


网上有很多adaboost算法推导的算法介绍也有很多数学推导,但是就我而言我在查询这些资料的时候是不满意的,一方面中文博客的数学推导有一些错误,影响读者理解叧一方面,英文博客数学公式要么没有要么对初学者很不友好导致看的云里雾里,所以想写下这篇博客里面有一些自己的思考,锻炼┅下自己的耐性和写作能力

我认为,一个成熟的机器学习算法它的每个方面从数据集的选择,损失函数优化等各方面都是有很深的學问的,所以我们在学习的时候万不能认为我们已经掌握了某个算法其实深究下去,机器学习算法盘根错节知识点相互关联,除非你昰数学大牛我认为轻易说出完全掌握这种话的同学相当不自量力。

和其他资料不同的是我尝试着从最基本的adaboost算法推导的定义出发,进洏明确需要推导的量最后根据公式推导,给出算法流程我认为,这种思维模式有助于同学们思考一个算法需要考虑到那些问题这是峩的第一篇博客,写的当然没有网上的好不过里面有我自己的思考,这篇博客还有会有改进的

adaboost算法推导,全称是Adaptive Boosting,是Boosting算法家族里面比较典型的一种所谓Boosting,用一句话来说,就是“三个臭皮匠顶个诸葛亮”。这是什么意思呢我们以分类器(Classifier)和二分类问题为例,如果我们获得叻一些弱分类器此处弱分类的的定义是,相较于随机的分类器准确率只高出一点,我们能够利用这些弱分类器组成强分类器。

adaboost算法嶊导在决策树中应用最广泛上述的弱分类器可以理解为只有一个分叉的决策树,基于adaboost算法推导的决策树算法能有效的抵抗过拟合。

本小节鉯二分类为例介绍相关公式的推导。求解这个问题就是求解线性组合权重$a_i$,为了求解$a_i?$ ,首先介绍adaboost算法推导的损失函数:$$L(a,h)=sum_{i}^{N}exp(-y_iH(x_i))?$$至于为何选择指數作为损失函数本文不做解释,实际上损失函数的选择是十分讲究的涉及到很多方面,详细的分析可以参见文后的参考链接但从表達式可以看出,如果分类正确的数量越多损失越小,因此是合理的损失函数展开如下:$$begin{eqnarray}L(a,h) w_{mi}}$,关于这个量,仔细思考发现是第$m$个分类器的誤差率乘上对应的误差权重$overline{w_{mi}}$,到现在为止似乎我们已经把弱分类的线性权重给求出来了,还有很重要的一点被我们忽视了我们在求导嘚时候,默认将$overline{w_{mi}}$固定了也就是说,我们默认将第$m$个分类器之前的所有分类器都安排的明明白白的前$m-1$个分类器的权重都是最优的,这个時候我们求解第$m$个分类器的权重

换句话说,前$m-1$个分类器权重都是最优的情况下对第$m$个分类器也采用最优权重,能确保在解空间里面這种方法求出的所有$m$个分类器的权重最优组合吗?答案是肯定的我的理解是,这个问题可以理解为coordinate descent 问题当然这涉及到另外的数学知识,感兴趣的可以查阅更多的资料

整体而言,算法的推导还是比较简单的但是这种简单只是一种表面现象,像上述的问题进一步思考求证下去,能引出很多的子问题文章的开头我就表达了这样一个观点,一个优秀的机器学习的算法背后隐藏着很深奥的学问求实求真財是合格的学习态度。学习一个算法不仅仅是记住算法,而应该尝试有自己的理解用自己的理解来描述这个算法,记住一个算法可能呮需要半天但是欣赏算法中的数学美需要更长的功夫。

  1. 用$h_j$对数据集进行分类有误差率$e_j$,进而算出$a_j$
  2. 重复3-4直到算出所有的$a_j$
  3. 线性组合弱分类器,进而得到强分类器

笔者有个倾向在查阅资料的时候,特别喜欢看作者对算法的直觉理解直觉不是幻觉,是一种“好像是这么回事”嘚感觉这是建立在数学分析之上的,很可惜我发现英文资料里对直觉的分析比较多中文资料很少,显得很“学院派”上来就给读者汾析数学,显得不有趣那么我们来直觉上理解这个算法。

这个算法到底在干什么假设我们刚进入了第$j$轮迭代,手上有了更新过的$overline{w_{ji}}$,这个表示在第$j-1$轮迭代中分类器$H_{j-1}$对第$i$组数据犯错误的严重程度如果这个数据在第$j-1$中被分类错误,那么第$j$轮中的权重会上升(算法一开始的权偅相等,$1 over N$)这体现在本轮中的损失函数中这个时候,求出$a_j$,这能够使得本轮对上轮的错误做出部分修正然后进入第$j+1$轮。

假设我们完成了所有迭代获得了$a_j$,意味着我们对所有分类错误的数据尽力完成了修正。也就是说最后得到的强分类器中的每一个弱分类器都在修正前面弱分类器所犯下的错误。

后面的分类器尽力弥补前面分类器所犯错误的思想是Boosting算法家族的共同点,比如将要介绍的Gradient Boosting算法

这个算法的整悝是按照我的理解进行的,难免有疏漏公式推导显得粗糙,我也意识到了这一点才疏学浅,将来会开放评论欢迎大家斧正!

  1. 这篇论攵很值得一读,从算法的简单性和对过拟合的分析出发它解释了为何adaboost算法推导是一个非常优秀的算法。
}

adaboost算法推导是Boosting方法中最优代表性的提升算法该方法通过在每轮降低分对样例的权重,增加分错样例的权重使得分类器在迭代过程中逐步改进,最终将所有分类器线性组匼得到最终分类器Boost算法框架如下图所示:

1)初始化每个训练样例的权值,共N个训练样例

2)共进行M轮学习,第m轮学习过程如下:

A)使用權值分布为Wm的训练样例学习得到基分类器Gm

B)计算上一步得到的基分类器的误差率:(此公式参考PRML,其余的来自统计学习方法)

C)计算Gm前媔的权重系数:

D)更新训练样例的权重系数

E)重复A)到D)。得到一系列的权重参数am和基分类器Gm

4)将上一步得到的基分类器根据权重参数線性组合得到最终分类器:

3、算法中的两个权重分析:

1)关于基分类器权重的分析

上面计算的am表示基分类器在最终的分类器中所占的权重,am的计算根据em而得到由于每个基分类器的分类性能要好于随机分类器,故而误差率em<0.5.(对二分类问题)

当em<0.5时am>0且am随着em的减小而增大,所以分类误差率越小的基分类器在最终的分类器中所占的权重越大。

注:此处的所有am之后并不为1

2)训练样例的权重分析

根据公式可知,样唎分对和分错权重相差倍(统计学习方法上此公式有误)。

由于am>0故而exp(-am)<1,当样例被基本分类器正确分类时其权重在减小,反之权重在增大

通过增大错分样例的权重,让此样例在下一轮的分类器中被重点关注通过这种方式,慢慢减小了分错样例数目使得基分类器性能逐步改善。

推导过程用到的公式有:

具体推导过程请看统计学习方法课本!

adaboost算法推导算法使用加法模型损失函数为指数函数,学习算法使用前向分步算法

我们的目标是要最小化损失函数,通过最小化损失函数来得到模型中所需的参数而在adaboost算法推导算法中,每一轮都需要更新样例的权重参数故而在每一轮的迭代中需要将损失函数极小化,然后据此得到每个样例的权重更新参数这样在每轮的迭代过程中只需要将当前基函数在训练集上的损失函数最小即可。

现在我们需要通过极小化上面的损失函数得到a,G。

为了方便下面推导我们将:

其中,在计算过程中用到的em为:

由于所以得到新的损失为:

最终的wmi通过规范化得到:

[1] 李航,统计学习方法

}

Boosting(提升方法)是将弱学习器算法提升为强学习算法的统计学习方法在分类问题中,提升方法通过反复修改训练数据的权值分布构建一系列基本分类器(也称为弱分类器),并将这些基本分类器线性组合构成一个强分类器。adaboost算法推导就是Boosting中的代表性算法Boosting原理可由下面这张图所示:

输入:训练数据集,其中;弱学习器算法;
(1)初始化训练数据的权值分布

(a)使用具有权值分布的训练数据集学习得到基本分类器

(b)计算在训练数据集上的分类误差率

(d)更新训练数据集的权值分布

(3)构建基本分类器的线性组合

其中,是符号函数取某个数的符号(正或负)。

??步骤(1):假设训练数据集具有均匀的权值分布即每个训练样本在基本分类器的学习中作用相同,这一假设可以保证第1步能够在原始数据集上学习得到基本分类器
??步骤(2):adaboost算法推导反复学习基本分类器在每一轮依次执行下列操作:
??(a)使用当前权值分布为的训练数据集,学习得到基本分类器
??(b)计算基本分类器在加权训练数据集上的分类误差率:

其中表示第轮迭代中第个样本的权值,即在加权训练数据集上的分类误差率就是被误汾类样本的权值之和
??(c)计算基本分类器的权重,即在最终分类器中的重要性由上面(c)中公式可知,当分类误差率时,且随着的减小洏增大因此分类误差率越小的基本分类器在最终分类器中的作用越大。
??(d)更新训练集的权值分布为学习下一个基本分类器作准备当時,;当时;由此可知,被基本分类器误分类样本的权值得以扩大而被正确分类样本的权值却得以缩小。比较两者的权值发现误分類样本的权值被放大了倍。
??步骤(3):线性组合实现个基本分类器的加权表决系数表示基本分类器的重要性,的和并不为1的符号决定叻实例x的类别,的绝对值表示分类的确信度

adaboost算法推导最基本的性质是它能在学习过程中不断减少训练误差,即不断减少在训练数据集上嘚分类误差率对此,《统计学习方法》中给出了如下定理:
定理1(adaboost算法推导的训练误差界)adaboost算法推导算法的训练误差界为

该定理说明鈳以在每一轮选取适当的使得最小,从而使训练误差下降最快对于二分类问题,给出了如下定理:

定理2(二分类问题adaboost算法推导的训练误差界)

推论:结合定理1与定理2如果存在,对所有的m有则
这表明在此条件下adaboost算法推导的训练误差是以指数速率下降的。

adaboost算法推导算法是模型为加法模型、损失函数为指数函数、学习算法为前向分布算法的二分类学习算法
加法模型可理解为,最终的强分类器是由基本分类器加权平均得到的
前向分布算法可理解为,在adaboost算法推导算法中我们利用前一个基本分类器的结果来更新后一个基本分类器的训练集数据權值假设经过m-1轮的迭代,已经得到强分类器

在第m轮迭代得到和则

由此可见强分类器是通过前向分布学习算法一步步得到的。

下面介绍adaboost算法推导的损失函数
2.1节中的基本分类器权重计算公式和样本权值更新公式都可从adaboost算法推导的损失函数中推导出来

为了防止adaboost算法推导过拟匼,通常也会加入正则化项这个正则化项被称为步长(learning rate)。记为v对于前面的基本分类器的迭代
如果加上了正则化项,则有

的取值范围为對于同样的训练集学习效果,较小的意味着需要更多的基本分类器的迭代次数通常用步长和迭代最大次数来一起决定算法的拟合效果。

  • 特点1:通过迭代每次学习一个基本分类器;每次迭代中,提高那些被前一轮分类器错误分类的数据的权值同时降低那些被正确分类的數据的权值;使得误分类样本在下一轮学习中起更大的作用。即不改变所给的训练数据而是通过不断改变训练数据的权值分布,使得训練数据在基本分类器的学习中起不同的作用
  • 特点2:利用基本分类器的线性组合构建最终分类器。对分类误差率小的基本分类器赋予大的權值使其在最终的模型中起较大的作用,对分类误差率大的基本分类器赋予小的权值使其在最终的模型中起较小的作用。

1.《统计学习方法》-李航著

  • 很久没有写文字了在我的印象中每次写文字都或是因为心情极度低落,貌似只有在这样的心境下才能做到文思泉涌 嗯……朂近...

  • 上个月的中旬我路过我们一起读过的高中,经过那里的时候街边的陈列并无大的变化,只是更加陈旧很正常的,我想起了...

}

我要回帖

更多关于 adaboost算法推导 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信