繁体   English   中英

如何从R中的glmnet获取目标函数的值?

[英]How to get the value of the objective function from glmnet in R?

我可以得到套索或岭回归拟合

cvfit <- cv.glmnet(X, y)

我知道如何获得lambda的最佳价值

lambda.min <- cvfit$lambda.min

以及如何获得最佳均方误差

mse <- cvfit$cvm[cvfit$lambda == lambda.min]

如何获得目标函数的值?

我不确定glmnet是否glmnet访问目标函数的值,但是很容易计算自己。 这是LASSO的一个小例子。

library(glmnet)

x <- as.matrix(mtcars[c("hp", "cyl", "wt", "gear")])
y <- mtcars$mpg

cvfit = cv.glmnet(x, y, alpha = 1)  # alpha = 1 for LASSO

我们可以使用coef来获取模型的系数,然后根据其定义计算目标函数值。

coefs <- coef(cvfit, s = "lambda.min")
objective <- sum((y - coefs[1] - (x %*% coefs[-1]))^2) + 
             cvfit$lambda.min * sum(abs(coefs[-1]))
objective

Ridge回归类似:使用alpha = 0代替,将sum(abs(coefs[-1]))替换为sum(coefs[-1]^2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM