您的位置:首页 > 其它

第七章 利用AdaBoost元算法提高分类性能

2013-10-01 13:36 309 查看
本章内容

组合相似的分类器来提高分类性能

应用AdaBoost算法

处理非均衡分类问题

当做重要决定时,大家可能都会考虑吸取多个专家而不只是一个人的意见。机器学习处理问题时又何尝不是如此? 这就是元算法(meta-algorithm)背后的思路。元算法是对其他算法进行组合的一种方式。接下来我们将集中关注一个称作AdaBoost的最流行的原算法。由于某些人认为AdaBoost是最好的监督学习的方法,所以该方式是机器学习工具箱中最强力的工具之一。

本章首先讨论不同分类器的集成方法,然后主要关注boosting方法机器代表分类器Adaboost。再接下来,我们就会建立一个单层决策树(decision stump)分类器。实际上,它是一个单节点的决策树。AdaBoost算法将应用在上述单层决策树分类器之上。我们将在一个难数据集上应用AdaBoost分类器,以了解该算法是如何迅速超越其他分类器的。

最后,在结束分类话题之前,我们将讨论所有分类器都会遇到的一个通用问题:非均衡分类问题。当我们队样例数据不均衡的数据进行分类时,就会遇到这个问题。信用卡使用中的欺诈检测就是非均衡问题中的一个极好的例子,此时我们可能会对每一个正例样本都有1000个反例样本。在这种情况下,分离器将如何工作?读者可能会了解到,可能需要利用修改后的指标来评价分类器的性能。而就这个问题而言,并非AdaBoost所独用,只是因为这是分类的最后一章,因此到了讨论这个问题的最佳时机。

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

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

优点:泛华错误率低,易编码,可以应用在大部分分类器上,无参数调整。

缺点:对离群点敏感

适用数据类型:数值型和标称型数据。

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

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

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

接下来我们将注意力转向一个与bagging类似的集成分类器方法boosting。

7.1.2 boosting

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

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

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

AdaBoost的一般流程

(1)收集数据:可以使用任意方法

(2)准备数据:依赖于所使用的弱分类器类型,本章使用的是单层决策树,这种分类器可以处理任何数据类型。当然也可以使用惹你分类器作为弱分类器,第2章到第6章中的任一分类器都可以充当弱分类器。作为弱分类器,简单分类器的效果更好。

(3)分析数据:可以使用任意方法。

(4)训练数据:AdaBoost的大部分时间都用在训练上,分类器将多次在同一数据集上训练弱分类器。

(5)测试算法:计算分类的错误率。

(6)使用算法:同SVM一样,AdaBoost预测两个类别中的一个。如果想把它应用到多个类别的场合,那么就像多类SVM中的做法一样对AdaBoost进行修改。

下面我们将要讨论AdaBoost背后的一些理论,并揭示其效果不错的原因。

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

能否使用弱分类器和多个实例来构建一个强分类器?这是一个非常有趣的理论问题。这里的“弱”意味着分类器的性能比随机猜测要略好,但是也不会好太多。这就是说,在二分类情况下弱分类器的错误率会高于50%,而“强”分类器的错误率将会低很多。AdaBoost算法即将脱胎于上述理论问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: