Weka AdaBoost 并不能提升结果

3
在我的学士论文中,我需要将AdaBoostM1与MultinomialNaiveBayes分类器一起用于文本分类问题。但问题在于,在大多数情况下,M1比没有提升的MultinomialNaiveBayes还差或相等。 我使用以下代码:
AdaBoostM1 m1 = new AdaBoostM1();
m1.setClassifier(new NaiveBayesMultinomial());
m1.buildClassifier(training);

那么我不明白为什么AdaBoost不能改善结果?不幸的是,我在网上找不到其他关于这个问题的信息,因为大多数人似乎对AdaBoost非常满意。


1
所以看起来解决方案是,只有当分类器在自己的训练数据上犯错误时,提升才有意义。由于朴素贝叶斯通常实现接近100%的准确性,因此在这里使用提升没有意义。 - anti_gone
3个回答

5
AdaBoost是一种二元/二分类器,旨在增强一个只比1/2准确率好的弱学习器。AdaBoostM1是一个多类分类器,但仍需要弱学习器比1/2准确率更高,而预期的机会水平约为1/M。使用平衡/加权来实现初始相等流行度类,但AdaBoost固有的重新加权可能会很快破坏这一点。解决方案是基于Kappa或Informedness等纠正机会的措施进行增强(AdaBook)。

随着M的增长,例如在文本分类中,这种不匹配会增加,因此需要比机会更强的分类器。因此,在M=100时,机会约为1%,但AdaBoostM1需要50%以上的最小准确率。

随着基础分类器变得更强大(即不再只是略高于机会),提高性能的空间减少了-它已经将我们拉向搜索空间的一个非常特定的部分。越来越可能出现过拟合错误和异常值的情况,因此没有余地来平衡各种变体。

以下是翻译的结果:

有关知情度的多种资源(包括matlab代码、xls表格和早期论文)可在此处获取:http://david.wardpowers.info/BM。与其他纠正机会kappa指标的比较可在此处找到:http://aclweb.org/anthology-new/E/E12/E12-1035.pdf

使用书匠知情度进行Adaboost的weka实现和实验可供使用 - 请联系作者。


4
很难在文本分类上击败朴素贝叶斯。此外,提升算法是为具有高偏差的弱分类器设计的,这正是提升算法表现良好的地方。提升算法减少了偏差,但增加了方差。因此,如果您希望AdaBoost +朴素贝叶斯的组合胜过朴素贝叶斯,则必须拥有一个大的训练数据集并跨越边界,在那里扩大训练集不会进一步提高朴素贝叶斯的性能(而AdaBoost仍然从扩大的训练数据集中受益)。

谢谢您的回答!如果可以的话,我希望能够接受这三个答案。 - anti_gone

2
您可能想阅读以下论文,它研究了朴素贝叶斯算法的提升。该论文表明,在自然领域的一组数据中,提升并没有像通常预期的那样显著提高朴素贝叶斯分类器的准确性。请点击以下链接查看论文:http://onlinelibrary.wiley.com/doi/10.1111/1467-8640.00219/abstract 希望这能提供有价值的见解。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接