最近有点荒废了,忙着改自己的文章,平时还要讨论班,时间就显得有限了,今天就给大家讲一篇有意思的文章。
首先是这篇文章的具体的信息,如下:
Eichelberger, R.K., Sheng, V.S.Does One-Against-All or One-Against-One Improve thePerformance of Multiclass Classifications? In: Proceedings of theTwenty-Seventh AAAI Conference on Artificial Intelligence, 2013:1609-1610.
这篇文章作者想要说明什么了?因为我们在做SVM和logistic regression的时候,经常通过One-Against-All和One-Against-One来提高分类的精度,作者做这篇文章的目的就是想证明(数据集测试)这两种算法是不是真的有效,还有没有其它更好的途径来改善分类效果,因此作者主要采用四种方法,在25个数据集上进行了测试。
作者采用的工具是Weka包,这个就不多说了,刚兴趣的同学可以自己去查下。
算法主要测试了四种:J48 was used for decision trees, NaiveBayes fornaïve bayes, SMO for support vector machines, and Logistic for logisticregression.
训练方式:OAA: One-Against-All (n个分类器,其中n为类别数),OAO:One-Against-One (n(n-1)/2个分类器),AAO: All-At-Once (1个分类器)。当然作者觉得OAA和OAO都是多个分类器,这样的竞赛不公平,那怎么办了?作者就对AAO采用了Bagging算法,从而训练n个分类器和n(n-1)/2个分类器用来和前面的两种算法比较。
在对25个数据集上进行了测试之后,作者算了分类的平均准确率如表1,采用双尾t检验得出两个算法在不同数据集上的(赢/平/输)的次数在表2中。
表1.平局准确率
表2. 各种算法的赢/平/输的次数
最后,作者得出结论:OAA算法是最次的,AAO其次,OAO最佳。但是在采用Bagging算法之后,AAO算法最好。
所以,这样看来以后说OAA和OAO的时候真要小心点了,好了,就写到这里。