【问题标题】:Weka Resample to balance instances in binary datasetWeka Resample 以平衡二进制数据集中的实例
【发布时间】:2014-11-18 07:26:09
【问题描述】:

我只用了几个星期的 Weka,但我被它的伟大所震撼!

但我有一个问题,我有一个数据集,其目标列是真或假。

我的数据集中有 6709 个实例为真

25318 个实例为 False。

我想随机添加我的 True 实例的副本以生成具有 25318 True 和 25318 False 的新数据集。

我能找到的唯一过滤器是有监督的重采样过滤器,但是我无法理解我应该使用哪些参数。

(可能有更好的过滤器来做我想做的事)

我在这些参数上取得了一些成功

biasToUniformClass = 1.0
invertSelection = False
noReplacement = False
randomSeed = 1
sampleSizePercent = 157.5 (a magic number I've arrived at by trial and error)

这会产生 25277 True 和 25165 False。不完全是我想要的,但非常接近。

问题是我不知道如何得出这个幻数。我也没有得到我真正想要的实例数量。

是否有更好的过滤器用于此目的? 如果没有,有没有办法计算 sampleSizePercent 幻数?

非常感谢任何帮助:)

补充问题,我最好在我的布尔列上运行 NominalToBinary 以确保它们是二进制的?我正在使用 NaiveBayes 分类器(目前),我没有任何缺失的实例。

杰森

【问题讨论】:

    标签: weka


    【解决方案1】:

    我认为这个问题的棘手部分是使用重采样过滤器获得完美的平衡。这是因为,正如描述中所述,它“使用有放回抽样或无放回抽样产生数据集的随机子样本”。如果这些案例是随机抽取的,则无法保证您将在两个类别之间获得相同的度量。

    至于幻数,这将与应用过滤器时您希望拥有的案例总数相关联。在您的情况下,它将是 50636 而不是 32027。在这种情况下,您的幻数将是 50636 / 32027 = 1.581。但是,如上所述,您可能无法准确匹配真假案例。

    如果您真的需要一个精确的数字,您可以使用您最喜欢的电子表格并对数据进行预处理。一种可能的方法是将真实案例随机化(在单独的列中),对所有案例进行排序和复制,直到数字与虚假案例匹配。这不是一个自动化的解决方案,而且该解决方案在 Weka 之外,但我以前使用过这种方法并且可以相当快地完成这项工作。

    希望对您有所帮助!

    【讨论】:

    • 谢谢马修,那个计算正是我想要的。但我意识到我犯了一个很大的错误。通过添加我的正面实例的样本,我实际上是在作弊。通过给出朴素贝叶斯分类器正确答案的例子,我给了它完美的训练例子。结合离散化滤波器和连续输入,它人为地将我的预测率提高了大约 20%! (我已经把香槟放回冰上。)谢谢你的帮助:)
    猜你喜欢
    • 2018-09-13
    • 2014-06-19
    • 1970-01-01
    • 2017-08-16
    • 2023-03-12
    • 2017-03-17
    • 2021-12-12
    • 1970-01-01
    • 2018-01-09
    相关资源
    最近更新 更多