因为之前接触的资料将其原理类比为“三个臭皮匠顶个诸葛亮”,我只是简单理解为多个独立的分类器的集成。后来仔细学习了一下其实没有那么简单,其思想还是很值得借鉴的。
- 首先需要强调的是一般选取的单个分类器表征能力有限,也就是数据对其是不完全可分的,一般可选取决策树或者线性分类器。
- 其次多个分类器并不是并行叠加,更像是串行。第一个分类器得到数据后,经过训练得到一个最小的误差水平(这个分类器的训练就完全结束了,所有参数固定不变),并且返回分类错误的样本。第二个分类器在整个集成系统的基础上(这里集成系统是指前面已经训练完成的所有分类器的整体,而此时只有一个分类器训练完成),着重对集成系统预测错误的样本进行训练(这也是'boost'这个名称的来源。可以想一下为什么是整个系统而不是仅仅前一个:因为对任意一个的分类器分类的正确率都是比较低的,单个分类器最优仅仅是对预测误差加权后最低,分类错误个数可能还是比较多的),实现方式是:训练期间,此分类器对集成系统分类错误的样本误差权重高,正确的误差权重低(也就是所有样本经过此分类器预测后,错误的代价要经过加权,这就是一般资料上所说的“样本权重”),同样在加权误差最小后结束训练。你可以体会到分类器之间的串行关系,这很像决策树的分支过程。
- 集成系统的分类错误率随着分类器个数的增加一定是单调递减的,因为对单个分类器置信度权重的调整。
- 结束可以随时,可以设置单个分类器的个数,或者整个集成系统的错误率。
adaboost类比的话,仅仅用人多力量大并不能准确表示其精髓。我觉得其更像是一个团队的组建过程:一个创始团队面临很多问题,当它遇到解决不了的问题就开始招人。这人不是随便找的,而是能解决当前问题的。就这样团队不断扩大,渐渐步入正轨。