Regresi linier multivariat dengan laso di r

9

Saya mencoba membuat model yang diperkecil untuk memprediksi banyak variabel dependen (DV) (~ 450) yang sangat berkorelasi.

Variabel independen saya (IV) juga banyak (~ 2000) dan sangat berkorelasi.

Jika saya menggunakan laso untuk memilih model yang direduksi untuk setiap output secara terpisah, saya tidak dijamin mendapatkan subset variabel independen yang sama seperti saya mengulangi setiap variabel dependen.

Apakah ada regresi linier multivariat yang menggunakan laso di R?

Ini bukan grup laso. kelompok laso mengelompokkan IV. Saya ingin regresi linier multivariat (artinya DV adalah matriks, bukan vektor skalar), yang juga menerapkan laso. (Catatan: seperti yang ditunjukkan NRH, ini tidak benar. Grup laso adalah istilah umum yang mencakup strategi yang mengelompokkan IV, tetapi juga mencakup strategi yang mengelompokkan parameter lain seperti DV)

Saya menemukan makalah ini yang masuk ke sesuatu yang disebut Sparse Overlapping Sets Lasso

Berikut adalah beberapa kode yang melakukan regresi linier multivariat

> dim(target)
[1] 6060  441
> dim(dictionary)
[1] 6060 2030
> fit = lm(target~dictionary)

Berikut adalah beberapa kode yang melakukan laso pada DV tunggal

> fit = glmnet(dictionary, target[,1])

Dan inilah yang ingin saya lakukan:

> fit = glmnet(dictionary, target)
Error in weighted.mean.default(y, weights) : 
  'x' and 'w' must have the same length

Memilih fitur yang sesuai SEMUA target sekaligus

kmace
sumber
Tidak jelas apa yang Anda tanyakan, kecuali pada poin terakhir. Paket ini disebut glmnetdan memiliki sketsa menyeluruh.
generic_user
Apa yang Anda maksud dengan "setiap waktu"? Apakah Anda menjalankan ini pada himpunan bagian dari data Anda? Validasi silang? Sampel yang berbeda?
shadowtalker
Setiap kali, maksud saya saya sedang menjalankan glmnet pada variabel dependen tunggal pada suatu waktu, dan mengulangi semuanya
kmace
Atau dengan kata lain y saya selalu vektor, bukan matriks
kmace
1
@ Firebug benar-benar. Saya tidak tahu istilah itu lebih umum. Maaf soal itu
kmace

Jawaban:

11

Untuk tanggapan multivarian (jumlah variabel dependen lebih besar dari 1), Anda perlu family = "mgaussian"melakukan panggilan glmnet.

The paket lsgl merupakan alternatif, yang menyediakan hukuman yang lebih fleksibel.

k

j=1pβj2

βj=(βj1,,βjk)Tjglmnet

Yang sebelumnya [ family = "mgaussian"] memungkinkan model gaussian multi-respons cocok, menggunakan penalti "grup -lasso" pada koefisien untuk setiap variabel. Mengikat respons bersama seperti ini disebut pembelajaran "multi-tugas" di beberapa domain.

Hukuman ini adalah contoh dari hukuman laso grup, yang mengelompokkan parameter untuk respons berbeda yang terkait dengan prediktor yang sama. Ini menghasilkan pemilihan prediktor yang sama di semua respons untuk nilai parameter tuning yang diberikan.

Paket lsgl mengimplementasikan penalti grup laso yang jarang dari bentuk mana dan adalah bobot tertentu yang dipilih untuk menyeimbangkan kontribusi dari istilah yang berbeda. Standarnya adalah dan . Parameter adalah parameter tuning. Dengan (dan ) penalti tersebut setara dengan penalti yang digunakan oleh dengan . Dengan (dan

αj=1pl=1kξjl|βjl|+(1α)j=1pγjβj2

ξjlγjξjl=1 α[0,1]α=0γj=1α=1ξ j l =1γj=kα[0,1]α=0γj=1glmnetfamily = "mgaussian"α=1ξjl=1) penalti memberi laso biasa. Implementasi lsgl juga memungkinkan pengelompokan tambahan dari prediktor.

Catatan tentang laso grup. Istilah kelompok laso sering dikaitkan dengan pengelompokan prediktor. Namun, dari sudut pandang yang lebih umum, grup laso hanyalah sekelompok parameter dalam penalti. Pengelompokan yang digunakan oleh glmnetwith family = "mgaussian"adalah pengelompokan parameter di seluruh respons. Efek dari pengelompokan seperti itu adalah untuk menyandingkan estimasi parameter di seluruh respons, yang ternyata merupakan ide yang bagus, jika semua respons dapat diprediksi dari sekumpulan prediktor yang sama. Gagasan umum menggabungkan beberapa masalah pembelajaran, yang diharapkan dapat berbagi struktur, dikenal sebagai pembelajaran multi-tugas .

NRH
sumber