Saya mencoba melihat apakah akan menggunakan regresi ridge , LASSO , regresi komponen utama (PCR), atau Partial Least Squares (PLS) dalam situasi di mana ada sejumlah besar variabel / fitur ( ) dan jumlah sampel yang lebih kecil ( n < p ), dan tujuan saya adalah prediksi.
Ini pemahaman saya:
Regresi Ridge mengecilkan koefisien regresi, tetapi menggunakan semua koefisien tanpa membuatnya .
LASSO juga menyusutkan koefisien, tetapi juga membuatnya , artinya dapat melakukan pemilihan variabel juga.
Regresi komponen utama memotong komponen sehingga menjadi kurang dari n ; itu akan membuang komponen p - n .
Kuadrat terkecil parsial juga membangun satu set kombinasi linear dari input untuk regresi, tetapi tidak seperti PCR yang menggunakan (selain X ) untuk pengurangan dimensi. Perbedaan praktis utama antara PCR dan regresi PLS adalah bahwa PCR sering membutuhkan lebih banyak komponen daripada PLS untuk mencapai kesalahan prediksi yang sama ( lihat di sini ).
Pertimbangkan data dummy berikut (data aktual yang saya coba kerjakan serupa):
#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)
Implementasi empat metode:
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")
Deskripsi data terbaik adalah:
, sebagian besar kali p > 10 n ;
Variabel ( dan Y )berkorelasisatu sama lain dengan derajat yang berbeda.
Pertanyaan saya adalah strategi apa yang terbaik untuk situasi ini? Mengapa?