0

非常に不均衡なバイナリ (はい/いいえ) 分類データセットがあります。データセットには現在、約 0.008% の「はい」があります。

SMOTE を使用してデータセットのバランスを取る必要があります。

不均衡に対処するための2つの方法に出会いました。変数に対して MinMaxScaler を実行した後の次の手順

from imblearn.pipeline import Pipeline
oversample = SMOTE(sampling_strategy = 0.1, random_state=42)
undersample = RandomUnderSampler(sampling_strategy=0.5, random_state=42)
steps = [('o', oversample), ('u', undersample)]
pipeline = Pipeline(steps=steps)
x_scaled_s, y_s = pipeline.fit_resample(X_scaled, y)

これにより、データセットのサイズが 240 万行から 732000 行に減少し、不均衡が 0.008% から 33.33% に改善されます。

このアプローチをしながら

sm = SMOTE(random_state=42)
X_sm , y_sm = sm.fit_sample(X_scaled, y)

これにより、行数が 240 万行から 480 万行に増加し、不均衡は 50% になりました。

これらの手順の後、データをトレーニング テスト データセットに分割する必要があります。

ここで正しいアプローチは何ですか?

これらの方法を選択する前に、どのような要因を考慮する必要がありますか?

サンプリングされていないデータに対して X_test、y_test を実行する必要があります。これは、データを分割し、トレーニング データに対してのみアップサンプリング/アンダーサンプリングを行うことを意味します。

ありがとうございました。

JD

4

1 に答える 1