楚韵荆风 发表于 2013-3-10 21:58
用k-fold CV选取optimal lambda
我具体做的时候遇到下面的问题。
library(lars)
X <- matrix(rnorm(1000*8),1000,8)
x1<-X[,1]
x2<-X[,2]
x3<-X[,3]
x4<-X[,4]
x5<-X[,5]
x6<-X[,6]
x7<-X[,7]
X8<-X[,8]
beta0 <- c(3,1.5,0,0,2,0,0,0)
epsilon <- rnorm(1000,sd=3)
y <- x1+exp(0.5*(x2+x5))+4*x6 + epsilon
y <- c(y)
library(lars)
f1<-lars(X, y, type = c("lasso"),intercept=F)
summary(f1)得到:
Df Rss Cp
0 0 26875 1754.95
1 1 12264 259.21
2 2 11953 229.28
3 3 11280 162.35
4 4 9903 23.16
5 5 9775 12.04
6 6 9730 9.39
7 7 9679 6.14
8 8 9677 8.00
最小的Cp是6.14对应于第七步??
> f2<-cv.lars(X, y, K = 10,trace = FALSE, se = TRUE,mode="step",type = c("lasso"))
> f2
$index
[1] 1 2 3 4 5 6 7 8 9
$cv
[1] 26.09 11.14 10.74 10.54 8.80 8.79 8.78 8.77 8.79
$cv.error
[1] 1.413 0.677 0.653 0.590 0.440 0.433 0.427 0.434 0.426
$mode
[1] "step"
> min(f2$cv)
[1] 8.77
对应第八步吗?
往下如何做呢?
即使对应第七还是第八步,都跟得出的模型跟真值相比有差距呢。
不好意思我刚接触这方面东西。希望您可以详细点说明。