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网站,让驯马师输入马的症状然后预测马是否会死去。

具体代码如下:
机器学习第六周——AdaBoost

相关文章: