非常に大きなデータセットがあり、約5%のランダムな値が欠落しています。これらの変数は互いに相関しています。次のRデータセットの例は、ダミーの相関データを使用した単なるおもちゃの例です。
set.seed(123)
# matrix of X variable
xmat <- matrix(sample(-1:1, 2000000, replace = TRUE), ncol = 10000)
colnames(xmat) <- paste ("M", 1:10000, sep ="")
rownames(xmat) <- paste("sample", 1:200, sep = "")
#M variables are correlated
N <- 2000000*0.05 # 5% random missing values
inds <- round ( runif(N, 1, length(xmat)) )
xmat[inds] <- NA
> xmat[1:10,1:10]
M1 M2 M3 M4 M5 M6 M7 M8 M9 M10
sample1 -1 -1 1 NA 0 -1 1 -1 0 -1
sample2 1 1 -1 1 0 0 1 -1 -1 1
sample3 0 0 1 -1 -1 -1 0 -1 -1 -1
sample4 1 0 0 -1 -1 1 1 0 1 1
sample5 NA 0 0 -1 -1 1 0 NA 1 NA
sample6 -1 1 0 1 1 0 1 1 -1 -1
sample7 NA 0 1 -1 0 1 -1 0 1 NA
sample8 1 -1 -1 1 0 -1 -1 1 -1 0
sample9 0 -1 0 -1 1 -1 1 NA 0 1
sample10 0 -1 1 0 1 0 0 1 NA 0
この状況で欠損値を補完する(最良の)方法はありますか?ランダムフォレストアルゴリズムは役に立ちますか?Rの実用的なソリューションは大歓迎です。
編集:
(1)欠損値は変数とサンプルにランダムに分散されます。変数の数は非常に大きいため(ここでは例-10000)、サンプルの数は上記のダミーの例では少ないので約200です。すべての変数(10000)のサンプルを見ると、変数の数が多いため、一部の変数で値が欠落する可能性が高くなります。したがって、単にサンプルを削除することはオプションではありません。
(2)変数は、代入のプロセスで定量的または定性的(バイナリ)として扱うことができます。唯一の判断は、どれだけうまく予測できるか(精度)です。したがって、1ではなく0.98のような予測は、0対1または-1対1ではなく許容可能です。計算時間と精度の間でトレードオフが必要になる場合があります。
(3)変数の数がサンプルの数に比べて大きいため、過剰適合が結果にどのように影響するかを考えている問題。
(4)欠損値の合計量は約5%でランダムであるため(欠損値が非常に高い変数またはサンプルを削除するための予防措置が講じられているため、変数またはサンプルに集中していない)
(5)分析のためにデータを完全にすることは最初の目的であり、精度は二次的です。精度にあまり敏感ではありません。