在做一些决定的时候,我们往往需要吸取多个专家的意见,这就是元算法背后的思路,这里的专家就相当于前几个博文的分类器一样,结合多个分类器的结果得出的结果往往比单一一个分类器的结果要精准一些。
adaboost是boosting方法多个版本中最流行的一个版本,它是通过构建多个弱分类器,通过各个分类器的结果加权之后得到分类结果的。这里构建多个分类器的过程也是有讲究的,通过关注之前构建的分类器错分的那些数据而获得新的分类器。这样的多个分类器在训练时很容易得到收敛。
本文主要介绍了通过单层决策树构建弱分类器,同理,也可以用其他的分类算法构建弱分类器。
adaboost全称是adaptive boosting(自适应boosting),为什么是自适应呢,首先,先介绍一下它的原理:首先,对训练数据中每一个样本附上一个权重,这些权重构成向量D,一开始给这些权重初始化为相同的值。第一次训练时,权重相同,和原先的训练方法一样,训练结束后,根据训练的错误率,重新分配权重,第一次分对的样本的权重会降低,分错的样本权重会增大,这样再对第二个分类器进行训练,每一个分类器都对应一个alpha权重值,这里的alpha是对于分类器而言,前面的D是对于样本而言。最后训练出一系列的弱分类器,对每一个分类器的结果乘以权重值alpha再求和,就是最终的分类结果。自适应就体现在这里,通过对D的一次次的优化,最后的结果往往可以快速收敛。
这里错误率的定义如下:
alpha定义如下:
权重D的更新函数如下:
这里分为两种情况
1.该样本被正确分类:
2.该样本没有被正确分类:
这里的i代表的是第i个样本,t代表的是第t次训练。
下面介绍基于单层决策树构建弱分类器的代码实现:
首先加载训练数据