Apakah LASSO menderita masalah yang sama dengan regresi bertahap?

18

Metode pemilihan variabel algoritmik bertahap cenderung memilih model yang bias kurang lebih setiap perkiraan dalam model regresi ( s dan UK, nilai- p , statistik F , dll.), Dan hampir sama dengan mengecualikan prediktor sejati sebagai termasuk prediktor palsu menurut literatur simulasi yang cukup matang.β

Apakah LASSO menderita dengan cara spesifik yang sama ketika digunakan untuk memilih variabel?

Alexis
sumber
3
Saya kira begitu. Frank Harrell memiliki beberapa posting tentang itu, saya pikir, dan mungkin ada materi yang relevan dalam bukunya "Strategi pemodelan regresi".
Richard Hardy
2
@RichardHardy +1 Saya akan senang jika FrankHarrell mau mampir dan berkomentar atau menjawab. :)
Alexis
5
Saya punya pembicaraan baru yang membahas hal ini. Intinya: laso memiliki probabilitas rendah untuk memilih variabel yang "benar". Slide berada di fharrell.com/talk/stratos19
Frank Harrell
4
Terkait dengan "Intinya: laso memiliki probabilitas rendah untuk memilih variabel" yang benar ": ada bagian tentang topik yang sama dalam Pembelajaran Statistik dengan Sparsity ( web.stanford.edu/~astie/StatLearnSparsity_files/… ),11.4.1 Variable-Selection Consistency for the Lasso
Adrian
2
Juga terkait dengan "Intinya: laso memiliki probabilitas rendah untuk memilih variabel 'benar'": lihat statweb.stanford.edu/~candes/stats300c/Lectures/Lecture24.pdf studi kasus 1 dan 2
Adrian

Jawaban:

3

Interpretasi probabilitas ekspresi frequentist dari kemungkinan, nilai-p dan sebagainya, untuk model LASSO, dan regresi bertahap, tidak benar.

Ungkapan-ungkapan itu melebih-lebihkan probabilitas. Misalnya interval kepercayaan 95% untuk beberapa parameter seharusnya mengatakan bahwa Anda memiliki probabilitas 95% bahwa metode ini akan menghasilkan interval dengan variabel model sebenarnya di dalam interval itu.

Namun, model yang sesuai tidak dihasilkan dari hipotesis tunggal yang khas, dan sebagai gantinya kami memilih ceri (pilih dari banyak model alternatif yang mungkin) ketika kami melakukan regresi bertahap atau regresi LASSO.


  1. Tidak masuk akal untuk mengevaluasi kebenaran parameter model (terutama ketika ada kemungkinan bahwa model tersebut tidak benar).

    Dalam contoh di bawah ini, dijelaskan nanti, model ini cocok untuk banyak regresi dan 'menderita' multikolinearitas. Hal ini membuat kemungkinan bahwa regressor tetangga (yang sangat berkorelasi) dipilih dalam model daripada yang benar-benar dalam model. Korelasi yang kuat menyebabkan koefisien memiliki kesalahan / varians yang besar (berkaitan dengan matriks ).(XTX)1

    Namun, varian tinggi ini karena multikolinieritas tidak 'terlihat' dalam diagnostik seperti nilai-p atau standar kesalahan koefisien, karena ini didasarkan pada matriks desain lebih kecil dengan regresor yang lebih sedikit . (dan tidak ada metode langsung untuk menghitung jenis statistik untuk LASSO)X

    Contoh: grafik di bawah ini yang menampilkan hasil model mainan untuk beberapa sinyal yang merupakan jumlah linier dari 10 kurva Gaussian (ini misalnya menyerupai analisis dalam kimia di mana sinyal untuk spektrum dianggap sebagai jumlah linier dari beberapa komponen). Sinyal dari 10 kurva dilengkapi dengan model 100 komponen (kurva Gaussian dengan rata-rata berbeda) menggunakan LASSO. Sinyal diperkirakan dengan baik (bandingkan kurva merah dan hitam yang cukup dekat). Tetapi, koefisien yang mendasarinya sebenarnya tidak diestimasi dengan baik dan mungkin sepenuhnya salah (bandingkan bilah merah dan hitam dengan titik-titik yang tidak sama). Lihat juga 10 koefisien terakhir:

                  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
    

    Model LASSO tidak memilih koefisien yang sangat perkiraan, tetapi dari perspektif koefisien itu sendiri itu berarti kesalahan besar ketika koefisien yang seharusnya tidak nol diperkirakan nol dan koefisien tetangga yang seharusnya nol diperkirakan menjadi tidak nol. Interval kepercayaan apa pun untuk koefisien akan sangat kecil artinya.

    Pemasangan LASSO

    contoh laso / glmnet

    Pemasangan bertahap

    Sebagai perbandingan, kurva yang sama dapat dilengkapi dengan algoritma bertahap yang mengarah ke gambar di bawah ini. (dengan masalah yang sama bahwa koefisiennya dekat tetapi tidak cocok)

    contoh nnls

  2. Bahkan ketika Anda mempertimbangkan keakuratan kurva (daripada parameter, yang pada poin sebelumnya dibuat jelas bahwa itu tidak masuk akal) maka Anda harus berurusan dengan overfitting. Ketika Anda melakukan prosedur pemasangan dengan LASSO maka Anda menggunakan data pelatihan (agar sesuai dengan model dengan parameter berbeda) dan data uji / validasi (untuk mencari / menemukan yang merupakan parameter terbaik), tetapi Anda juga harus menggunakan set terpisah ketiga data uji / validasi untuk mengetahui kinerja data.

    P-value atau sesuatu yang simular tidak akan bekerja karena Anda bekerja pada model tuned yang memetik ceri dan berbeda (derajat kebebasan yang jauh lebih besar) dari metode pemasangan linier biasa.


