使用分类变量过采样

机器算法验证 不平衡类 重采样 过采样
2022-03-03 00:38:20

我想执行过采样和欠采样的组合,以平衡我的数据集,将大约 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 中执行过采样?或者这是错误的方法吗?

1个回答

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

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

现在,如果您的新合成观察结果可能会产生冲突的类别,因为它们分布在多个原本不相关的变量中(例如,syntheticObservation.isPig = 1 和 synthesisObservation.hasWings = 1),您总是可以执行一些额外的数据处理在进行模型估计以清除此类异常之前。

此外,由于您的数据集中确实有大约 600 个事件观察,也许考虑使用通过对多数类进行欠采样而得出的合成观察的潜在好处?