2014-11-16 47 views
0

我只使用了Weka几个星期,但我绝对被它的优秀所吸引!Weka重新取样以平衡二进制数据集中的实例

但我有一个问题,我有一个数据集的目标列是True或False。在我的数据集

6709实例是真正的

25318实例都是假的。

我想随机添加我的True实例的副本,以产生一个25318 True和25318 False的新数据集。

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

(有可能是一个更好的过滤器,做我想做的)

我有一些成功与这些参数

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

这将产生25277真和假25165。不完全是我想要的,但非常接近。

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

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

任何帮助是极大的赞赏:)

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

Jason

回答

1

我认为这个问题的棘手部分是使用Resample Filter获得完美的平衡。这是因为,正如描述中所述,它'使用替换采样或无替换'产生数据集的随机子样本。如果这些案件是随机抽取的,则不能保证您在两个班级之间会得到同等的衡量标准。

至于幻数,这将与应用过滤器时想要的案例总数相关联。在你的情况下,它将是50636而不是32027.在这种情况下,你的幻数将是50636/32027 = 1.581。但是,如上所述,您可能无法获得真假案件的精确匹配。

如果您真的需要一个确切的数字,您可以使用您最喜欢的电子表格并预处理数据。一种可能的方法是将真实案例进行随机分组(在单独的专栏中),对所有案例进行排序和复制,直到数字匹配错误的案例。这不是一个自动化的解决方案,解决方案不在Weka之内,但我之前已经使用过这种方法,并且相当迅速地完成了这项工作。

希望这有助于!

+0

谢谢马修,那个计算就是我要找的。但是我意识到我犯了一个很大的错误。通过添加我的Positive实例的样本,我实际上是在作弊。通过给出朴素贝叶斯分类器正确答案的例子,我给了它完美的训练例子。结合离散过滤器和连续输入,人为地将我的预测率提高了20%左右! (我把香槟酒放回冰上。)感谢您的帮助:) – JasonEdinburgh