Я намагаюся зрозуміти, чи варто йти на регресію хребта , LASSO , регресію основного компонента (PCR) або часткові найменші квадрати (PLS) у ситуації, коли існує велика кількість змінних / ознак ( ) та менша кількість зразків ( n < p ), і моя мета - передбачення.
Це моє розуміння:
Регресія хребта зменшує коефіцієнти регресії, але використовує всі коефіцієнти, не роблячи їх .
LASSO також зменшує коефіцієнти, але також робить їх , що означає, що він також може робити вибір змінних.
Основна регресія компонентів обрізає компоненти так, що стає менше n ; він відкине p - n компоненти.
Частковий найменший квадрат також будує набір лінійних комбінацій входів для регресії, але на відміну від ПЛР він використовує (крім 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 ) співвідносяться між собою з різними ступенями.
Моє запитання, яка стратегія може бути найкращою для даної ситуації? Чому?