我正在尝试在存在大量变量/特征的情况下是否选择岭回归、LASSO、主成分回归(PCR) 或偏最小二乘法(PLS)() 和较少数量的样本 (),我的目标是预测。
这是我的理解:
岭回归缩小回归系数,但使用所有系数而不使它们.
LASSO也缩小了系数,但也使它们,这意味着它也可以进行变量选择。
主成分回归截断成分,使得变得小于; 它会丢弃组件。
偏最小二乘还构造了一组用于回归的输入的线性组合,但与 PCR 不同,它使用(此外) 用于降维。PCR 和 PLS 回归之间的主要实际区别在于,PCR 通常需要比 PLS 更多的组件来实现相同的预测误差(参见此处)。
考虑以下虚拟数据(我尝试使用的实际数据类似):
#random population of 200 subjects with 1000 variables
M <- matrix(rep(0,200*100),200,1000)
for (i in 1:200) {
set.seed(i)
M[i,] <- ifelse(runif(1000)<0.5,-1,1)
}
rownames(M) <- 1:200
#random yvars
set.seed(1234)
u <- rnorm(1000)
g <- as.vector(crossprod(t(M),u))
h2 <- 0.5
set.seed(234)
y <- g + rnorm(200,mean=0,sd=sqrt((1-h2)/h2*var(g)))
myd <- data.frame(y=y, M)
四种方法的实现:
require(glmnet)
# LASSO
fit1=glmnet(M,y, family="gaussian", alpha=1)
# Ridge
fit1=glmnet(M,y, family="gaussian", alpha=0)
# PLS
require(pls)
fit3 <- plsr(y ~ ., ncomp = 198, data = myd, validation = "LOO")
# taking 198 components and using leave-one-out cross validation
summary(fit3)
plot(RMSEP(fit3), legendpos = "topright")
# PCR
fit4 <- pcr(y ~ ., ncomp = 198, data = myd, validation = "LOO")
数据的最佳描述是:
, 大多数时候 ;
变量 (和)以不同程度相互关联。
我的问题是哪种策略最适合这种情况?为什么?