《机器学习实战》读书笔记7

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.任何分类场景
......

同类笔记可点击这里查阅

推荐阅读更多精彩内容