6

フォーム(ユーザーID、映画ID、評価、時間)のテキストファイルがあり、データセットに対してバニラ回帰を実行したい(4つの機能、400万を超えるインスタンス)

model <- glm ( UserId ~ MovieId+Ratings+Time,data=<name>) 

エラーが発生しました:

ERROR: cannot allocate 138.5MB vector . 

ファイルのサイズはわずか93MBです。Rで回帰を実行し、メモリの問題が発生しないようにするにはどうすればよいですか?データを別の方法で保存する必要がありますか?

ありがとう 。

さらに詳しい情報:3GBのRAMを搭載したLinuxボックスでの作業。私はグーグルで検索しましたが、私が得たほとんどのリンクは、一般的に> RAMであるデータセットについて話しますが、私の場合はそうではありません:((ちょうど93MB)。

4

3 に答える 3

8

biglmは、回帰モデルを大規模なデータセットに適合させるために特別に設計されたパッケージです。

これは、データをブロックごとに処理することによって機能します。必要なメモリの量は変数の数の関数ですが、観測の数の関数ではありません。

于 2011-07-13T13:01:38.043 に答える
3

必要なモデル行列の行数はデータと同じですが、その中の列数はおおよそ一意の文字列(因子レベル)の数です。

したがって、1000本の映画がある場合、およそ4e6x1000のdoubleの行列が生成されます。それは約32GBです...

次のように、モデル行列を個別に生成してみることができます。

# Sample of 100 rows, 10 users, 20 movies
d <- data.frame(UserId = rep(paste('U', 10), each=10),
                MovieId=sample(paste('M', 1:20), 100, replace=T),
                Ratings=runif(100), Time=runif(100, 45, 180))
dim(d) # 100 x 4
m <- model.matrix(~ MovieId+Ratings+Time, data=d)
dim(m) # 100 x 21
于 2011-07-13T15:51:16.453 に答える
1

そのRエラーメッセージはメモリの総量を参照していませんが、Rが割り当てを試みて失敗した最後のチャンクを参照しています。メモリ使用量のプロファイリング(Rでメモリ使用量を監視)を試して、実際に何が起こっているかを確認することをお勧めします。

于 2013-03-18T13:45:12.790 に答える