解释朴素贝叶斯的结果

ber*_*kay 5 classification machine-learning weka

我开始使用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
Run Code Online (Sandbox Code Playgroud)

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

其次,当我尝试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
Run Code Online (Sandbox Code Playgroud)

Amr*_*mro 8

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

更多选项...>输出预测> PlainText

除评估指标外,还将为您提供以下内容:

=== 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 
Run Code Online (Sandbox Code Playgroud)

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

请记住,上述测试方式存在偏见(因为它可以看到问题的答案,所以有点作弊).因此,我们通常有兴趣对看不见的数据进行更真实的模型误差估计.交叉验证就是这样一种技术,它将数据划分为10个分层折叠,在一个折叠上执行测试,而在另外9个上进行训练,最后报告十次运行的平均精度.

  • 想一想,你想学习一个为你的数据建模的朴素贝叶斯网络,那么你想要测试它的预测准确性.如果您训练模型并在同一组实例上进行测试,那么您高估了它的准确性(它已经看到这些特定的例子在它们上表现良好),但在新数据上可能不太成功.这里的关键点是**泛化**:我们希望将"训练时间"提供的实例概括为新的未见例子. (4认同)