【问题标题】:How to predict using only weights obtained from glmnet in R?如何仅使用从 R 中的 glmnet 获得的权重进行预测?
【发布时间】:2018-02-15 20:08:45
【问题描述】:

可以使用predict(fit,newx) 方法进行预测。但是如何预测我是否没有合适的对象本身,而只有预测变量的权重作为向量文件,而预测变量的新观察值作为矩阵文件?预测变量和结果都是连续变量。

【问题讨论】:

  • 寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。
  • 这是线性回归还是逻辑回归(或其他)?对于线性预测,您只需将观察结果乘以权重并将它们相加。对于逻辑,您执行相同的乘法和求和,但必须转换结果 en.wikipedia.org/wiki/…
  • 感谢@Pdubbs,这就是我的假设。但想确认一下。
  • @Pdubbs 其实什么样的模型都没有关系,你可以对 glmnet 中的任何东西做同样的过程,因为它们都是广义线性模型。
  • 您可以相乘和求和,但要从逻辑系数中获得对人类有用的任何东西,您需要使用 1/(1+e^(-score)) 对其进行转换。对于 OLS 以外的事物也有同样的不同变换

标签: r predict glmnet


【解决方案1】:

您可以只使用矩阵乘法,这就是 glmnet 所做的。在predict函数中为:as.matrix(cbind2(1, x) %*% coefs)

例子:

library(glmnet)

x=matrix(rnorm(100*20),100,20)
y=rnorm(100)
fit1=glmnet(x,y)
coefs <- coef(fit1,s=0.01) # extract coefficients at a single value of lambda

manaul_pred <- as.matrix(cbind2(1, x) %*% coefs)
pred <- predict(fit1,newx=x,s=0.01)

manual_pred - pred # there is a negligible difference due to numeric precision

【讨论】:

  • 如果在拟合中使用的所有预测变量中只有一些可用,那么预测是否有效?
  • 如果缺失的预测变量只有小系数,是的。如果它们的系数很大,则可能无效。
  • 谢谢。有没有办法在执行预测时评估它?我可以只比较数据集中存在和不存在的预测变量之间的系数绝对值的平均值吗?
猜你喜欢
  • 2012-03-09
  • 1970-01-01
  • 2017-08-23
  • 2018-03-02
  • 2021-03-18
  • 2016-05-07
  • 2019-04-28
  • 2022-07-22
  • 2019-03-18
相关资源
最近更新 更多