看板 R_Language 關於我們 聯絡資訊
[問題類型]: 效能諮詢(我想讓R 跑更快) [問題敘述]: 最近在用cross-validation來model selection 在目前的樣本隨機抽取(with replacement)N筆後配適模型 上述步驟重複100次, 接著N改為N+5,再重複100次,如此N+5k一直做下去 目前是用for-loop 但覺得跑得好慢 於是在想說不知是否能用apply族的函數 但看了說明,大多是對data.fram的每個欄執行function 好像沒發現有對整個data.fram執行function 故上來請教一下 有想過不然創建個維度100的LIST,每個LIST都是一整個data.fram 不過還沒試不知道可不可行= = [程式範例]: http://pastebin.com/avAHvyhd [環境敘述]: R version 3.2.2 (2015-08-14) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 8 x64 (build 9200) [關鍵字]: 選擇性,也許未來有用 -- ○ 啊~ ○○ 咿~ ○ 喔~ 嗯~ ㄥ︹○ ︽〕 ○\︿ ○ 》 ﹨︿ ○︿/︿ ○≦\_ (十面埋伏) (針鋒相對) (腹背受敵) (騰雲駕霧) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 184.6.253.131 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1443616001.A.654.html
andrew43: 運算過程已經向量化了嗎? 09/30 20:36
andrew43: 你可以先試著用 list 與 lapply() 看看好不好做 09/30 20:43
andrew43: 這大概是最簡單的一個選項。 09/30 20:43
andrew43: 另外也可以關心一下速度瓶頸是哪個部份, 再來針對它改. 09/30 20:44
andrew43: 如果是bootstap慢, 可以改成同N者共享一個大data frame 09/30 20:47
andrew43: 如果是fitting慢, 大概換一台電腦會更有幫助。 09/30 20:47
andrew43: 看了一下, 應該是卡 lm() 和 step(). 有考慮平行運算嗎? 09/30 20:54
MADNUG: 平行運算呀?這沒想過,回去研究看看! 09/30 21:11
andrew43: 先「手動」平行運算: 把 for loop 對半, 同時用二個 R 09/30 21:12
andrew43: session 跑... (我怎麼會有這麼廢的想法...) 09/30 21:13
MADNUG: 抱歉在內文沒打清楚,應該是每次在dataframe中抽取N rows 09/30 21:14
MADNUG: 做模型配適 09/30 21:14
andrew43: 可以請你提供原本的 data frame 的 dim() 大概多少? 09/30 21:26
andrew43: 這樣要測試可能會比較一致 09/30 21:26
data fram的dim()是428*23, 全都是numerical
MADNUG: 晚點下課回去更新一下,感謝! 09/30 22:56
celestialgod: 1. 先換成RRO 矩陣計算快 09/30 23:11
celestialgod: 2. 儲存的變數都要先preallocate memory 09/30 23:12
celestialgod: 3. 能夠向量化的計算就不要用迴圈 09/30 23:12
celestialgod: 4. 使用snowfall來平行 09/30 23:12
celestialgod: 2, 4點版上都有文章 去精華區找都有收錄 09/30 23:12
celestialgod: 你只是lm 換RRO就很快了 09/30 23:14
celestialgod: 平行的話內迴圈可以平行 09/30 23:15
第2點有做到 其餘三點等等來研究研究,晚點若研究出來就來更新一下XD 謝謝兩位建議的方向! ※ 編輯: MADNUG (184.6.253.131), 10/01/2015 00:58:40
andrew43: 題外話,記得別習慣把變數取名叫T,太容易誤會了。 10/01 06:48
Edster: 請問這種在資料集中重複抽取子集的方式來最佳化 10/01 10:37
Edster: 是你自己想的嗎,還是大家都公認這樣做? 10/01 10:38
Edster: 總覺得應該有更聰明的演算法來抽取資料子集。 10/01 10:39
Edster: 我講的是演算法,不是coding 10/01 10:40
MADNUG: 我這是應用k-fold cross validation,在驗證模型有效性時 10/01 12:43
MADNUG: 常用到的方法,但我不確定在抽取上是否有效率更佳的解法 10/01 12:43
andrew43: k-fold c.v. 現在很流行,和其它蒙地卡羅方法的目的 10/01 13:17
andrew43: 類似,就是要robust。 10/01 13:17
andrew43: 似乎已經流行到變成主流方法了。 10/01 13:19
celestialgod: 疑? k-fold cross validation不是用來選模嗎 10/01 16:54
celestialgod: 跟robust好像沒關係 10/01 16:54
celestialgod: 100個sample loocv還是不會這樣而有robust性質吧 10/01 16:56
celestialgod: loocv: leave-one-out cross validation 10/01 16:58
andrew43: 嗯,那我可能有誤會了什麼,謝謝。 10/01 20:58
andrew43: 我把不靠母數的方法都過度理解成目的是為了robust 10/01 21:05
andrew43: 才這樣以為。 10/01 21:05
MADNUG: 請問可以提示一下 PRO 的關鍵字嗎? 在板上搜不到相關資訊 10/01 21:16
andrew43: R 效能優化 裡 13 10/01 21:33
MADNUG: Got it! Thank you so much! 10/01 21:37