解释朴素贝叶斯结果

Posted

技术标签:

【中文标题】解释朴素贝叶斯结果【英文标题】:interpreting Naive Bayes results 【发布时间】:2011-04-08 14:44:45 【问题描述】:

我开始使用 NaiveBayes/Simple 分类器进行分类 (Weka),但是在训练数据时我有一些问题需要理解。我使用的数据集是weather.nominal.arff。

虽然我使用选项中的训练测试,但分类器结果是:

Correctly Classified Instances 13  -  92.8571 %    
Incorrectly Classified Instances 1 - 7.1429 %   

a b classified as  
9 0  a =yes
1 4  b = no

我的第一个问题我应该从不正确的分类实例中理解什么?为什么会出现这样的问题?哪个属性集合分类不正确?有没有办法理解这个?

其次,当我尝试 10 折交叉验证时,为什么我得到不同(较少)正确分类的实例?

结果是:

Correctly Classified Instances           8               57.1429 %
Incorrectly Classified Instances         6               42.8571 %

 a b   <-- classified as
 7 2 | a = yes
 4 1 | b = no

【问题讨论】:

【参考方案1】:

您可以通过从以下选项中选择此选项来获取每个实例的单独预测:

更多选项... > 输出预测 > 纯文本

除了评估指标之外,它还会为您提供以下内容:

=== Predictions on training set ===

 inst#     actual  predicted error prediction
     1       2:no       2:no       0.704 
     2       2:no       2:no       0.847 
     3      1:yes      1:yes       0.737 
     4      1:yes      1:yes       0.554 
     5      1:yes      1:yes       0.867 
     6       2:no      1:yes   +   0.737 
     7      1:yes      1:yes       0.913 
     8       2:no       2:no       0.588 
     9      1:yes      1:yes       0.786 
    10      1:yes      1:yes       0.845 
    11      1:yes      1:yes       0.568 
    12      1:yes      1:yes       0.667 
    13      1:yes      1:yes       0.925 
    14       2:no       2:no       0.652 

这表明第 6 个实例被错误分类。请注意,即使您在相同的实例上进行训练和测试,也可能由于数据的不一致而导致错误分类(最简单的示例是两个实例具有相同的特征但具有不同的类标签)。

请记住,上述测试方式是有偏见的(有点作弊,因为它可以看到问题的答案)。因此,我们通常对在未见过的数据上获得更真实的模型误差估计感兴趣。 Cross-validation 就是这样一种技术,它将数据分成 10 个分层折叠,对一个折叠执行测试,同时在其他九个折叠上进行训练,最后报告十次运行的平均准确率。

【讨论】:

感谢您的明确回答和 weka 提示 +1。混淆点是有偏见的,你是什么意思?我是否应该始终对所有不同的分类算法使用交叉验证? 想一想,你想学习一个对你的数据建模的朴素贝叶斯网络,然后你想测试它的预测准确性。如果您训练模型并在同一组实例上对其进行测试,那么您就高估了它的准确性(它已经看到这些特定示例在它们上表现良好),但在新数据上可能不太成功。这里的关键点是泛化:我们希望将“训练时”提供的实例之外的实例泛化到新的未见示例。 Amro 感谢您提供明确的答案。我在这里发帖是为了询问交叉验证结果的召回和精度问题。召回 (7/(2+7))=0778 和精度是 (1/(1+4))=0.2,但是 weka 说精度=0.636?对此有什么想法吗? @berkay:这不是正确的计算。对于class=yes,我们有precision=7/(7+4)=0.636363recall=7/(7+2)=0.777777class=no 的逻辑相同:en.wikipedia.org/wiki/… 好吧,我明白了。我正在以不同的方式构建混淆矩阵,因此会出错。谢谢amro。

以上是关于解释朴素贝叶斯结果的主要内容,如果未能解决你的问题,请参考以下文章

朴素贝叶斯算法

朴素贝叶斯-商品评论情感分析

MATLAB朴素贝叶斯'后验'函数的解释

机器学习简单解释贝叶斯公式和朴素贝叶斯分类?(面试回答)

朴素贝叶斯算法总结

机器学习——朴素贝叶斯算法