在R中,如何并行计算汇总函数?

问题描述 投票:0回答:1

我有一个庞大的数据集。我在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
r parallel-processing nnet
1个回答
0
投票

如果您只想要系数,请仅使用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。

© www.soinside.com 2019 - 2024. All rights reserved.