Bagaimana cara memperkirakan parameter penyusutan di Lasso atau regresi ridge dengan> 50K variabel?

36

Saya ingin menggunakan Lasso atau regresi ridge untuk model dengan lebih dari 50.000 variabel. Saya ingin melakukannya menggunakan paket perangkat lunak dalam R. Bagaimana saya bisa memperkirakan parameter penyusutan ( )?λ

Suntingan:

Inilah poin yang ingin saya sampaikan:

set.seed (123)
Y <- runif (1000)
Xv <- sample(c(1,0), size= 1000*1000,  replace = T)
X <- matrix(Xv, nrow = 1000, ncol = 1000)

mydf <- data.frame(Y, X)

require(MASS)
lm.ridge(Y ~ ., mydf)

plot(lm.ridge(Y ~ ., mydf,
              lambda = seq(0,0.1,0.001)))

masukkan deskripsi gambar di sini

Pertanyaan saya adalah: Bagaimana saya tahu mana yang terbaik untuk model saya?λ

John
sumber
3
Parameter smoothing tidak dapat diperkirakan secara statistik tetapi menggunakan yang dipilih untuk memaksimalkan kecocokan out-of-sample menggunakan, misalnya, validasi silang. Saya pikir paket standar untuk LASSO dan Ridge Regression di R telah membangun fungsionalitas untuk melakukan ini untuk Anda - sudahkah Anda melihatnya?
Makro
4
Saya tidak setuju - Anda dapat memperkirakan parameter smoothing, menggunakan pendekatan model campuran. Metode reml ada seperti halnya metode heirarchical bayes. Anda tidak perlu validasi silang yang mahal.
probabilityislogic
1
@probabilityislogic terima kasih atas informasinya. Alangkah baiknya jika ada beberapa detail pada skrip bagaimana kita bisa melakukan ini menggunakan reml
John
2
Untuk regresi ridge, tinggalkan-keluar-validasi silang pada dasarnya gratis (statistik PRESS Allen) dan saya telah menemukan itu menjadi metode yang cukup baik. Namun dengan begitu mungkin fitur cukup banyak metode apa pun yang Anda gunakan akan tidak stabil dan pendekatan Bayesian sepenuhnya memarginalkan kedua parameter dan parameter regularisasi cenderung menjadi solusi yang lebih dapat diandalkan (seperti yang saya duga probabilityislogic menyarankan). Jika Anda tidak menyukai metode Bayesian, maka gunakan mengantongi dan perkirakan kembali lambda setiap kali.
Dikran Marsupial
2
@ Macro - (tidak seperti respons 18 bulan kemudian) Dalam pendekatan model campuran ada dua istilah tambahan yang hanya bergantung pada tetapi tidak β . Ini adalah - k log ( λ ) dan log | X T X + λ I | di mana k adalah jumlah betas dan X matriks prediktor. Istilah pertama berasal dari β N ( 0 , σ 2 λ - 1 ) di mana σ 2λβ-klog(λ)log|XTX+λsaya|kβN(0,σ2λ-1)σ2adalah varians kesalahan. Istilah kedua adalah REML-koreksi ke akun untuk ketidakpastian di mencolokkan . β=β^
probabilityislogic

Jawaban:

25

Fungsi cv.glmnetdari paket R glmnet melakukan validasi silang otomatis pada kisi nilai digunakan untukλ112α

λλcv.glmnetλlambda.minlambda.1seλtype.measure

Atau, paket R mgcv berisi kemungkinan luas untuk estimasi dengan penalti kuadratik termasuk pemilihan parameter penalti otomatis. Metode yang diterapkan meliputi validasi silang umum dan REML, sebagaimana disebutkan dalam komentar. Rincian lebih lanjut dapat ditemukan dalam buku paket penulis: Wood, SN (2006) Generalized Additive Models: pengantar dengan R, CRC.

NRH
sumber
1
Anda mungkin ingin menambahkan yang cv.glmnetmengembalikan dua nilai untuk , dan ("aturan satu kesalahan standar"). λlambda.minlambda.1se
chl
@ chl, terima kasih atas sarannya. Saya harus menambahkan itu.
NRH
15

Jawaban ini spesifik MATLAB, namun, konsep dasar harus sangat mirip dengan apa yang Anda terbiasa dengan R ...

Dalam kasus MATLAB, Anda memiliki opsi untuk menjalankan laso dengan validasi silang diaktifkan.

Jika Anda melakukannya, fungsi laso akan melaporkan dua nilai parameter kritis

  1. Nilai lambda yang meminimalkan cross divalidasi berarti kuadrat kesalahan
  2. Nilai lambda dengan jumlah penyusutan terbesar yang CVMSE-nya berada dalam satu kesalahan standar minimum.

Anda juga mendapatkan bagan kecil yang bagus yang dapat Anda gunakan untuk memeriksa hubungan antara lambda dan CVMSE

masukkan deskripsi gambar di sini

Secara umum, Anda akan memilih nilai lambda yang berada di antara garis biru dan garis hijau.

Posting blog berikut mencakup beberapa kode demo berdasarkan beberapa contoh di

Tibshirani, R. (1996). Penyusutan regresi dan seleksi melalui laso. J. Royal. Statist. Soc B., Vol. 58, No. 1, halaman 267-288).

http://blogs.mathworks.com/loren/2011/11/29/subset-selection-and-regularization-part-2/

Richard Willey
sumber