8

mboost パッケージの blackboost 関数を使用して、Windows 7 64 ビット、8 GB RAM マシン上の約 500 MB のデータセットでモデルを推定しています。実行中、R は事実上すべての使用可能なメモリを使用します。計算が完了すると、gc() でガベージ コレクションを呼び出したり、ワークスペースを保存して新しい R セッションに再読み込みしたりした後でも、4.5 GB 以上が R に割り当てられたままになります。.ls.objects ( 1358003 ) を使用すると、すべての可視オブジェクトのサイズが約 550 MB であることがわかりました。

gc() の出力は、データの大部分がベクター セルにあることを示していますが、それが何を意味するのかはわかりません。

            used   (Mb) gc trigger   (Mb)  max used   (Mb)
Ncells   2856967  152.6    4418719  236.0   3933533  210.1
Vcells 526859527 4019.7  610311178 4656.4 558577920 4261.7

これは私がやっていることです:

> memory.size()
[1] 1443.99
> model <- blackboost(formula, data = mydata[mydata$var == 1,c(dv,ivs)],tree_control=ctree_control(maxdepth = 4))

...たくさんのパッケージが読み込まれます...

> memory.size()
[1] 4431.85
> print(object.size(model),units="Mb")
25.7 Mb
> memory.profile()
     NULL      symbol    pairlist     closure environment     promise    language 
        1       15895      826659       20395        4234       13694      248423 
  special     builtin        char     logical     integer      double     complex 
      174        1572     1197774       34286       84631       42071          28 
character         ...         any        list  expression    bytecode externalptr 
   228592           1           0       79877           1       51276        2182 
  weakref         raw          S4 
      413         417        4385 

mydata[mydata$var == 1,c(dv,ivs)] には 139593 行と 75 列があり、ほとんどが因子変数で、いくつかの論理変数または数値変数があります。formulaは、"dv ~ var2 + var3 + .... + var73" 型の式オブジェクトです。dvは変数名文字列で、ivsはすべての独立変数 var2 ... var74 をもつ文字列ベクトルです。

Rに大量のメモリが割り当てられているのはなぜですか? Rに余分なメモリを解放させるにはどうすればよいですか? どんな考えでも大歓迎です!

4

2 に答える 2

2

パッケージの作成者の1人に話を聞いたところ、モデルオブジェクトに関連付けられたデータの多くは環境に保存されているため、object.sizeがblackboost関数によって引き起こされるRの完全なメモリ使用量を反映していない理由が説明されています。彼はまた、mboostパッケージは速度とメモリ効率の点で最適化されておらず、柔軟性を目的としていること、そしてすべてのツリーが保存され、それによってデータも保存されることを教えてくれました。これは、生成された大量のデータを説明しています(私はまだ注目すべき寸法..)。彼は、パッケージgbm(まだ結果を複製できませんでした)を使用するか、次のようにしてシリアル化することを推奨しました。

### first M_1 iterations
mod <- blackboost(...)[M_1]
f1 <- fitted(mod)
rm(mod)
### then M_2 additional iterations ...
mod <- blackboost(..., offset = f1)[M_2]
于 2012-12-03T23:41:26.377 に答える
0

私が収集できることから、問題はRのgc()ではなく、メモリがOSに完全に戻されていないという事実です。

このスレッドは答えを提供しませんが、問題の性質に光を当てます。

于 2012-11-13T10:55:44.523 に答える