1

我正在从事垃圾邮件过滤器挖掘项目,我目前正在使用 NaiveBayesMultinomial 分类器通过计算单词出现的频率将垃圾邮件与非垃圾邮件分类。

问题是WEKA默认将分类阈值设置为0.5。但是,将非垃圾邮件误分类为垃圾邮件比反之更有害。

我想调整一下WEKA的NaiveBayesMultinomial算法的阈值,看看混淆矩阵是如何变化的。如果这不是直接可能的,我如何利用 WEKA 的输出来计算不同阈值的混淆矩阵?


以下是对测试拆分进行评估时项目当前结果的摘要:

概括:

Correctly Classified Instances        2715               98.4766 %
Incorrectly Classified Instances        42                1.5234 %
Kappa statistic                          0.9679
Mean absolute error                      0.0184
Root mean squared error                  0.1136
Relative absolute error                  3.8317 %
Root relative squared error             23.2509 %
Total Number of Instances             2757     `

按类别的详细精度:

               TP Rate   FP Rate   Precision   Recall  F-Measure   ROC Area  Class
                 0.998     0.035      0.978     0.998     0.988      0.998    ham
                 0.965     0.002      0.996     0.965     0.98       0.999    spam
Weighted Avg.    0.985     0.022      0.985     0.985     0.985      0.998

混淆矩阵:

   a    b   <-- classified as
1669    4 |   a = ham
  38 1046 |   b = spam
4

3 回答 3

2

我搜索了谷歌,似乎在 WEKA 中不太可能这样做。

但这仍然是可行的,通过“测试选项”->“更多选项”->“输出预测”然后它会给我每个测试样本的可能性结果。

从那里我可以使用另一个工具来完成其余的工作。

于 2014-04-09T19:23:17.040 回答
2

您可以在成本收益分析屏幕中更改它。您右键单击结果列表中的结果并选择可视化阈值曲线。

里面有一个滑块来移动阈值,你的新混淆矩阵在左下角。

在此处输入图像描述

于 2014-10-08T16:04:37.007 回答
1

可以通过使用成本敏感分类来调整概率阈值。

如果所需的阈值为k,则设置误报成本μ和误报成本λ使得:

k = μ / (μ + λ)

例如,如果您想要一个 0.4 的阈值,请将μ设置为 2,将λ设置为 3。换句话说,使用以下成本矩阵:

0 3
2 0

参考:使用 Weka 进行更多数据挖掘——第 4.6 课成本敏感分类与成本敏感学习幻灯片)。


公式解释:

在具有两个类别的朴素贝叶斯中,如果类别 A 的概率为 p,则类别 B 的概率为 (1 - p)。

如果阈值为 0.5,如果我们得到 p > 0.5,或者换句话说,p > (1 - p),我们将其分类为 A 类。

假设将 A 误分类为 B(假阴性)的成本是 C a,而将 B 误分类为 A(假阳性)的成本是 C b。然后,只有当将 A 误分类为 B 的概率加权成本大于将 B 误分类为 A 的概率加权成本时,我们才将其分类为 A 类。换句话说,如果这是真的,则分类为 A:

C a * p > C b * (1 - p)

重新排列不等式,我们得到:

p > C b / (C a + C b )

于 2021-09-07T14:09:42.187 回答