使用Java API

时间:2015-11-27 15:14:49

标签: java weka

我使用10倍交叉验证技术来训练200K记录。目标类索引就像

  

状态{PASS,FAIL}

Pass有~144K而Fail有~6K实例。

使用J48训练模型。它无法找到失败。准确度为95%,但大多数案例预测只是成功。在我们的情况下,我们需要找到实际发生的故障。

所以我的问题主要是假设分析。

  1. 在培训期间(在我的案例中,PASS,FAIL),类实例之间的分配是否真的重要。

  2. weka J48树中有什么可能的值可以更好地训练,因为我看到每1000条记录中有2%的失败。因此,如果我们增加Success方案,将会有所增加。

  3. 为了更好地训练他们,他们之间的比例应该是多少。

  4. 就比率而言,我在API中找不到任何东西。

    我没有添加代码,因为这既发生在Java API上,也发生在使用weka GUI工具。

    非常感谢。

1 个答案:

答案 0 :(得分:1)

这里的问题是您的数据集非常不平衡。您可以在如何帮助分类任务方面找到一些选项:

  1. 使用SMOTE等算法为您的少数族类生成合成实例。这可以提高你的表现。
  2. 在每种情况下都不可能,但您可以尝试将多数班级分成几个较小的班级。这将有助于平衡。
  3. 我相信Weka有一类分类器。这允许查看较大类的决策边界,并将少数类视为异常值,从而允许更好的分类。有关Weka的实施,请参阅here
  4. 编辑: 您还可以使用分类器,根据分类是否正确来对分类进行加权。同样,Weka将此作为可应用于大多数基本分类器的元分类器,再次参见here