使用SMOTE后,不平衡的数据集导致较高的误报率

时间:2019-05-18 12:17:45

标签: python machine-learning logistic-regression oversampling

我正在研究具有以下特征的二元分类不平衡营销数据集:

  1. 否:是的比例是88:12(没有购买该产品,而是购买了该产品)
  2. 〜4300个观测值和30个特征(9个数字和21个分类)

我将数据分为火车(80%)和测试(20%)集,然后在火车集上使用了standard_scalar和SMOTE。 SMOTE将火车数据集的“否:是”比率设为1:1。然后,我运行了一个逻辑回归分类器,如下代码所示,通过应用不带SMOTE的逻辑回归分类器,测试数据的召回得分为80%,而测试数据的召回得分仅为21%。

使用SMOTE,召回率提高了很多,但是误报率很高(请参见混淆矩阵的图片),这是一个问题,因为我们最终将针对许多假(不太可能购买)客户。有没有办法在不牺牲召回率/真实肯定的情况下减少误报?

confusion matrix

#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)

1 个答案:

答案 0 :(得分:0)

即使我有一个类似的问题,误报率也很高。在那种情况下,我在进行特征工程后就应用了SMOTE。

然后我在进行特征设计之前就使用了SMOTE,并使用了SMOTE生成的数据来提取特征。这样,它工作得很好。虽然,这将是一个较慢的方法,但是它对我有用。让我知道您的情况。