1

不均衡なデータセットがあるバイナリ分類の問題に取り組んでいます。各クラスの観測値が 50% である、よりバランスの取れた新しいデータセットを作成したいと考えています。このために、私は が提供する R の SMOTE アルゴリズムを使用していDMwR libraryます。

新しいデータセットでは、多数派クラスの観測値を一定に保ちたいと考えています。

ただし、次の 2 つの問題があります。

  1. SMOTE は多数派クラスの観測数を減らしたり増やしたりします (少数派クラスの数だけ増やしたい)。
  2. SMOTE によって生成された一部の観測値には NA 値が含まれています。

20 個の観測値があると仮定しましょう。多数派クラスの 17 個の観測値と、少数派クラスの 3 個の観測値です。ここに私のコード:

library(DMwR)
library(dplyr)

sample_data <- data.frame(matrix(rnorm(200), nrow=20))
sample_data[1:17,"X10"] <- 0
sample_data[18:20,"X10"] <- 1
sample_data[,ncol(sample_data)] <- factor(sample_data[,ncol(sample_data)], levels = c('1','0'), labels = c('Yes','No'))
newDataSet <- SMOTE(X10 ~., sample_data, perc.over = 400, perc.under = 100)

私のコードでperc.over = 400は、少数派クラスの 12 個の新しい観測を作成するように修正perc.under = 100し、多数派クラスに変更を加えないように修正しました。

ただし、newDataSet を確認すると、SMOTE によって多数派クラスの数が 17 から 12 に減少していることがわかります。さらに、生成されたオブザベーションの一部に NA 値があります。

次の図は、得られた結果を示しています。

ここに画像の説明を入力

4

1 に答える 1