我正在使用lm()使用两个矩阵(一个数据和一个权重)进行线性回归,其中我循环遍历列并一次使用一列进行回归。我的数据(e)是102 x 200,000矩阵,看起来像:
V1 V2 V3 ...
-0.79 -0.79 -0.79 ...
-0.93 -0.93 -0.93 ...
-0.18 -0.18 -0.18 ...
我的权重矩阵(权重)在维度上是相等的。我的设计矩阵(mod.our)是102 x 29,看起来像:
X-intercept GI Hematopoietic Brain ...
1 0 0 1
1 0 0 0
1 0 1 0
我的代码是:
lm.i<-c()
for (i in seq(1,216063,1)){
lm.i<-c(lm.i,lm(formula=e[,i] ~ mod.our, weights=weights[,i]))
}
问题是它已运行超过24小时。有谁知道如何更快地做到这一点?或者更好的方式?
答案 0 :(得分:0)
您希望使用迭代过程来获取系数。我相信最常用Stochastic Gradient Descent。
有人在这里显示了一个带注释的示例:
http://www.r-bloggers.com/regression-via-gradient-descent-in-r/
另外,RSofia软件包在R中包含一个SGD实现。或者只是谷歌在你最喜欢的R软件包中提供这样的应用程序。
我个人在Python中只使用了SGD(我的一般建议是将Python用于大型机器学习问题,而不是R用于速度目的)。