R_Language 板


LINE

※ 引述《ror (回血375)》之銘言: : [問題敘述]: : 請簡略描述你所要做的事情,或是這個程式的目的 : 各位前輩好 : 想請教一個問題 : 目前我手上有大概幾百萬(快到千萬)組資料 一組資料是兩筆內容 : 現在要對每一組資料跑lm()回歸後 取出相關係數與P-value 等等資訊 : 但因為要跑的量實在是太大量了 導致速度很慢 已經使用parallel : 目前寫法是 loop-> lm() ->summary-> 取出value : 想請問是否有方式避免重複宣告lm()物件 ...或是其他可以提升速度的方式 : 感謝 Orz 以下可能跟原PO的問題關係小了一點XD 我提供一個利用RcppArmadillo and RcppParallel做 leave-one-out cross validation (LOOCV) 的例子 十萬個樣本做LOOCV: 程式:http://pastebin.com/4JK6VSd7 在我的電腦上跑一次花了173.79秒 (平均一次 0.17 milliseconds) 這個應該遠比用R的迴圈快很多... 記憶體使用的部分也保持在300MB以下,基本上不太會用到太多記憶體做暫存 給一個簡單的比較: mses = vector('numeric', N) st = proc.time() for (i in 1:N){ coef_lm = coef(lm.fit(cbind(1, X[-i,]), y[-i])) mses[i] = y[i] - c(1, X[i,]) %*% coef_lm } proc.time() - st 上面的程式在N = 5000大概花10秒,Rcpp的版本只需要0.3秒 題外話,Rcpp真的值得一學,如果想要直接使用R的BLAS可以考慮RcppArmadillo 如果覺得內建的BLAS太慢可以考用RcppEigen (他本身的BLAS也算是夠快的) 不過最簡單的方式就是用RRO,或是在linux/mac上也可以考慮openblas 最後再搭配RcppParallel就可以得到很大的加速了XDD PS: 裡面有一段程式是避免RcppParallel跟RRO使用的MKL用到過多的thread 而造成速度的拖累,所以寫了一段去減少MKL使用的thread 在有超執行緒(HT)的電腦上,MKL會用2個,其餘則是使用1個thread PS2: RRO是Revolution R Open 最後,原PO的問題也並不複雜,相關係數跟p-value可以分別透過 RcppArmadillo:::cor跟Rcpp:::pt做處理,如果有任何問題,歡迎討論XD Rcpp:::pt用法: http://stackoverflow.com/questions/20144528/how-use-correctly-rcpppt 補充,如果要用K-fold可以用下面的函數去生成cvIndex: (剛好有現成的,順便分享XD) 好讀版:http://pastebin.com/RhJx3kLs uvec cvfold_index_f(const uword n, const uword fold) { uword fold_n = n / fold, rem = n - fold_n * fold; uvec tmp_vec = linspace<uvec>(0, fold - 1, fold), index = vectorise(repmat(tmp_vec, fold_n, 1)); if (rem > 0) index = join_cols(index, index.head(rem)); // random permutation int j; for (int i = 0; i < n; i++) { j = as_scalar(randi<uvec>(1, distr_param(i, n - 1))); index.swap_rows(i, j); } return index; } --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.73.190
※ 文章網址: https://webptt.com/m.aspx?n=bbs/R_Language/M.1446441482.A.931.html
1F:推 cywhale: 教學文大推~感謝分享~~ 11/02 14:00
※ 編輯: celestialgod (140.109.73.190), 11/02/2015 14:45:48
2F:推 ror: 很感謝C大熱心的提供!以及每位幫助我的人 正在努力學習中QQ 11/02 18:14







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP