【问题标题】:Classification issues weka using Java API分类问题 weka 使用 Java API
【发布时间】:2016-03-01 19:52:28
【问题描述】:

我正在使用 10 折交叉验证技术来训练 20 万条记录。目标类索引是这样的

状态 {PASS,FAIL}

通过的实例约为 144K,失败的实例约为 6K。

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

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

  1. 训练期间类实例之间的分布真的很重要吗(在我的例子中是通过,失败)。

  2. weka J48 树中的哪些可能值可以更好地训练,因为我看到每通过 1000 条记录中有 2% 的失败。因此,如果我们增加成功场景,成功率就会增加。

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

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

我没有添加代码,因为 Java API 和使用 weka GUI 工具都会发生这种情况。

非常感谢。

【问题讨论】:

    标签: java weka


    【解决方案1】:

    这里的问题是您的数据集非常不平衡。对于如何帮助您完成分类任务,您确实有一些选择:

    1. 使用 SMOTE 等算法为您的少数类生成合成实例。这应该会提高您的表现。
    2. 并非在所有情况下都可行,但您可以尝试将多数班级分成几个较小的班级。这将有助于平衡。
    3. 我相信 Weka 有一个分类器。这允许查看较大类别的决策边界,并将少数类别视为异常值,从而有望获得更好的分类。 Weka 的实现请参见here

    编辑: 您还可以使用分类器,根据分类是否正确对分类进行加权。同样,Weka 将其作为一个元分类器,可以应用于大多数基本分类器,请再次参阅 here

    【讨论】:

    • 让我有时间阅读这篇文章...如果这有帮助,我会更新你:)
    • 嗨坎皮诺。你知道我是否可以在java代码中使用它。如果你能解释一下 One Class Classifire 多一点。我知道我的样品完全不平衡。谢谢
    猜你喜欢
    • 2017-04-06
    • 2015-12-08
    • 2015-01-26
    • 2014-05-30
    • 2015-10-03
    • 2012-03-31
    • 1970-01-01
    • 2016-03-28
    • 2014-07-15
    相关资源
    最近更新 更多