나는 갈 수 있는지 여부를 확인하려 능선 회귀 , LASSO , 주성분 회귀 (PCR), 또는 부분 최소 제곱 변수 / 기능 (의 수가 많은 경우 상황에서 (PLS) ) 및 샘플의 작은 수 ( ), 내 목표는 예측이다.
이것은 내 이해 :
릿지 회귀 는 회귀 계수를 축소하지만 모든 계수를 만들지 않고 사용합니다.
LASSO 는 또한 계수를 축소하지만 계수를 만들어변수를 선택할 수도 있습니다.
주성분 회귀 분석 은 가 n 보다 작아 지도록 성분을 절단합니다 . p - n 구성 요소를 버립니다 .
부분 최소 제곱 은 또한 회귀에 대한 입력의 선형 조합 세트를 구성하지만 PCR과 달리 차원 감소 를 위해 ( X 외에 )를 사용합니다. 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")
데이터에 대한 가장 좋은 설명은 다음과 같습니다.
, 대부분 p > 10 n ;
변수 ( 및 Y )는 서로 다른 각도로 서로 관련 되어 있습니다.
내 질문은이 상황에 가장 적합한 전략은 무엇입니까? 왜?