二元分类的过采样



每个人。

我正在对一个巨大的数据集(190列,500K条记录)进行二进制分类。目标值为0和1。但是,当我使用SMOTE进行过采样时,会在y向量中创建新的目标值(例如0、1、2)。我不知道该怎么避免。我想知道如何将过采样值限制为0和1。

这就是我正在做的:

over = SMOTE(sampling_strategy='minority')
X, y = over.fit_resample(X, y)

y的向量类型是int64。

此外,我正在使用Keras使用ANN进行建模。可供我使用的训练数据集分为三个不同的数据集:训练、val和测试,用于训练、验证和测试目的。我想知道哪一个应该过采样(或欠采样),或者在拆分之前我是否应该过采样。

X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.20)
X_train, X_test, y_train, y_test = train_test_split(X_train, y_train, test_size=0.15)

警告:我的模型稍后将使用一个更大的数据集(1000K条记录)进行评估,该数据集是我所在公司的真实测试数据集,其目标值对我和我的模型来说都是未知的。

Thanx

Johnny

由于您有190列、500K条记录,因此SMOTE在技术上无法与SMOTE插值技术一样工作。它可能遭受维度的诅咒。OVERsample和UNDERsample方法也有一些局限性。我更喜欢使用类权重。此外,确保对测试数据和训练数据分别进行所有数据预处理。以下是概述框架的文件:https://www.sciencedirect.com/science/article/pii/S2666827022000585

最新更新