0

我正在研究一个二进制分类不平衡的营销数据集,它具有:

  1. 否:是 88:12 的比例(否 - 未购买产品,是 - 购买)
  2. 约 4300 个观察值和 30 个特征(9 个数字和 21 个分类)

我将我的数据分为训练集(80%)和测试集(20%),然后在训练集上使用标准标量和 SMOTE。SMOTE 将训练数据集的“否:是”比率设为 1:1。然后我运行了一个逻辑回归分类器,如下面的代码所示,在测试数据上获得了 80% 的召回分数,而通过应用没有 SMOTE 的逻辑回归分类器在测试数据上只有 21% 的召回率。

使用 SMOTE,召回率提高很大,但是误报率很高(请参阅混淆矩阵的图像),这是一个问题,因为我们最终会针对许多虚假(不太可能购买)客户。有没有办法在不牺牲召回/真阳性的情况下降低误报?

混淆矩阵

#Without SMOTE
clf_logistic_nosmote = LogisticRegression(random_state=0, solver='lbfgs').fit(X_train,y_train)

#With SMOTE  (resampled train datasets) 
clf_logistic = LogisticRegression(random_state=0, solver='lbfgs').fit(X_train_sc_resampled, y_train_resampled)
4

1 回答 1

0

甚至我也有类似的问题,误报率非常高。在那种情况下,我在进行特征工程后应用了 SMOTE。

然后我在做特征工程之前使用了 SMOTE,并使用 SMOTE 生成的数据来提取特征。这样它工作得很好。虽然,这将是一种较慢的方法,但它对我来说很有效。让我知道你的情况如何。

于 2019-11-21T18:02:37.883 回答