朴素贝叶斯 (Weka) - 属性总数 x 实例总数 - 为啥不同?

Posted

技术标签:

【中文标题】朴素贝叶斯 (Weka) - 属性总数 x 实例总数 - 为啥不同?【英文标题】:Naive Bayes (Weka) - Attributes total x Instances total - Why is it different?朴素贝叶斯 (Weka) - 属性总数 x 实例总数 - 为什么不同? 【发布时间】:2013-11-06 14:59:09 【问题描述】:

我一直在通过 Weka 运行数据集,应用 NB。 我坚持以下问题:在分析它时,我注意到属性部分中的总数与日志中出现的实例总数之间的差异。

如果对“a0”属性求和,您会注意到 Weka 点 1044 个实例。 如果勾选“Instances”,则为 1036。

数据集实际上包含 1036 个实例。

有人对此有解释吗?谢谢。

这是一个日志粘贴:

=== Run information ===

Scheme:       weka.classifiers.bayes.NaiveBayes 
Relation:     teste.carro
Instances:    1036
Attributes:   7
              a0
              a1
              a2
              a3
              a4
              a5
              class
Test mode:    evaluate on training data

=== Classifier model (full training set) ===

Naive Bayes Classifier

               Class
Attribute          0     1
               (0.5) (0.5)
===========================
a0
  1             105.0 175.0
  2             112.0 165.0
  3             153.0 109.0
  4             152.0  73.0
  [total]       522.0 522.0

a1
  1             101.0 165.0
  2             123.0 165.0
  3             136.0 119.0
  4             162.0  73.0
  [total]       522.0 522.0

a2
  1             150.0 107.0
  2             122.0 133.0
  3             121.0 141.0
  4             129.0 141.0
  [total]       522.0 522.0

a3
  1             247.0   1.0
  2             134.0 265.0
  3             140.0 255.0
  [total]       521.0 521.0

a4
  1             189.0 127.0
  2             177.0 185.0
  3             155.0 209.0
  [total]       521.0 521.0

a5
  1             244.0   1.0
  2             160.0 220.0
  3             117.0 300.0
  [total]       521.0 521.0



Time taken to build model: 0 seconds

=== Evaluation on training set ===

Time taken to test model on training data: 0.01 seconds

=== Summary ===

Correctly Classified Instances         957               92.3745 %
Incorrectly Classified Instances        79                7.6255 %
Kappa statistic                          0.8475
Mean absolute error                      0.1564
Root mean squared error                  0.2398
Relative absolute error                 31.2731 %
Root relative squared error             47.9651 %
Coverage of cases (0.95 level)         100      %
Mean rel. region size (0.95 level)      80.2124 %
Total Number of Instances             1036     

=== Detailed Accuracy By Class ===

                 TP Rate  FP Rate  Precision  Recall   F-Measure  MCC      ROC Area  PRC Area  Class
                 0,847    0,000    1,000      0,847    0,917      0,858    0,989     0,991     0
                 1,000    0,153    0,868      1,000    0,929      0,858    0,989     0,988     1
Weighted Avg.    0,924    0,076    0,934      0,924    0,923      0,858    0,989     0,989     

=== Confusion Matrix ===

   a   b   <-- classified as
 439  79 |   a = 0
   0 518 |   b = 1

【问题讨论】:

【参考方案1】:

阅读 Witten 和 Frank 的“数据挖掘:实用机器学习工具和技术”(Weka 的配套书籍)中指出了朴素贝叶斯中的一个问题。

如果一个特定的属性值没有出现在每个可能的类值中,那么零属性对类预测有不当的影响。 在 Weka 中,通过在计算条件概率时将每个分类属性的分子加一(分母相应调整)来避免这种可能性。如果您查看您的示例,您可以验证这是什么完成。

下面我试图解释缺少属性值所表现出的不当影响。

朴素贝叶斯公式:

P(y|x)= ( P(x1|y) * P(x2|y) * ... * P(xn|y) * P(Y) ) / P(x)

从朴素贝叶斯公式我们可以看出它们的含义:

说:

P(x1|y1) = 0 P(x2|y1) ... P(xn|y1) 都等于 1

由上式:

P(y1|x) = 0

即使所有其他属性都强烈表明该实例属于类 y1,但结果概率为零。 Weka 所做的调整允许实例仍然来自类 y1。

可以在webpage 的幻灯片 12 左右找到一个真实的数字示例

【讨论】:

非常感谢!这很有帮助。

以上是关于朴素贝叶斯 (Weka) - 属性总数 x 实例总数 - 为啥不同?的主要内容,如果未能解决你的问题,请参考以下文章

什么是朴素贝叶斯属性:useKernelEstimator 和 useSupervisedDiscretization

Java 朴素贝叶斯分类器评估

在java中使用朴素贝叶斯(weka)进行简单的文本分类

数据挖掘-朴素贝叶斯算法

贝叶斯分类

使用 weka jar 在 java 代码中加载朴素贝叶斯模型