Jika multi-collinearity tinggi, apakah koefisien LASSO menyusut menjadi 0?

9

Diberikan x2=2x1, apa perilaku teoritis dari koefisien LASSO dan mengapa?

Akan salah satu x1 atau x2 menyusut menjadi 0 atau keduanya?

require(glmnet)
x1 = runif(100, 1, 2)
x2 = 2*x1
x_train = cbind(x1, x2)
y = 100*x1 + 100 + runif(1)
ridge.mod = cv.glmnet(x_train, y, alpha = 1)
coef(ridge.mod)

#3 x 1 sparse Matrix of class "dgCMatrix"
#                       1
#(Intercept) 1.057426e+02
#x1          9.680073e+01
#x2          3.122502e-15
John Hass
sumber
2
Saya tidak yakin apakah ini simulasi yang baik karena kedua koefisien sebenarnya nol. Sedikit lebih menarik untuk melihat perilaku estimasi koefisien ketika ada hubungan nyata.
dsaxton
1
Simulasi ditingkatkan. Saya memberikan simulasi karena saya ingin menjelaskan apa pertanyaan saya. Saya hanya tertarik pada hasil teoretis dari pertanyaan ini.
John Hass
1
Saya pikir perilaku tersebut tidak dapat diprediksi karena modelnya tidak dapat diidentifikasi. Artinya, bagaimana prosedur pemasangan model mungkin tahu misalnya ituβ1=100 dan β2=0 daripada β1=0 dan β2=50? Tidak bisa, karena keduanya "benar."
dsaxton
Saya setuju dengan alasan Anda. Apakah ada cara matematika untuk menggambarkannya?
John Hass
1
Saya pikir Anda maksud y = 100*x1 + 100 + runif(100), jika tidak, Anda mendapatkan nomor acak tunggal yang didaur ulang dan ditambahkan secara seragam ke semua entri lainnya.
Firebug

Jawaban:

8

Perhatikan itu

yXβ22+λβ1=yβ1x1β2x222+λ(|β1|+|β2|)=y(β1+2β2)x122+λ(|β1|+|β2|).

Untuk nilai tetap dari koefisien , penaltidiminimalkan ketika . Hal ini karena hukuman pada adalah dua kali sebagai tertimbang! Untuk memasukkan ini ke dalam notasi,memenuhi untuk setiap . Oleh karena itu, estimator laso β1+2β2|β1|+|β2|β1=0β1

β~=argminβ:β1+2β2=K|β1|+|β2|
β~1=0K
β^=argminβRpyXβ22+λβ1=argminβRpy(β1+2β2)x122+λ(|β1|+|β2|)=argβminKRminβRp:β1+2β2=KyKx122+λ(|β1|+|β2|)=argβminKR{yKx122+λminβRp:β1+2β2=K{(|β1|+|β2|)}}
memuaskan . Alasan mengapa komentar untuk pertanyaan OP menyesatkan adalah karena ada penalti pada model: merekaβ^1=0(0,50)dan koefisien memberikan kesalahan yang sama, tetapi norma berbeda ! Lebih jauh, tidak perlu melihat sesuatu seperti LAR: hasil ini segera mengikuti dari prinsip pertama.(100,0)1

Seperti yang ditunjukkan oleh Firebug, alasan mengapa simulasi Anda menunjukkan hasil yang kontradiktif adalah bahwa glmnetsecara otomatis skala untuk menyamakan varian fitur. Artinya, karena penggunaan glmnet, kami efektif dalam hal . Di sana, penaksir tidak lagi unik: dan keduanya dalam arg min. Memang, ada di untuk sehingga .x1=x2(100,0)(0,100)(a,b)argmina,b0a+b=100

Dalam hal ini fitur yang sama, glmnetakan konvergen persis dalam satu iterasi: itu soft-threshold koefisien pertama, dan kemudian koefisien kedua soft-threshold menjadi nol.

Ini menjelaskan mengapa simulasi ditemukan khususnya . Memang, koefisien kedua akan selalu nol, terlepas dari urutan fitur-fiturnya.β^2=0

Bukti: Asumsikan WLOG bahwa fitur memenuhi . Keturunan koordinat (algoritma yang digunakan oleh ) menghitung untuk iterasi pertama: diikuti oleh mana . Kemudian, karenaxRnx2=1glmnet

β^1(1)=Sλ(xTy)
β^2(1)=Sλ[xT(yxSλ(xTy))]=Sλ[xTyxTx(xTy+T)]=Sλ[T]=0,
T={λ if xTy>λλ if xTy<λ0 otherwiseβ^2(1)=0, iterasi kedua penurunan koordinat akan mengulangi perhitungan di atas. Secara induktif, kita melihat bahwa untuk semua iterasi dan . Karena itu akan melaporkan dan karena kriteria penghentian segera tercapai.β^j(i)=β^j(i)ij{1,2}glmnetβ^1=β^1(1)β^2=β^2(1)
pengguna795305
sumber
2
glmnetfitur penskalaan diaktifkan secara default, saya cukup yakin. Jadi dan menjadi sama dalam model. x1x2
Firebug
2
Coba ini sebagai gantinya: ridge.mod=cv.glmnet(x_train,y,alpha=1, standardize = FALSE); coef(ridge.mod)
Firebug
2
Itu berhasil! Pemikiran yang bagus, @Febebug! Sekarang koefisien memang menjadi nol. Terima kasih telah berbagi wawasan Anda! x1
user795305
3

Ketika saya menjalankan kembali kode Anda, saya mendapatkan bahwa koefisien secara numerik tidak dapat dibedakan dari nol.x2

Untuk memahami lebih baik mengapa LASSO menetapkan koefisien ke nol, Anda harus melihat hubungan antara LASSO dan Least Angle Regression (LAR). LASSO dapat dilihat sebagai LAR dengan modifikasi khusus.

Algoritma LAR kira-kira seperti ini: Mulai dengan model kosong (kecuali untuk intersep). Kemudian tambahkan variabel prediktor yang paling berkorelasi dengan , katakanlah . Secara bertahap ubah koefisien prediktor itu , hingga sisa berkorelasi sama dengan dan variabel prediktor lain . Kemudian, ubah koefisien dan hingga prediksi ketiga berkorelasi sama dengan sisa dan seterusnya.yxjβjycxjβjxjxkxjxkxlycxjβjxkβk

LASSO dapat dilihat sebagai LAR dengan putaran berikut: segera setelah koefisien prediktor dalam model Anda (prediktor "aktif") menyentuh nol, jatuhkan prediktor dari model tersebut. Inilah yang terjadi ketika Anda regresi pada prediktor collinear: kedua akan ditambahkan ke model pada saat yang sama dan, sebagai koefisien mereka berubah, korelasi masing-masing dengan residual akan berubah secara proporsional, tetapi salah satu prediktor akan mendapatkan menjatuhkan dari set aktif terlebih dahulu karena menyentuh nol pertama. Adapun yang mana dari dua prediktor collinear itu, saya tidak tahu. [EDIT: Ketika Anda membalik urutan dan , Anda dapat melihat bahwa koefisienyx1x2x1diatur ke nol. Jadi algoritma glmnet sepertinya mengatur koefisien tersebut menjadi nol terlebih dahulu yang dipesan kemudian dalam matriks desain.]

Sumber yang menjelaskan hal-hal ini secara lebih rinci adalah Bab 3 dalam "Elemen Pembelajaran Statistik" oleh Friedman, Hastie dan Tibshirani.

Matthias Schmidtblaicher
sumber