我正在从事一个垃圾邮件过滤器挖掘项目,目前我正在使用NaiveBayesMultinomical分类器,通过计算单词出现的频率将垃圾邮件与非垃圾邮件进行分类。
问题是,WEKA在默认情况下将分类阈值设置为0.5。然而,将非垃圾邮件误分类为垃圾邮件比反之更有害。
我想调整WEKA的NaiveBayesMultinomical算法的阈值,看看混淆矩阵是如何变化的。如果不能直接实现,我如何利用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
概率阈值可以通过使用成本敏感分类进行调整。
如果期望的阈值为k,则设置假阳性的代价μ和假阴性的代价λ使得:
k=μ/(μλ)
例如,如果希望阈值为0.4,请将μ设置为2,将λ设置为3。换句话说,使用成本矩阵:
0 3
2 0
参考:使用Weka进行更多数据挖掘-第4.6课成本敏感分类与成本敏感学习(幻灯片)。
公式解释:
在具有两个类的朴素贝叶斯中,如果类A的概率为p,那么类B的概率为(1-p)。
如果阈值为0.5,如果我们得到p,我们分类为A类
假设将A误分类为B(假阴性)的代价为Ca,将B误分类为A(假阳性)的代价为Cb。那么,我们只有在将A误分类为B的概率加权代价大于将B误分类为A的概率加权代价的情况下才分类为A类。换句话说,如果这是真的,则分类为A:
Ca*p
重新排列不平等,我们得到:
p
您可以在成本效益分析屏幕中进行更改。在结果列表中的结果上单击鼠标右键,然后选择“可视化阈值曲线”。
里面有一个滑块来移动阈值,你的新混淆矩阵在左下角。
对不起,我是新来WEKA,刚刚学习。 在我的决策树(J48)分类器输出中,有一个混淆矩阵: 我如何读取这个矩阵?
我想在weka中进行分类。我正在使用一些方法(随机树、随机森林、决策表、随机子空间...),但它们会给出如下结果。 然而,我希望结果作为准确度和混淆矩阵。我怎样才能得到这样的结果? 注意:当我使用小数据集时,它会以混淆矩阵的形式给出结果。它可以与数据集的大小相关吗?
如何分析Weka中的混淆矩阵,以获得准确度?我们知道,由于数据集不平衡,精度不准确。混淆矩阵如何“确认”准确性? 示例:a)准确率96.1728% b) 准确率:96.8% 等...
我一直在使用Weka的J48决策树将RSS提要中的关键字频率分类为目标类别。我想我可能在协调生成的决策树与报告的正确分类的实例数以及混淆矩阵中的实例数方面存在问题。 例如,我的一个. arff文件包含以下数据摘录: 以此类推:总共有64个关键字(列)和570行,其中每一行都包含一天提要中关键字的频率。在这种情况下,10天内有57条feed,总共有570条记录需要分类。每个关键字都以代理项编号作为前
目前我们衡量分类器准确率的方式是使用以下公式:正确分类的记录数÷记录总数。 有时我们会需要一个更为详细的评价结果,这时就会用到一个称为混淆矩阵的可视化表格。 表格的行表示测试用例实际所属的类别,列则表示分类器的判断结果。 混淆矩阵可以帮助我们快速识别出分类器到底在哪些类别上发生了混淆,因此得名。 让我们看看运动员的示例,这个数据集中有300人,使用十折交叉验证,其混淆矩阵如下: 可以看到,100个