我可以获得套索或岭回归拟合
cvfit <- cv.glmnet(X, y)
我知道如何获得lambda的最佳价值。
lambda.min <- cvfit$lambda.min
以及如何获得最佳均方误差
mse <- cvfit$cvm[cvfit$lambda == lambda.min]
如何获得目标函数的值?
发布于 2015-09-27 09:12:19
我不确定glmnet
是否允许访问目标函数的值,但它很容易计算。这里有一个套索的小例子。
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
岭回归类似:使用alpha = 0
代替,并将sum(abs(coefs[-1]))
替换为sum(coefs[-1]^2)
。
https://stackoverflow.com/questions/32800838
复制相似问题