问题描述
我有一个大型的稀疏数据集(约4百万行乘3万列),每行约有10个真实元素。我正在使用glmnet软件包,该软件包非常适合套索惩罚回归。
我无法从glmnet :: bigGlm函数获取基线比较结果-与主要的glmnet算法不同,该函数不会删除功能。回归工作正常:
library(glmnet)
# dummy data - my dataset is bigger
sparseMatrix1 <- sparseMatrix(i = 1:10000,j = sample(1:1000,10000,replace = TRUE))
answerMatrix1 <- cbind(psych = sample(0:1,replace = TRUE),med = sample(0:1,surg = sample(0:1,replace = TRUE))
glmAnalysis <- bigGlm(sparseMatrix1,data.matrix(answerMatrix1),family = "multinomial",parallel = TRUE,path = TRUE)
这将返回一个“ bigGlm”对象,该对象继承自类“ glmnet”,因此应该可以使用评估.glmnet函数。但是,出现以下错误:
assess.glmnet(glmAnalysis,newx = sparseMatrix1,newy = answerMatrix1,family = "multinomial")
# Error in match.arg(family) :
'arg' should be one of “all”,“gaussian”,“binomial”,“poisson”,“multinomial”,“cox”,“mgaussian”,“GLM”
在包函数“ assesss.glmnet”中查看,问题在于bigGlm对象未被识别为所列家族之一,因此评估函数不知道要运行哪种评估算法。关于使用bigGlm函数进行故障排除的说明并不多。
我的两个问题是:
- 有人知道要传递给具有三个逻辑输出矢量的多项式逻辑回归的glmnet :: bigGlm参数吗?
- 第二,我应该只使用其他软件包进行逻辑回归,而不用惩罚套索/里奇吗? (有任何关于最佳包装的建议吗?我的完整数据集是该样本大小的20倍,大约有400万行,而不是该样本的10,000行)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)