在 R 中,如何并行计算汇总函数?
In R, how can I compute the summary function in parallel?
我有一个庞大的数据集。我在 nnet 包中通过 multinom 计算了多项式回归。
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()
函数,您会发现大部分时间都花在了 crossprod()
函数上。
所以,如果你真的想要 summary()
函数的输出,你可以使用优化的数学库,例如 Microsoft R Open.
提供的 MKL
我有一个庞大的数据集。我在 nnet 包中通过 multinom 计算了多项式回归。
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()
函数,您会发现大部分时间都花在了 crossprod()
函数上。
所以,如果你真的想要 summary()
函数的输出,你可以使用优化的数学库,例如 Microsoft R Open.