Ich versuche herauszufinden , ob Ridge Regression , LASSO , Principal Component Regression (PCR) oder Partial Least Squares (PLS) in einer Situation mit einer großen Anzahl von Variablen / Merkmalen ( ) und einer geringeren Anzahl von Stichproben ( ), und mein Ziel ist die Vorhersage.
Dies ist mein Verständnis:
Die Ridge-Regression verkleinert die Regressionskoeffizienten, verwendet jedoch alle Koeffizienten, ohne sie auf.
LASSO verkleinert auch die Koeffizienten, macht sie aber auch zu, was bedeutet, dass es auch eine Variablenauswahl durchführen kann.
Die Hauptkomponentenregression schneidet die Komponenten ab, so dass kleiner als . komponenten werden verworfen .
Partielles kleinstes Quadrat konstruiert auch eine Reihe linearer Kombinationen der Eingaben für die Regression, verwendet jedoch im Gegensatz zur PCR (zusätzlich zu ) für die Dimensionsreduktion. Der wesentliche praktische Unterschied zwischen PCR- und PLS-Regression besteht darin, dass die PCR häufig mehr Komponenten als PLS benötigt, um den gleichen Vorhersagefehler zu erzielen ( siehe hier ).
Betrachten Sie die folgenden Dummy-Daten (die tatsächlichen Daten, mit denen ich zu arbeiten versuche, sind ähnlich):
#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)
Implementierung von vier Methoden:
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")
Die beste Beschreibung der Daten ist:
, meistens ;
Variablen ( und ) sind unterschiedlich stark miteinander korreliert .
Meine Frage ist, welche Strategie für diese Situation am besten geeignet ist. Warum?