ML学习笔记之————Adaboost
Adaboost
Adaboost指的是一种框架,可以讲若干个弱分类器级联成一个强分类器。对于这些弱分类器的选择上并没有任何限制,同时具有分类错误率上界随着训练增加而稳定下降,一般不会过拟合等的性质,应该说是一种很适合于在各种分类场景下应用的算法。
算法
AdaBoost 是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器。(很多博客里说的三个臭皮匠赛过诸葛亮)
算法本身是改变数据分布实现的,它根据每次训练集之中的每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改权值的新数据送给下层分类器进行训练,然后将每次训练得到的分类器融合起来,作为最后的决策分类器。
示例
也许你对上面的ɛ1,ɑ1怎么算的也不是很理解。下面我们算一下,不要嫌我啰嗦,我最开始就是这样思考的,只有自己把算法演算一遍,你才会真正的懂这个算法的核心,后面我会再次提到这个。
算法最开始给了一个均匀分布 D 。所以h1 里的每个点的值是0.1。ok,当划分后,有三个点划分错了,根据算法误差表达式 得到 误差为分错了的三个点的值之和,所以ɛ1=(0.1+0.1+0.1)=0.3,而ɑ1 根据表达式 的可以算出来为0.42. 然后就根据算法 把分错的点权值变大。如此迭代,最终完成adaboost算法。
Tips:
为什么要提高分类错误样本的权值?
- 当提升错误点的权值之后,下一次的分类器的训练根据最优目标,会尽可能地把这些大权重的样本分类正确;
- 注意到算法最后的混合分类器表到式,是由a作为权值得到的。而由于a是由每个分类器的分类错误率所得,即 那么当提高错误点的权值,当下一次分类器再次分错了这些点之后,会提高整体的错误率,这样就导致 a 变的很小,最终导致这个分类器在整个混合分类器的权值变低。也就是说,这个算法让优秀的分类器占整体的权值更高,而挫的分类器权值更低。