【问题标题】:Attribute order influences results Naive Bayes Orange属性顺序影响结果 Naive Bayes Orange
【发布时间】:2014-12-19 06:19:03
【问题描述】:

我有一个包含 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

当然,我在这里假设从命令行调用分类器等同于以与它们在文件中出现的顺序相同的顺序在视觉上选择属性。

这让我对发生的事情有点不安全,是不是某种舍入错误?

【问题讨论】:

    标签: classification orange


    【解决方案1】:

    由于机器浮点数表示的精度有限,属性的顺序确实很重要,特别是在乘以小(接近零)数字时。 这可能是导致这种行为的原因(Orange 中的朴素贝叶斯使用 32 位浮点精度)。

    【讨论】:

    • 谢谢,我还以为发生了这样的事情。我是对的,roundig“错误”发生在乘法时(即在给定 P(attribite_value|class) 的估计值的情况下计算 P(class|data)),而不是更早?此外,它是否仅在类值和属性值的某些组合根本不出现时才会发生(频率 = 0)?
    猜你喜欢
    • 2014-06-18
    • 1970-01-01
    • 2015-03-31
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 2016-05-07
    • 2014-04-08
    相关资源
    最近更新 更多