AdaBoost算法概述
当做重要决定时,大家可能都会征求多个专家而不是一个人的意见。机器学习处理问题时又何尝不是如此?这就是元算法(meta-algorithm)背后的思路,元算法是对其他算法进行组合的一种方式。
AdaBoost就是最流行的一种元算法,是英文“Adaptive Boosting”(自适应增强)的缩写。其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。
优点:泛化错误率低,容易编码,可以应用在大部分分类器上,无参数调整。
缺点:对离群点敏感。
适用数据类型:数值型和标称型数据。
入门案例
AdaBoost算法的处理过程如下:
1、先通过对N个训练样本的学习得到第一个弱分类器;
2、将分错的样本和其他的新数据一起构成一个新的N个的训练样本,通过对这个样本的学习得到第二个弱分类器;
3、将1和2都分错了的样本加上其他的新样本构成另一个新的N个的训练样本,通过对这个样本的学习得到第三个弱分类器;
4、最终经过提升的强分类器。即某个数据被分为哪一类要由各分类器权值决定。
以上比较难懂,所以我们用一个可视化的案例来表达其意图,帮助理解。(本读书笔记不讲代码的具体实现)
工作原理
在前面已经学习过5个分类器算法:k-近邻算法、决策树算法、朴素贝叶斯算法、Logistic回归算法、SVM算法。用不同的算法对同一个数据集进行分类,可能会得到差别显著的结果。
分类器之间的差别可能是算法本身的问题,也可能是数据的问题等等多种原因。所以,AdaBoost集成方法通过组合多个分类器的分类结果,得到比单一分类器更好的分类结果,避免出现“过拟合(overfitting)”问题。
AdaBoost以弱分类器作为基础分类器,并且输入数据,使其通过权重向量进行加权。在第一次迭代中,所有数据都等权重。但在后续的迭代中,其次迭代分错的数据的权重会增大。这种针对错误的调节能力正是AdaBoost的长处。
一般流程
1.收集数据:可以使用任何方法;
2.准备数据:依赖于所使用的弱分类器类型,本章使用的是单层决策树,这种分类器可以处理任何数据类型。当然也可以使用任意分类器作为弱分类器,当然简单分类器的效果更好;
3.分析数据:可以使用任意方法;
4.训练算法:AdaBoost的大部分时间都用在训练上,分类器将多次在统一数据集上训练弱分类器;
5.测试算法:计算分类的错误率;
6.使用算法:同SVM一样,AdaBoost预测两个类别中的一个。如果想把它应用到多个类别的场合,那么就要进行适当的修改。
可使用场景
1.任何分类场景
......