首先我要说,我是一名WEKA新手。
我正在使用WEKA进行二进制分类问题,其中某些指标用于获取实例的是/否答案。
为了举例说明这个问题,这里是我用288个实例得到的混淆矩阵,使用BayesNet得到190个“是”和98个“否”值:
a b <-- classified as
190 0 | a = yes
98 0 | b = no
这种绝对分离也是一些其他分类器的情况,但不是所有分类器。也就是说,即使分类器没有极化到这种程度的价值,它们确实对主要类别有明确的偏见。例如,这是RandomForest的结果:
a b <-- classified as
164 34 | a = yes
62 28 | b = no
我很确定我错过了一些非常明显的东西。
答案 0 :(得分:1)
最初,我认为BayesNet就是问题所在。但现在我认为这是你的数据。
正如评论中已经指出的那样,我认为问题在于不平衡的类。大多数分类器都会针对准确性进行优化,在您的情况下,BayesNet为(190 + 0) / 288 = 0.66
,RandomForest为(164 + 28) / 288 = 0.67
。
正如您所看到的,区别并不大,但RandomForest找到的解决方案稍微好一些。它看起来“更好”,因为它没有把所有东西放在同一个类中,但我真的怀疑它在统计上是否显着。
像Lars Kotthoff提到的那样,很难说。我还猜测这些功能对于更好的分离来说还不够好。除了尝试其他分类器之外,您还应该重新考虑您的绩效指标。 准确度仅在每个类的实例数大致相同时才有效。在其他情况下,MCC或AUC是不错的选择(但由于实现不兼容,AUC将无法与WEKA中的LibSVM一起使用)。
您的示例的MCC对于BayesNet将为0,
((164*28) - (62*34)) / sqrt((164+62)*(34+28)*(164+34)*(62+28))
= (4592 - 2108) / sqrt(226 * 62 * 198 * 90)
= 2484 / sqrt(249693840)
= 0,15719823927071640929
对于RandomForest。所以RandomForest显示了稍好的结果,但效果不是很好。
很难说没有看到你的数据,但它们可能没有很好的分离。