我有一个包含 13 个属性和二进制类变量的数据文件。在 Orange Canvas 中,当我应用“朴素贝叶斯分类器”然后使用“测试学习者”检查性能时,我发现结果取决于在“选择属性”小部件中选择属性的顺序。差异不大,例如准确度从 0.78 到 0.76。
由于朴素贝叶斯算法由估计的概率相乘组成,因此项的顺序无关紧要。仔细检查发现:
- 这仅发生在相对频率估计中(不适用于拉普拉斯)
- 它不会发生在每个数据文件或每次重新排列中。当前 3 个变量移动到最后 3 个位置时,确实会发生这种情况
- 我们的数据文件包含零频率
- 似乎差异不是由于不同的概率估计。从命令行调用估计器时,属性在数据文件中的显示顺序无关紧要。
调用如下所示:
bayes_rl = Orange.classification.bayes.NaiveLearner(estimator_constructor=Orange.statistics.estimate.RelativeFrequency())
bayes_relative = bayes_rl(data)
print bayes_relative.conditional_distributions
当然,我在这里假设从命令行调用分类器等效于以与它们在文件中出现的顺序相同的顺序在视觉上选择属性。
这让我对发生的事情有点不安全,这是某种舍入错误吗?