&&机器学习实战&&AdaBoost算法

1.概述

当做重要决定时,大家可能都会考虑吸取多个专家而不只是一个人的意见。机器学习也是。这就是元算法(meta algorithm)背后的思路。元算法是对其他算法进行组合的一种方式。AdaBoost是目前最流行的元算法。

单层决策树(decision stump)分类器之上,应用AdaBoost分类器。

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

 前面介绍的五种不同的分类算法各有优缺点,将不同的分类器组合起来,这种结果称为集成方法或者元算法。使用集成方法时会有多种形式:可以是不同算法的集成,也可以是同一算法在不同设置下的集成,还可以是数据集不同部分分配给不同分类器之后的集成。

adaboost:

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

缺点:对离群点敏感。

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

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

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

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

            当然,还有一些更先进的bagging方法,比如随机森林(random forest)。

4.boosting

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

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

           boosting方法有多个版本,本章关注其中最流行版本adaboost。

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

        能否使用弱分类器和多个实例来构建一个强分类器?

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

 

6.基於单层决策树构建弱分类器

单层决策树(decision stump,也称决策树桩)是一种简单的决策树,仅基於单个特征来做决策,由于这棵树只有一次分裂过程,因此它实际上就是一个树桩。

通过使用多颗单层决策树,我们就可以构建出一个能够对该数据集完全正确分类的分类器。

此时,单层决策树即所谓的弱分类器。

7.完整的AdaBoost算法的实现

完整伪代码:

8.adaboost 和 svm

9.非均衡分类问题

在此类非均衡分类问题下,对不同分类器的性能进行可视化处理。

其他分类性能度量指标:错误率,正确率,召回率,ROC曲线。

错误率:指在所有测试样例中错分的样例比例。实际上,这样的度量错误掩盖了样例如何被分错的事实。此时,混淆矩阵可以帮助人们更好地了解分类中的错误。

 

接下来,我们只考虑一个二类问题的混淆矩阵:

             TP:将一个正例判为正例,真阳;

             FP:将一个反例判为正例,假阳;

             TN:将一个反例判为反例,真阴;

             FN:将一个正例判为反例,假阴。

  正确率(precision):预测为正例的样本中的真正正例的比例,TP/(TP+NP)。

  召回率(recall):预测为正例的真实正例占所有真实正例的比例,TP/(TP+FN)。

  在召回率很大的分类器中,真正判错的正例的数目并不多。构建一个同时使正确率和召回率最大的分类器是具有挑战性的。

  ROC曲线(receiver operating characteristic curve):接收者操作特征。

 

           在理想的情况下,最佳的分类器应该尽可能的处于左上角,这就意味着分类器在假阳率很低的同时获得了很高的真阳率。例如在垃圾邮件的过滤中,这就相当于过滤了所有的垃圾邮件,但没有将任何合法邮件误认为垃圾邮件而放入垃圾邮件的文件夹中。

          对不同的ROC曲线进行比较的一个指标是曲线下的面积(AREA UNSER THE CURVE,AUC)。AUC给出的是分类器的平均性能值,当然他不能完全代替对整条曲线的观察。

  处理分均匀分类代价问题的方法:

1.调节分类器的阈值

2.代价敏感的学习(cost-sensitive learning)

3.对分类器的训练数据进行改造。这可以通过欠抽样或者过抽样来实现。

过抽样意味着复制样例,而欠抽样意味着删除样例。

 

10.小结

      多个分类器组合可能会进一步凸显出单分类器的不足,比如过拟合问题。如果分类器之间差别显著,那么多个分类器组合就

可能会缓解这一问题。分类器之间的差别可以使算法本身或者是应用于算法上的数据的不同。

      AdaBoost以弱学习器作为基分类器,并且输入数据,使其通过权重向量进行加权。在第一次迭代当中,所有数据都等权重。但是在后续的迭代当中,前次迭代中分错的数据的权重会增大。这种针对错误的调节能力正是AdaBoost的长处。

     实际上,AdaBoost函数可以应用于任意分类器,只要该分类器能够处理加权数据即可。AdaBoost是十分强大,它能够快速处理其他分类器很难处理的数据集。

    非均衡分类问题是指在分类器训练时正例数目和反例数目不相等(相差很大)。该问题在错分正例和反例的代价不同时也存在。文章介绍了通过过抽样和欠抽样方法来调节数据集中的正例和反例数目。另一种可能更好的非均衡问题的处理方法,就是在训练分类器时将错误的代价考虑在内。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章