Bir LASSO modeli ve aşamalı regresyon için, sıklık olasılığı, p-değerleri vb. İfadelerin olasılık yorumu doğru değildir .
Bu ifadeler olasılığı fazla tahmin ediyor. Örneğin, bazı parametreler için% 95 güven aralığı, yöntemin o aralık içindeki gerçek model değişkeni ile bir aralık ile sonuçlanma olasılığının% 95 olduğunu varsayar.
Bununla birlikte, takılan modeller tipik bir tek hipotezden kaynaklanmaz ve bunun yerine kademeli regresyon veya LASSO regresyonu yaptığımızda kiraz toplama (birçok olası alternatif modelden birini seçiyoruz).
Model parametrelerinin doğruluğunu değerlendirmek çok mantıklı değildir (özellikle modelin doğru olmadığı muhtemel olduğunda).
Daha sonra açıklanacak olan aşağıdaki örnekte, model birçok regresöre takılmıştır ve çoklu doğrusallıktan 'muzdariptir'. Bu, modelde gerçekten modelde olanın yerine komşu bir regresörün (güçlü bir şekilde korelasyonlu) seçilmesini mümkün kılar. Güçlü bir korelasyon önemli bir hata / varyans için katsayılar neden olur (matrisine ilişkin ( XTX)- 1 ).
Bu daha küçük bir tasarım matris dayanmaktadır, çünkü Ancak, multicollionearity için bu yüksek varyans, p-değerleri ya da katsayıların standart hata gibi teşhis 'görülen' değildir X ile daha az regresyonu. (ve LASSO için bu tür istatistikleri hesaplamak için kolay bir yöntem yoktur )
Örnek: 10 Gauss eğrisinin doğrusal toplamı olan bir sinyal için bir oyuncak modelinin sonuçlarını gösteren aşağıdaki grafik (bu, örneğin, bir spektrum için bir sinyalin doğrusal bir toplam olduğu düşünülen kimyadaki bir analize benzeyebilir. birkaç bileşen). 10 eğrinin sinyali LASSO kullanılarak 100 bileşenli bir model (farklı ortalamalara sahip Gauss eğrileri) ile donatılmıştır. Sinyal iyi tahmin edilmiştir (makul derecede yakın olan kırmızı ve siyah eğriyi karşılaştırın). Ancak, asıl temel katsayılar iyi tahmin edilmemiştir ve tamamen yanlış olabilir (kırmızı ve siyah çubukları aynı olmayan noktalarla karşılaştırın). Ayrıca bkz. Son 10 katsayı:
91 91 92 93 94 95 96 97 98 99 100
true model 0 0 0 0 0 0 0 142.8 0 0 0
fitted 0 0 0 0 0 0 129.7 6.9 0 0 0
LASSO modeli çok yakın olan katsayıları seçer, ancak katsayıların kendileri açısından sıfır olmaması gereken bir katsayının sıfır olduğu ve sıfır olması gereken bir komşu katsayının tahmin edildiği büyük bir hata anlamına gelir. sıfır olmayan. Katsayılar için herhangi bir güven aralığı çok az mantıklı olacaktır.
LASSO bağlantısı
Kademeli montaj
Bir karşılaştırma olarak, aynı eğri aşağıdaki görüntüye giden kademeli bir algoritma ile donatılabilir. (katsayıların yakın olduğu ancak eşleşmediği benzer problemlerle)
Eğrinin doğruluğunu göz önünde bulundursanız bile (önceki noktada mantıklı olmadığı açıkça belirtilmiş parametreler yerine), aşırı sığdırma ile uğraşmak zorundasınız. LASSO ile bir montaj prosedürü yaptığınızda, eğitim verilerini (farklı parametrelere sahip modelleri sığdırmak için) ve test / doğrulama verilerini (hangisinin en iyi parametre olduğunu ayarlamak / bulmak için) kullanırsınız, ancak üçüncü bir ayrı set de kullanmalısınız. test / doğrulama verilerinin
Bir p-değeri ya da simüler bir şey işe yaramayacaktır çünkü kiraz toplama ve düzenli doğrusal montaj yönteminden farklı (çok daha büyük serbestlik dereceleri) ayarlanmış bir model üzerinde çalışıyorsunuz.
kademeli olarak aynı sorunlardan muzdarip regresyon mu?
R,2
LASSO'nun kademeli regresyon yerine kullanılmasının ana nedeninin, LASSO'nun daha az açgözlü bir parametre seçimine izin verdiği, bu da çok sıralılıktan daha az etkilendiğini düşündüm. (LASSO ile aşamalı olarak daha fazla farklılık: LASSO'nun ileri seçim / geriye doğru eliminasyona göre modelin çapraz doğrulama tahmini hatası açısından üstünlüğü )
Örnek resim kodu
# settings
library(glmnet)
n <- 10^2 # number of regressors/vectors
m <- 2 # multiplier for number of datapoints
nel <- 10 # number of elements in the model
set.seed(1)
sig <- 4
t <- seq(0,n,length.out=m*n)
# vectors
X <- sapply(1:n, FUN <- function(x) dnorm(t,x,sig))
# some random function with nel elements, with Poisson noise added
par <- sample(1:n,nel)
coef <- rep(0,n)
coef[par] <- rnorm(nel,10,5)^2
Y <- rpois(n*m,X %*% coef)
# LASSO cross validation
fit <- cv.glmnet(X,Y, lower.limits=0, intercept=FALSE,
alpha=1, nfolds=5, lambda=exp(seq(-4,4,0.1)))
plot(fit$lambda, fit$cvm,log="xy")
plot(fit)
Yfit <- (X %*% coef(fit)[-1])
# non negative least squares
# (uses a stepwise algorithm or should be equivalent to stepwise)
fit2<-nnls(X,Y)
# plotting
par(mgp=c(0.3,0.0,0), mar=c(2,4.1,0.2,2.1))
layout(matrix(1:2,2),heights=c(1,0.55))
plot(t,Y,pch=21,col=rgb(0,0,0,0.3),bg=rgb(0,0,0,0.3),cex=0.7,
xaxt = "n", yaxt = "n",
ylab="", xlab = "",bty="n")
#lines(t,Yfit,col=2,lwd=2) # fitted mean
lines(t,X %*% coef,lwd=2) # true mean
lines(t,X %*% coef(fit2), col=3,lwd=2) # 2nd fit
# add coefficients in the plot
for (i in 1:n) {
if (coef[i] > 0) {
lines(c(i,i),c(0,coef[i])*dnorm(0,0,sig))
points(i,coef[i]*dnorm(0,0,sig), pch=21, col=1,bg="white",cex=1)
}
if (coef(fit)[i+1] > 0) {
# lines(c(i,i),c(0,coef(fit)[i+1])*dnorm(0,0,sig),col=2)
# points(i,coef(fit)[i+1]*dnorm(0,0,sig), pch=21, col=2,bg="white",cex=1)
}
if (coef(fit2)[i+1] > 0) {
lines(c(i,i),c(0,coef(fit2)[i+1])*dnorm(0,0,sig),col=3)
points(i,coef(fit2)[i+1]*dnorm(0,0,sig), pch=21, col=3,bg="white",cex=1)
}
}
#Arrows(85,23,85-6,23+10,-0.2,col=1,cex=0.5,arr.length=0.1)
#Arrows(86.5,33,86.5-6,33+10,-0.2,col=2,cex=0.5,arr.length=0.1)
#text(85-6,23+10,"true coefficient", pos=2, cex=0.7,col=1)
#text(86.5-6,33+10, "fitted coefficient", pos=2, cex=0.7,col=2)
text(0,50, "signal versus position\n true mean (black), fitted with nnls (green)", cex=1,col=1,pos=4, font=2)
plot(-100,-100,pch=21,col=1,bg="white",cex=0.7,type="l",lwd=2,
xaxt = "n", yaxt = "n",
ylab="", xlab = "",
ylim=c(0,max(coef(fit)))*dnorm(0,0,sig),xlim=c(0,n),bty="n")
#lines(t,X %*% coef,lwd=2,col=2)
for (i in 1:n) {
if (coef[i] > 0) {
lines(t,X[,i]*coef[i],lty=1)
}
if (coef(fit)[i+1] > 0) {
# lines(t,X[,i]*coef(fit)[i+1],col=2,lty=1)
}
if (coef(fit2)[i+1] > 0) {
lines(t,X[,i]*coef(fit2)[i+1],col=3,lty=1)
}
}
text(0,33, "illustration of seperate components/curves", cex=1,col=1,pos=4, font=2)