この質問は、machine learning
feature selection
の手順に関連して、this postに拡張されています。高速行列と粗行列を実行したいfeature selection
random forest
またはboosting
classifier
を使用するので、フィーチャの各ペアとレスポンスの間の外積の間のcorrelation
を測定します。大きな行列とベクトルの各列間の相関のメモリと時間効率の良い競争
フィーチャの数は〜60,000であり、応答の数は〜2,200,000です。無制限のメモリを考えると
は、おそらくこのについて移動する最速の方法は、列が機能のすべてのペアの外側の製品ですmatrix
を生成し、応答に対してそのmatrix
のcor
を使用することです。小さな寸法の一例として:
set.seed(1)
feature.mat <- matrix(rnorm(2200*100),nrow=2200,ncol=100)
response.vec <- rnorm(2200)
#generate indices of all unique pairs of features and get the outer products:
feature.pairs <- t(combn(1:ncol(feature.mat),2))
feature.pairs.prod <- feature.mat[,feature.pairs[,1]]*feature.mat[,feature.pairs[,2]]
#compute the correlation coefficients
res <- cor(feature.pairs.prod,response.vec)
しかし、私の本当の大きさfeature.pairs.prod
のためには、明らかに、メモリに格納することはできません1799970000によって220万です。
私の質問は、合理的な計算時間内にすべての相関を得ることができるかどうかです。
私はおそらくメモリに収まるチャンクにfeature.pairs.prod
を破壊することを考え、その後、一度にcor
1それらの間とresponse.vec
を行う最速になりますが、私は自動的にR
何次元で私をテストするかどうかはわかりませんしてこれらのチャンクが必要です。
別のオプションはapply
に外積を計算し、そのとresponse.vec
間cor
うfeature.pairs
上関数です。
提案がありますか?
これは、最も合理的な解決策があるという意味ではかなり似ていますfeature.pairs.prodマトリックスをチャンクに分割し、それらをループする最初の提案です。システムのリソースから、チャンクサイズを把握するRの方法はありますか? – dan