Sto cercando di vedere se scegliere regressione della cresta , LASSO , regressione del componente principale (PCR) o Minimi quadrati parziali (PLS) in una situazione in cui vi sono un gran numero di variabili / caratteristiche ( ) e un numero minore di campioni ( ) e il mio obiettivo è la previsione.
Questa la mia comprensione:
La regressione della cresta riduce i coefficienti di regressione, ma utilizza tutti i coefficienti senza renderli.
LASSO riduce anche i coefficienti, ma li rende anche, il che significa che può fare anche la selezione variabile.
La regressione del componente principale tronca i componenti in modo che diventi inferiore a ; esso scarterà componenti.n p - n
Il quadrato minimo parziale costruisce anche un insieme di combinazioni lineari degli input per la regressione, ma a differenza della PCR utilizza (oltre a ) per la riduzione della dimensionalità. La principale differenza pratica tra la regressione di PCR e PLS è che la PCR ha spesso bisogno di più componenti rispetto a PLS per ottenere lo stesso errore di previsione ( vedere qui ).X
Considera i seguenti dati fittizi (i dati effettivi con cui sto provando a lavorare sono simili):
#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)
Implementazione di quattro metodi:
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")
La migliore descrizione dei dati è:
, il più delle volte p > 10 n ;
Le variabili ( e Y ) sono correlate tra loro con gradi diversi.
La mia domanda è: quale strategia potrebbe essere la migliore per questa situazione? Perché?