使用分类变量进行过采样


9

我想执行过采样和欠采样的组合,以使我的数据集与大约4000个分为两组的客户保持平衡,其中一组的比例约为15%。

我研究了SMOTE(http://www.inside-r.org/packages/cran/DMwR/docs/SMOTE)和ROSE(http://cran.r-project.org/web/packages/ROSE/ ROSE.pdf),但是这两种方法都可以使用现有的观测数据(例如kNN)创建新的合成样本。

但是,由于与客户相关的许多属性都是分类的,因此我认为这不是正确的方法。例如,我的很多变量(例如Region_A和Region_B)都是互斥的,但是使用kNN可以将新的观测值放置在Region_A和Region_B中。您是否同意这是一个问题?

在那种情况下-如何通过简单地复制现有观测值来在R中执行过采样?还是这是错误的方法?


如果只有4000个观测值,为什么需要二次采样?
kjetil b halvorsen 2014年

我想平衡我的数据集以使类的份额大致相等。如果我现在使用我的数据,那么这些模型将简单地预测所有观察值作为多数类。
pir

Answers:


8

ROSE和SMOTE旨在处理类别变量,因此,除非您的类别变量以二进制格式表示,否则通常不必担心会为合成观察值分配互斥的类别特征。如果是这样,您始终可以将它们作为因素进行重组。

在您的两个区域的示例中,您将创建一个具有两个级别“ A”和“ B”的新区域变量。通过引用原始列,您的记录将采用适当的值。

现在,如果您由于新的综合观测值分布在多个其他不相关的变量(例如,synthesisObservation.isPig = 1,而synthesisObservation.hasWings = 1),则可能会产生冲突的类别,那么您总是可以执行一些额外的数据处理在进行模型估计以清除此类像差之前。

另外,由于您的数据集中确实有大约600个事件观测值,所以也许考虑使用通过多数类进行低采样而得出的综合观测值的潜在好处?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.