【问题标题】:How can I make Weka classify the smaller class, with a 2:1 class imbalance?如何让 Weka 以 2:1 的类不平衡对较小的类进行分类?
【发布时间】:2015-09-19 01:53:08
【问题描述】:

如何让 Weka 对较小的分类进行分类?我有一个数据集,其中正分类占数据集的 35%,负分类占数据集的 65%。我希望 Weka 预测正分类,但在某些情况下,结果模型将所有实例预测为负分类。无论如何,它正在对负(更大)类进行分类。如何强制它对正(较小)分类进行分类?

【问题讨论】:

  • 这被称为 2:1 类不平衡。您可能会在姐妹网站CrossValidated 上获得更好的答案以供统计。
  • 具体是哪个分类器?维卡好像have at least 50

标签: machine-learning classification weka


【解决方案1】:

一个简单的解决方案是将您的训练集调整为更加平衡(50% 正面,50% 负面),以鼓励对这两种情况进行分类。我猜想你的更多案例在问题空间中是负面的,因此你需要找到一些方法来确保负面案例仍然很好地代表问题。

由于正负比例为 1:2,您也可以尝试将训练集中的正例复制为 2:2,看看效果如何。

【讨论】:

    【解决方案2】:

    使用分层抽样(例如,在 50%/50% 样本上进行训练)或类权重/类先验。如果您告诉我们哪个特定的分类器,它会很有帮助? Weka好像have at least 50

    I 类错误的惩罚 = II 类错误的惩罚吗? 这是接受者操作曲线 (ROC) 的一个特例。 如果惩罚不相等,请尝试截止值和 AUC。

    您可能还想阅读姊妹网站CrossValidated 以获取统计信息。

    【讨论】:

    • 我使用的是 Weka 的 C.4.5 DT 版本的 J48。它猜测所有实例都属于较大的类,在这种情况下为负类。所以为了保持数字简单,650 是 TP,350 是 FP,0 TN,0 FN。
    • C4.5/5.0 允许您加权不同的案例和错误分类类型。绘制整个权重/截止值范围的 ROC 曲线。然后尝试选择最佳权重/截断点 - 有很多不同的建议,这取决于 I 类错误的惩罚与 II 类错误的惩罚的相对值,而您没有回答我。有很多关于这方面的教程和文章,阅读一些。
    • 我知道 C4.5 允许权重,但我认为 Weka 的 J48 实现没有权重设置。
    • 看,您当前的分类器预测为 0 个负数!它是可怕的!您的Negative predictive value 为零!所以要么调整参数直到性能提高,要么使用不同的分类器。
    【解决方案3】:

    使用 CostSensitiveClassifier,它在“元”分类器下可用

    您需要将“分类器”更改为您的 J48 并(!)更改成本矩阵 就像 [(0,1), (2,0)]。这将告诉 J48,正实例的错误分类比负实例的错误分类成本高出两倍。当然,您可以根据业务价值调整成本矩阵。

    【讨论】:

      猜你喜欢
      • 2017-03-17
      • 2016-08-07
      • 2020-06-18
      • 1970-01-01
      • 2020-09-25
      • 2015-02-01
      • 2020-10-11
      • 2016-06-19
      • 2017-01-09
      相关资源
      最近更新 更多