Adaboost也是一种原理简单,但很实用的有监督机器学习算法,它是daptive boosting的简称。说到 boosting算法,就不得提一提bagging算法,他们两个都是把一些弱分类器组合起来来进行分类的方法,统称 为集成方法(ensemble method),类似于投资,“不把鸡蛋放在一个篮子”,虽然每个弱分类器分类的不那么 准确,但是如果把多个弱分类器组合起来可以得到相当不错的结果,另外要说的是集成方法还可以组合不同的 分类器,而Adaboost和boosting算法的每个弱分类器的类型都一样的。他们两个不同的地方是:boosting的每 个弱分类器组合起来的权重不一样,本节的Adaboost就是一个例子,而bagging的每个弱分类器的组合权重是 相等,代表的例子就是random forest。Random forest的每个弱分类器是决策树,输出的类别有多个决策树分 类的类别的众数决定。今天的主题是Adaboost,下面来看看Adaboost的工作原理:
既然Adaboost的每 个弱分类器的类型都一样,那么怎么组织安排每个分类器呢?如(图一)所示:
(图一)
(图一)是Adaboost的原理示意图,左边矩形表示数据集,中间表示根据特征阈值来做分 类,这样每一个弱分类器都类似于一个单节点的决策树,其实就是阈值判断而已,右边的三角形对每个弱分类 器赋予一个权重,最后根据每个弱分类器的加权组合来判断总体类别。要注意一下数据集从上到下三个矩形内 的直方图不一样,这表示每个样本的权重也发生了变化,样本权重的一开始初始化成相等的权重,然后根据弱 分类器的错误率来调整每个弱分类器的全总alpha,如(图一)中的三角形所示,alpha 的计算如(公式一)所 示:
(公式一)
从(公式一 )中也能感觉出来,弱分类器权重alpha和弱分类器分类错误率epsilon成反比,如果不能看出反比关系,分子 分母同时除以epsilon就可以了,而ln是单调函数。这很make sense,当然分类器的错误率越高,越不能器重它 ,它的权重就应该低。同样的道理,样本也要区分对待,样本的权重要用弱分类器权重来计算,其实也是间接 靠分类错误率,如(公式二)所示:
(公式二)