[英]In R, how can I compute the summary function in parallel?
我有一個龐大的數據集。 我在nnet包中通過多項式計算了多項式回歸。
mylogit<- multinom(to ~ RealAge, mydata)
需要10分鍾。 但是,當我使用匯總函數計算系數時,它需要超過1天的時間!!! 這是我使用的代碼:
output <- summary(mylogit)
Coef<-t(as.matrix(output$coefficients))
我想知道是否有人知道如何通過R中的並行處理來計算這部分代碼?
這是一小部分數據樣本:
mydata:
to RealAge
513 59.608
513 84.18
0 85.23
119 74.764
116 65.356
0 89.03
513 92.117
69 70.243
253 88.482
88 64.23
513 64
4 84.03
65 65.246
69 81.235
513 87.663
513 81.21
17 75.235
117 49.112
69 59.019
20 90.03
如果只需要系數,則僅使用coef()
方法,該方法會減少計算量。
例:
mydata <- readr::read_table("to RealAge
513 59.608
513 84.18
0 85.23
119 74.764
116 65.356
0 89.03
513 92.117
69 70.243
253 88.482
88 64.23
513 64
4 84.03
65 65.246
69 81.235
513 87.663
513 81.21
17 75.235
117 49.112
69 59.019
20 90.03")[rep(1:20, 3000), ]
mylogit <- nnet::multinom(to ~ RealAge, mydata)
system.time(output <- summary(mylogit)) # 6 sec
all.equal(output$coefficients, coef(mylogit)) # TRUE & super fast
如果您對summary()
函數進行summary()
,您會發現大部分時間都由crossprod()
函數crossprod()
。 因此,如果您確實需要summary()
函數的輸出,則可以使用優化的數學庫,例如Microsoft R Open提供的MKL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.