問題タブ [oversampling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.x - オーバーサンプリングの SMOTE での寸法誤差
不均衡なデータセットの imblearn ライブラリで SMOTE モジュールを使用する方法について簡単な質問があります。
DNN モデルをトレーニングするためのデータセットがあります。12442 個のサンプルがあり、各サンプルは 650*5 の配列です:
X.shape # (12442, 650, 5) y.shape # (12442, 1)
データセットは、tf.keras API で構築された私の DNN モデルでうまく機能します。
ただし、SMOTE でオーバー サンプリングを追加しようとすると、次のエラーが返されます。
imblearn パッケージの SMOTE は 1 次元データしか取得しないということですか? それを回避する方法または別のパッケージはありますか?
python - SMOTE を使用した後、不均衡なデータセットにより高い誤検知が発生する
私は、次のようなバイナリ分類の不均衡なマーケティング データセットに取り組んでいます。
- いいえ: はい 88:12 の比率 (いいえ - 製品を購入しなかった、はい - 購入した)
- ~4300 の観測値と 30 の特徴 (9 つの数値と 21 のカテゴリ)
データをトレーニング (80%) とテスト (20%) のセットに分割し、トレーニング セットで standard_scalar と SMOTE を使用しました。SMOTE は、列車データセットの「いいえ:はい」の比率を 1:1 にしました。次に、以下のコードに示すようにロジスティック回帰分類器を実行したところ、SMOTE を使用せずにロジスティック回帰分類器を適用したテスト データでは 21% しかなかったのに対し、テスト データでは 80% のリコール スコアが得られました。
SMOTE を使用すると、再現率が大幅に向上しますが、偽陽性が非常に高くなります (混同マトリックスの画像を参照)。これは、多くの偽の (購入する可能性が低い) 顧客をターゲットにすることになるため、問題です。リコール/真陽性を犠牲にすることなく、偽陽性を下げる方法はありますか?
machine-learning - トレーニング データでの SMOTE の使用
不均衡なデータセットがあり、SMOTE を使用したいと考えています。Azure ML を使用しています。Microsoft Doku ページで多くの例を読みました。SMOTE が SPLIT DATA 関数の前に設定され、トレーニング用の 70% データセットの SPLIT DATA の後ではなく、なぜ設定されるのか疑問に思っています。私が見たすべての例は、SPLIT DATA 関数の前のものです。それはSMOTEの正しい使い方ですか?
Microsoft の例:
https://imaginemedia.blob.core.windows.net/content/Lab%20PDF%20-%20Churn%20Prevention%20and%20Intervention-db9732e3e8c6.pdf
python - Leave One Out 交差検証によるオーバーサンプリング
私の研究プロジェクトでは、合計 44 個のサンプルを持つ非常に不均衡なデータセットを使用しています。これは、Leave One Out Cross Validation を使用している少数派クラスの 3/44 サンプルのバイナリ分類問題です。LOOCV ループの前にデータセット全体の SMOTE オーバーサンプリングを実行すると、ROC 曲線の予測精度と AUC の両方が、それぞれ 90% と 0.9 に近くなります。ただし、より論理的なアプローチである LOOCV ループ内のトレーニング セットのみをオーバーサンプリングすると、ROC 曲線の AUC は 0.3 まで低下します。
また、適合率と再現率の曲線と階層化された k 分割交差検証も試しましたが、ループの外側と内側のオーバーサンプリングによる同様の違いに直面しました。オーバーサンプリングするのに適切な場所を教えてください。また、可能であれば区別を説明してください。
ループ内のオーバーサンプリング:-
AUC: 0.25
精度: 68.1%
ループ外のオーバーサンプリング:
AUC: 0.99
精度: 90.24%
これらの 2 つのアプローチがどうしてこれほど異なる結果につながるのでしょうか? 私は何に従うべきですか?
python - 不均衡学習によるオーバーサンプリング後のトレーニング用の形状の出力
データをオーバーサンプリングするために不均衡学習を使用しています。オーバーサンプリング法を使用した後、各クラスにいくつのエントリがあるかを知りたいです。このコードはうまく機能します:
しかし、パイプラインの使用に切り替えたので、GridSearchCV を使用して (ADASYN、SMOTE、および BorderlineSMOTE から) 最適なオーバーサンプリング方法を見つけることができます。したがって、実際に fit_resample を自分で呼び出して、次のようなものを使用して出力を失うことはありません。
アップサンプリングは機能しますが、トレーニング セットに含まれる各クラスのエントリ数に関する出力が失われます。
パイプラインを使用して最初の例と同様の出力を得る方法はありますか?