menderita masalah yang sama regresi bertahap tidak?

Anda tampaknya merujuk pada masalah seperti bias dalam nilai-nilai seperti , nilai-p, skor-F atau kesalahan standar. Saya percaya bahwa Lasso tidak digunakan untuk memecahkan mereka masalah.R2

Saya berpikir bahwa alasan utama untuk menggunakan LASSO sebagai pengganti regresi bertahap adalah bahwa LASSO memungkinkan pemilihan parameter yang kurang serakah, yang kurang dipengaruhi oleh multikoliner. (lebih banyak perbedaan antara LASSO dan stepwise: Superioritas LASSO atas seleksi maju / eliminasi mundur dalam hal kesalahan prediksi validasi silang model )


Kode untuk contoh gambar

# 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)
Sextus Empiricus
sumber
+1 Terima kasih Martjin Wterings. Bisakah Anda memperbesar grafik sedikit? Apa yang ditunjukkan pada sumbu, warna apa yang diwakili, dll.?
Alexis
Sebenarnya, grafik bukan kasus LASSO. Namun, ini adalah contoh bagaimana model mungkin beberapa jumlah dari beberapa komponen, katakanlah kurva Gaussian (di mana kurva dengan rata-rata yang sedikit berbeda sangat berkorelasi) dan perubahan dalam rata-rata komponen tersebut berarti perubahan besar untuk koefisien tetapi tidak begitu banyak untuk kurva.
Sextus Empiricus
1
Bilah adalah nilai dari koefisien untuk model true dan fitting. Ini adalah gambar yang saya ingat prinsip ini terjadi. Saya akan membuat contoh sendiri, yang mungkin menunjukkannya dengan lebih jelas (saya curiga bahwa LASSO, yang kurang serakah, dapat tampil lebih baik dalam mewakili koefisien yang sebenarnya).
Sextus Empiricus
0

Saya punya pembicaraan baru yang membahas hal ini. Intinya: laso memiliki probabilitas rendah untuk memilih variabel yang "benar". Slide ada di http://fharrell.com/talk/stratos19

- Frank Harrell

Terkait dengan "Intinya: laso memiliki probabilitas rendah untuk memilih variabel" yang benar ": ada bagian tentang topik yang sama dalam Pembelajaran Statistik dengan Sparsity ( https://web.stanford.edu/ ~ hastie/StatLearnSparsity_files/SLS_corrected_1 . 4.16.pdf ), 11.4.1 Variable-Selection Consistency for the Lasso

- Adrian

Juga terkait dengan "Intinya: laso memiliki probabilitas rendah untuk memilih variabel 'benar'": lihat https://statweb.stanford.edu/~candes/stats300c/Lectures/Lecture24.pdf studi kasus 1 dan 2

- Adrian

mkt - Pasang kembali Monica
sumber
1
Saya telah menyalin komentar ini sebagai jawaban wiki komunitas karena mereka, lebih atau kurang, adalah jawaban untuk pertanyaan ini. Kami memiliki kesenjangan dramatis antara jawaban dan pertanyaan. Paling tidak sebagian dari masalahnya adalah beberapa pertanyaan dijawab dalam komentar: jika komentar yang menjawab pertanyaan adalah jawaban, kita akan memiliki lebih sedikit pertanyaan yang tidak terjawab.
mkt - Pasang kembali Monica
1
Ini adalah komentar dan tidak, bahkan secara agregat, memberikan jawaban menurut standar CV (mis. Tautan bukan jawaban). Juga: Saya sangat tidak setuju dengan membuat pertanyaan yang benar-benar valid ke dalam wiki komunitas karena ketidakpuasan Anda sendiri dengan tingkat di mana pertanyaan dijawab.
Alexis
1
Juga: Saya telah dididik tentang komunitas wiki, dan komunitas wiki menjawab, dan saya menarik kembali ketidaksetujuan saya di sana (walaupun saya masih berpikir ini bukan jawaban :).
Alexis
1
@Alexis Cukup Adil - saya pikir itu adalah daerah abu-abu sendiri tetapi mungkin salah menilai ini.
mkt - Pasang kembali Monica
1
Kita semua belajar. :)
Alexis