AdaBoost
当做重要决定时,大家可能都会考虑吸取多个专家而不只是一个人的意见。这就是元算法(meta-algorithm)背后的思路。元算法是对其他算法进行组 合的一种方式。而AdaBoost是一种最流行的元算法。
AdaBoost
优点: 泛化错误率低,易编码,可以应用在大部分分类器上,无参数调整。
缺点: 对离群点敏感。
适用数据类型: 数值型和标称型数据。
AdaBoost的一般流程
(1) 收集数据:可以使用任意方法。
(2) 准备数据:依赖于所使用的弱分类器类型,本章使用的是单层决策树,这种分类器可以处理任何数据类型。当然也可以使用任意分类器作为弱分类器,第2章到第6章中的任一分类器都可以充当弱分类器。作为弱分类器,简单分类器的效果更好。
(3) 分析数据:可以使用任意方法。
(4) 训练算法:AdaBoost的大部分时间都用在训练上,分类器将多次在同一数据集上训练弱分类器。
(5) 测试算法:计算分类的错误率。
(6) 使用算法:同SVM一样,AdaBoost预测两个类别中的一个。如果想把它应用到多个类别的场合,那么就要像多类SVM中的做法一样对AdaBoost进行修改。
整个实现的伪代码如下:
对每次迭代:
利用buildStump()函数找到最佳的单层决策树
将最佳单层决策树加入到单层决策树数组
计算alpha
计算新的权重向量D
更新累计类别估计值
如果错误率等于0.0,则退出循环
示例:在一个难数据集上的AdaBoost应用
(1) 收集数据:提供的文本文件。
(2) 准备数据:确保类别标签是+1和1而非1和0。
(3) 分析数据:手工检查数据。
(4) 训练算法:在数据上,利用adaBoostTrainDS()函数训练出一系列的分类器。
(5) 测试算法:我们拥有两个数据集。在不采用随机抽样的方法下,我们就会对AdaBoost和Logistic回归的结果进行完全对等的比较。
(6) 使用算法:观察该例子上的错误率。不过,也可以构建一个Web网站,让驯马师输入马的症状然后预测马是否会死去。
具体代码如下: