我有一个问题,用宽数据集运行glmnet套索.我的数据N = 50,但p> 49000,所有因素.所以要运行glmnet,我必须创建一个model.matrix,但是当我调用model.matrix(formula,data)时,我的内存耗尽,其中formula = Class~.
作为一个工作示例,我将生成一个数据集:
data <- matrix(rep(0,50*49000), nrow=50)
for(i in 1:50) {
x = rep(letters[2:8], 7000)
y = sample(x=1:49000, size=49000)
data[i,] <- x[y]
}
data <- as.data.frame(data)
x = c(rep('A', 20), rep('B', 15), rep('C', 15))
y = sample(x=1:50, size=50)
class = x[y]
data <- cbind(data, class)
Run Code Online (Sandbox Code Playgroud)
之后,我尝试创建一个model.matrix进入glmnet.
formula <- as.formula(class ~ .)
X = model.matrix(formula, data)
model <- cv.glmnet(X, class, standardize=FALSE, family='multinomial', alpha=1, nfolds=10)
Run Code Online (Sandbox Code Playgroud)
在最后一步(X = model.matrix ...),我的内存不足.我能做什么?
当我使用R开源时,如果不使用特定的包,则不可能处理大于RAM内存的数据集.所以我想知道是否有可能处理在PostgreSQL中应用PL/R函数的大数据集.
我没有找到任何关于此的文档.
当我使用包考试来产生问题时,即使使用特殊字符,我也可以用英语完美地完成.例如,我可以使用exams包编译的Rnw问题:
<<echo=FALSE, results=hide>>=
## DATA GENERATION
P <- round(runif(n = 1, min = 1000, max = 2000), digits = 2)
S <- round(runif(n = 1, min = P + 500, max = 3000), digits = 2)
## QUESTION/ANSWER GENERATION
i <- round((S - P)/P, digits = 2)*100
@
\begin{question}
Qual \'e a taxa de juros simples obtida por uma aplica\c{c}\~ao de \textdollar $\Sexpr{P}$ que, ap\'os um ano, produz um montante de \textdollar$\Sexpr{S}$?
\end{question}
\begin{solution}
Os juros s\~ao calculados …
Run Code Online (Sandbox Code Playgroud) r ×3
bigdata ×2
glmnet ×1
latex ×1
model.matrix ×1
plr ×1
postgresql ×1
r-exams ×1
r-markdown ×1