Adaboost 算法 ;
先介绍一下 boost 算法 , boost 就是一种增强学习算法,通过弱学习器 (正确率略高于随机回答的学习器,这也是必须要满足的条件否则分这个算法无效)的一种结合得到一种强学习器的集成学习方法,有许多的boost 算法 Adaboost 就是其中的一种算法。
Adaboost 算法思想 :
这种算法的基本思想就是,用一些弱分类器通过集成学习的方法组合出一个强分类器,对于每次分类对错误的样本增加权值,对分类正确的样本减小权值已达到对于错误分类样本加强关注的目的,不断迭代,直到得到效果较好的分类器。
Adaboost 算法的算法流程
- 初始化全值分布,一般初始化的时候全值都是一致的
- 训练不同的弱分类器,挑选出一个效果最好的弱分类器当做这次分类所使用的弱分类器,并且对于分类数据,分类正确的减小权值,分类错误的增大权值,达到对分类错误样本的重视,使得在下一次迭代中更倾向于将错误样本正确分类
- 将所有训练得到的弱分类器结合起来得到一个强分类器,结合的方法是,一个误差大的分类器在最后所占的权值较小,在误差较小的分类器所占的权值大
下面展示一下Adaboost算法的过程
注意每次都要从所有的弱分类器中选择一个错误率最低的分类器来进行下一轮迭代 (开始时要设计好所有的可能的弱分类器,如线性回归、逻辑回归、SVM等都可以为了让算法效果更好要多设置几个)
说明 : Z的意义是一个标准化参数,使得这个权值的分布具有实际的
意义,即所有的权值和为1,这个求和就可以算出来
另外 对于每一个分类器的权值为什么是 a(i) = 1/2ln(1-e/e) 是有严格的数学证明的(周志华在西瓜书中有过证明),因为证明繁琐所以省略不写,但是只要a取这个值 才能保证最好的训练效果。
得到强分类器就可以分类了