Adaboost算法——详细讲解

最近在做集成学习的时候,对Adaboost非常感兴趣,就自己复现了这个程序。

首先提升方法是基于这样的一个思想:对于一个复杂的任务来说,通将多个专家的判断进行适当的综合所得到的判断,这样得到的结果会比单个专家的判断要好。

Adaboost做法的核心问题,是通过提高前一轮分类器分类错误的样本的权值,降低分类分类正确的样本权值,对于那些没有本分类正确的样本会得到后面分类器更多的关注。然后可以产生很多的弱分类器,通过多数加权投票组合这些弱分类器,加大误差率小的分类器,减少误差率大的分类器,使其在表决中起到较少的作用。

Adaboost算法流程:

假设给定一个二分类的训练数据集

                                                

在这里x 代表输入的样例,y代表样例所属的类别空间。

在这里,Adaboost输入的是带标签的样例空间,输出的是最终的学习器。

(1) 初始化训练数据的权值分布。

                                                   

(2)对于M(代表分类器的个数)个分类器,分别使用带权值分布的数据进行训练,在这里很多人在编程序的时候忘记把输入带权值的数据,而是一直用的是原始数据作为一个输入。那么第一次训练之后得到一个基分类器Gm(x)

(a) 计算在Gm(x)上的分类错误率(这里注意分类错误率指的是被分类器分类错误的样本前面权值相加的和,不是分类错误样本比总样本,这里格外需要注意)

                                                    

(b)计算得到Gm(x)的系数可以得到

                                                                          

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

                                           Adaboost算法——详细讲解_第1张图片

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

                                                                              

最终的分类器是

                                                             

以上分析了Adaboost的大致流程,讲了几个在编程中需要注意的点,有遇到其他问题的欢迎评论区讨论留言。

你可能感兴趣的:(集成学习,机器学习)