私は、次のようなバイナリ分類の不均衡なマーケティング データセットに取り組んでいます。
- いいえ: はい 88:12 の比率 (いいえ - 製品を購入しなかった、はい - 購入した)
- ~4300 の観測値と 30 の特徴 (9 つの数値と 21 のカテゴリ)
データをトレーニング (80%) とテスト (20%) のセットに分割し、トレーニング セットで standard_scalar と SMOTE を使用しました。SMOTE は、列車データセットの「いいえ:はい」の比率を 1:1 にしました。次に、以下のコードに示すようにロジスティック回帰分類器を実行したところ、SMOTE を使用せずにロジスティック回帰分類器を適用したテスト データでは 21% しかなかったのに対し、テスト データでは 80% のリコール スコアが得られました。
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)