读书笔记:机器学习实战【第7章:利用Adaboost元算法提高分类性能】

利用Adaboost元算法提高分类性能

当做重要决定的时候,大家可能都会考虑吸取多个专家,而非一个人的意见,同样的思想用在机器学习中就是元算法(meta-algorithm)背后的思路,元算法是对其他算法进行组合的一种方式。

7.1 基于数据集多重抽样的分类器

前面已经介绍了五种不同的分类算法,它们各有优缺点,我们自然可以将不同的分类器组合起来,而这种组合结果则被称为集成方法(ensemble method)或者元算法(meta-algorithm)。使用集成方法时会有多种形式:可以是不同算法的集成,也可以是同一算法在不同设置下的集成,还可以是数据集不同部分分配给不同分类器之后的集成。接下来,我们将介绍基于同一种分类器多个不同实例的两种计算方法。在这些方法中,数据集也会不断变化,而后应用于不同的实例分类器上。最后,我们会讨论如何利用机器学习问题的通用框架,来应用AdaBoost算法。

AdaBoost:

  • 优点:泛化错误率低,易编码,可以应用在大部分分类器上,无参数调整。
  • 缺点:对离群点敏感。
  • 适用数据类型:数值型和标称型数据。

7.11 bagging:基于数据随机重抽样的分类器构建方法

自举汇聚法(bootstrap aggregating),也称为bagging方法,是在从原始数据集选择S次后得到S个新数据集的一种技术。新数据集和原数据集的大小相等,每个数据集都是通过在原始数据集中随机选择一个样本进行替换而得到的。这里的替换就意味着可以多次选择同一样本。(其实就是进行和样本个数相同次数的放回抽样,每次抽取一个样本。)这一性质允许新数据集中出现重复的值,而原始数据集的某些值在新集合中就不再出现。

在S个数据集建好之后,将某个学习算法分别作用于每个数据集,就得到了S个分类器。当我们要对新数据进行分类时,就可以应用这S个分类器进行分类。与此同时,选择分类器投票结果中最多的类别作为最后的分类结果。

7.12 boosting

boosting是一种与bagging很类似的技术,不论是在boosting还是在bagging中,所使用的多个分类器的类型都是一致的。但是在boosting中,不同的分类器是通过串行获得:每个新分类器都根据已经训练处的分类器进行训练。boosting是通过集中关注被已有分类器错分的那些数据来获得新的分类器。

由于boosting分类的结果是基于所有分类器的加权求和结果的,因此boosting和bagging不太一样,bagging中的分类器权重是相等的,而boosting中的分类器权重并不相等,每个权重代表的是其对应分类器在上一轮迭代中的成功度。

boosting方法拥有多个版本,本章将只关注其中一个最流行的版本AdaBoost。

AdaBoost的一般流程:
- 1.收集数据:可以使用任意方法
- 2.准备数据:依赖于所使用的弱分类器类型,本章使用的是单层决策树,这种分类器可以处理任何数据类型。当然也可以使用任意分类器作为弱分类器,前面讲过的任一分类器都可以。简单分类器作为弱分类器的效果会更好。
- 3.分析数据:可以使用任意方法
- 4.训练算法:AdaBoost的大部分时间用在训练上,分类器将多次在同一数据集上训练弱分类器。
- 5.测试算法:计算分类的错误率。
- 6.使用算法:同SVM一页,AdaBoost预测两个类别中的一个。如果想把它应用到多个类别,就要对AdaBoost进行修改。

7.2 训练算法:基于错误提升分类器的性能

能否使用弱分类器和多个实例构建一个强分类器?这是一个非常有趣的理论问题,这里的弱意味着分类器的性能比随机猜测要略好,但是不会好太多,就是说,在二分类情况下弱分类器的错误率会高于50%,而“强”分类器的错误率将会低很多,AdaBoost算法就脱胎于上述理论问题。

AdaBoost是adaptive boosting(自适应Boosting)的缩写,其运行过程如下:训练数据中的每个样本,并赋予其一个权重,这些权重构成了向量D。一开始,这些权重都初始化成相等值,首先在训练数据上训练一个弱分类器并计算该分类器的错误率,然后在同一数据集上再次训练弱分类器。在分类器的第二次训练当中,将会重新调整每个样本的权重,其中第一次分对的样本的权重将会降低,而第一次分错的样本的权重将会提高。

为了从所有的弱分类器中得到最终的分类结果,AdaBoost为每个分类器分配了一个权重alpha,这些alpha值是基于每个弱分类器的错误率进行计算的,其中,错误率ε的定义为:ε=(未正确分类的样本数目/所有样本数目),而alpha的计算公式如下:

α=12 ln(1εε ) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值