【问题标题】:How does Weka calculate Precision using J48?Weka 如何使用 J48 计算 Precision?
【发布时间】:2015-06-18 17:54:41
【问题描述】:

我是数据挖掘和 Weka 的新手。我使用 GUI 在 Weka 中用 J48 构建了一个分类器。当 Weka 完成运行时,它会说:

Correctly Classified Instances 1035   -  68.543 %

Incorrectly Classified Instances 475  -  31.457 %

从我自己的代码(使用 IKVM.NET 的 C#)运行时,我使用相同的未标记数据集重新评估我的模型,将预测类的结果保存到 ARFF 文件中并计算从 1500 条记录中获得的结果.

大约有 1300 条记录被正确分类,200 条没有正确分类,这给出了(我认为)86% 的精确度测量值。

这是正确的吗?那为什么结果会不一样呢?

【问题讨论】:

    标签: machine-learning classification weka precision j48


    【解决方案1】:

    我认为您令人困惑的“准确度”和“精确度”,they are not the same thing

    • 准确率是所有实例正确分类实例的百分比
    • 精度是那些被分类为阳性的实例的正确分类实例的百分比

    在公式中:

    • 准确度 = (TP + TN) / (TP + TN + FP + FN) = #correct / #all_instances

    • 精度 = TP / (TP + FP) = #correct_positive / #classified_as_positive

    如果您的意思是两种情况下的准确度(1300/1500 的准确度约为 86%),那么如果不查看您的代码和 GUI 的日志,就无法判断发生了什么,这可能是这里太多了。

    最有可能的解释是您的代码所做的事情与您在 GUI 中所做的事情不同。可能是不同的随机化、不同的分割、不同的学习参数等等。

    【讨论】:

    • 将类设置为相等数量(a 类为 200,b 类为 200...)将属性数从 4000 减少到 700 我继续保持 69% 的精度,有人说(我是不谈论 stig)删除出现在我的数据集太多实例中的属性(在我的情况下属于字典的单词)会提高我的精度......所以我计算了我字典中所有标记的度量像这样:(出现令牌的 cmets 数)/(总 cmets)删除具有最高度量的令牌应该会提高精度,而不是我得到 53%
    【解决方案2】:

    有许多性能统计指标

    Weka 给你的结果只是对正确和错误分类记录数量的衡量,即

    • 正确分类的记录 = TP + TN
    • 错误分类记录 = FP + FN

    与测量精度相同。精度是衡量有多少正确分类的相关实例,即

    • 精度 = TP / (TP + FP)

    这是一个高度具体的指标,与 召回率准确度 等其他指标相比,它的观察效果最好。这可能不是衡量模型总体性能的最佳方法。

    有关 Precision 和 Recall 的更多信息,请参阅:http://en.wikipedia.org/wiki/Precision_and_recall

    不过,您的数字没有多大意义。但是,如果不知道更多细节,就不能说更多了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 2016-03-01
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      • 2014-05-30
      • 2013-01-15
      相关资源
      最近更新 更多