如何对R中数据集中的实例进行过采样

时间:2011-07-26 23:10:05

标签: r dataset weka

我有一个包含20个类的数据集,并且它具有非常不均匀的分布。 R中是否有任何功能允许我们平衡数据集(可能加权)?

我想使用Weka的平衡数据进行分类。由于我的班级分布有偏差,如果没有单一的多数班级,我希望能得到更好的结果。

我曾尝试过使用SMOTE过滤器和Resample过滤器,但它们并没有完全符合我的要求。 我不希望任何实例被删除,重复很好。

1 个答案:

答案 0 :(得分:1)

我认为你的术语存在误解。您的问题标题是指抽样,但问题文本涉及加权。

澄清:

通过采样,您可以拥有比原始集更少,相同或更多的实例;样本的唯一成员资格可以是原始集合的严格子集,也可以与原始集合相同(具有替换 - 即重复)。

通过加权,您只需调整可用于某些进一步目的的权重(例如抽样,机器学习),以解决或强加相对于均匀加权的某些(im)平衡。

我相信你指的是加权,但同样的答案应该适用于这两种情况。如果观察总数为N并且每个类的频率是20长向量freq的元素(例如,类1中的项目数是freq[1]*N),那么只需使用1/freq的权重向量来标准化权重。您可以将其缩放一些常数,例如N,虽然没关系。如果任何频率为0或非常接近它,您可以使用平滑计数向量(例如,Good-Turing平滑)来解决此问题。

因此,每组的总重量将相等。