在我的本科论文中,我需要在文本分类问题上使用AdaBoostM1和多项式朴素贝叶斯分类器。然而,问题在于在大多数情况下,M1的表现比没有提升的多项式朴素贝叶斯更差或相当。
我使用以下代码:
AdaBoostM1 m1 = new AdaBoostM1();m1.setClassifier(new NaiveBayesMultinomial());m1.buildClassifier(training);
所以我不明白为什么AdaBoost无法改善结果?遗憾的是,我在网上找不到其他相关信息,因为大多数人似乎对AdaBoost非常满意。
回答:
AdaBoost是一种二元/二分类/两类分类器,设计目的是提升一个准确率刚好超过1/2的弱学习器。AdaBoostM1是一种多类分类器,但仍然要求弱学习器的准确率超过1/2,而人们期望的随机水平大约是1/M。初始时使用平衡/加权来获得等概率类别,但AdaBoost固有的重新加权可能会迅速破坏这种平衡。一种解决方案是基于校正机会的措施,如Kappa或Informedness(AdaBook)来进行提升。
随着M的增加,例如在文本分类中,这种不匹配会增大,因此需要一个比随机水平强得多的分类器。因此,当M=100时,随机水平大约是1%,但AdaBoostM1需要至少50%的准确率。
随着基础分类器变得更强(即不再仅仅是略高于随机水平),提升改善的空间减少——它已经将我们拉到了搜索空间的一个非常具体的部分。越来越有可能已经过度拟合了错误和异常值,因此没有空间来平衡各种变体。
关于Informedness的多个资源(包括matlab代码、xls表格和早期论文)在这里:http://david.wardpowers.info/BM 与其他校正机会的Kappa措施的比较在这里:http://aclweb.org/anthology-new/E/E12/E12-1035.pdf
使用Bookmaker Informedness的AdaBoost的weka实现和实验可以联系作者获取。