Apa yang akan disimpulkan dari plot laso ini (glmnet)

19

Berikut ini adalah plot glmnet dengan alpha default (1, karenanya laso) menggunakan mtcarsset data dalam R dengan mpgsebagai DV dan yang lainnya sebagai variabel prediktor.

glmnet(as.matrix(mtcars[-1]), mtcars[,1])

masukkan deskripsi gambar di sini

Apa yang bisa kita simpulkan dari plot ini mengenai berbagai variabel, khususnya am, cyldan wt(garis merah, hitam dan biru muda)? Bagaimana kita akan mengeluarkan output dalam laporan yang akan diterbitkan?

Saya berpikir untuk mengikuti:

  1. wtadalah prediktor paling penting mpg. Ini secara negatif mempengaruhi mpg.

  2. cyladalah prediktor negatif lemah mpg.

  3. ammungkin merupakan prediktor positif mpg.

  4. Variabel lain bukan merupakan prediktor kuat mpg.

Terima kasih atas pemikiran Anda tentang ini.

(Catatan: cyladalah garis hitam yang tidak mencapai 0 hingga sangat dekat dengannya.)

Sunting: Berikut ini adalah plot (mod, xvar = 'lambda') yang menunjukkan sumbu x dalam urutan kebalikan dari plot di atas:

masukkan deskripsi gambar di sini

(PS: Jika Anda menemukan pertanyaan ini menarik / penting, harap perbarui;)

juga
sumber
Sepertinya Anda lupa koma sebelumnya -1di glmnet(as.matrix(mtcars[-1]), mtcars[,1]).
Richard Hardy
Jika koma tidak diberikan, R menganggap nomor tersebut sebagai nomor kolom, jadi itu berfungsi.
rnso
Bagus, saya tidak melakukannya sebelumnya.
Richard Hardy
2
@ RichardHardy berhati-hatilah; perilaku ini berbeda untuk bingkai data dan matriks. Frame data adalah daftar, dan setiap kolom adalah elemen dari daftar itu, jadi my_data_frame[1]mengembalikan frame data dengan satu kolom, sedangkan my_data_frame[[1]]dan my_data_frame[, 1]keduanya mengembalikan vektor yang tidak "terkandung" oleh bingkai data. Matriks, namun, sebenarnya vektor hanya datar dengan atribut khusus yang memungkinkan R untuk mengakses mereka seperti grid, sehingga my_matrix[1], my_matrix[1, 1]dan my_matrix[[1]]semua akan kembali pertama elemen dari my_matrix. my_matrix[, 1] mengembalikan kolom pertama.
shadowtalker
2
Saya hanya menyebutkan bahwa fungsi plot_glmnet dalam paket plotmo memberikan plot koefisien yang sedikit lebih baik karena menangani label overplotting dan beberapa detail lainnya. Contohnya dapat ditemukan pada Bab 6 dalam sketsa plotres .
Stephen Milborrow

Jawaban:

39

λcatatan(λ)saya|βsaya|

Untuk itu, saya membuat beberapa data yang berkorelasi dan tidak berkorelasi untuk menunjukkan:

x_uncorr <- matrix(runif(30000), nrow=10000)
y_uncorr <- 1 + 2*x_uncorr[,1] - x_uncorr[,2] + .5*x_uncorr[,3]

sigma <- matrix(c(  1, -.5,   0,
                  -.5,   1, -.5,
                    0, -.5,   1), nrow=3, byrow=TRUE
)
x_corr <- x_uncorr %*% sqrtm(sigma)
y_corr <- y_uncorr <- 1 + 2*x_corr[,1] - x_corr[,2] + .5*x_corr[,3]

Data x_uncorrmemiliki kolom yang tidak berkorelasi

> round(cor(x_uncorr), 2)
     [,1]  [,2]  [,3]
[1,] 1.00  0.01  0.00
[2,] 0.01  1.00 -0.01
[3,] 0.00 -0.01  1.00

sementara x_corrmemiliki korelasi yang telah ditetapkan sebelumnya antara kolom

> round(cor(x_corr), 2)
      [,1]  [,2]  [,3]
[1,]  1.00 -0.49  0.00
[2,] -0.49  1.00 -0.51
[3,]  0.00 -0.51  1.00

Sekarang mari kita lihat plot laso untuk kedua kasus ini. Pertama, data yang tidak berkorelasi

gnet_uncorr <- glmnet(x_uncorr, y_uncorr)
plot(gnet_uncorr)

masukkan deskripsi gambar di sini

Beberapa fitur menonjol

  • Prediktor masuk ke model dalam urutan besarnya koefisien regresi linier sejati.
  • saya|βsaya|saya|βsaya|
  • Ketika prediktor baru memasuki model, itu mempengaruhi kemiringan jalur koefisien semua prediktor dalam model dengan cara deterministik. Misalnya, ketika prediktor kedua memasuki model, kemiringan jalur koefisien pertama dipotong setengah. Ketika prediktor ketiga memasuki model, kemiringan jalur koefisien adalah sepertiga dari nilai aslinya.

Ini semua adalah fakta umum yang berlaku untuk regresi laso dengan data yang tidak berkorelasi, dan semuanya dapat dibuktikan dengan tangan (latihan yang baik!) Atau ditemukan dalam literatur.

Sekarang mari kita lakukan data berkorelasi

gnet_corr <- glmnet(x_corr, y_corr)
plot(gnet_corr)

masukkan deskripsi gambar di sini

Anda dapat membaca beberapa hal dari plot ini dengan membandingkannya dengan kasus yang tidak berkorelasi

  • Jalur prediktor pertama dan kedua memiliki struktur yang sama dengan kasus yang tidak berkorelasi sampai prediktor ketiga memasuki model, meskipun mereka berkorelasi. Ini adalah fitur khusus dari dua kasus prediktor, yang dapat saya jelaskan dalam jawaban lain jika ada minat, itu akan membawa saya agak jauh dari diskusi saat ini.
  • |βsaya|

Jadi sekarang mari kita lihat plot Anda dari dataset mobil dan bacalah beberapa hal menarik (saya mereproduksi plot Anda di sini sehingga diskusi ini lebih mudah dibaca):

Sebuah kata peringatan : Saya menulis analisis berikut yang didasarkan pada asumsi bahwa kurva menunjukkan koefisien terstandarisasi , dalam contoh ini mereka tidak. Koefisien non-standar tidak berdimensi, dan tidak dapat dibandingkan, sehingga tidak ada kesimpulan yang dapat diambil dari mereka dalam hal kepentingan prediktif. Agar analisis berikut ini valid, harap berpura-pura bahwa plot tersebut dari koefisien terstandarisasi, dan harap lakukan analisis sendiri pada jalur koefisien terstandarisasi.

masukkan deskripsi gambar di sini

  • Seperti yang Anda katakan, wtprediktor tampaknya sangat penting. Memasuki model pertama, dan memiliki keturunan yang lambat dan mantap ke nilai akhir. Itu memang memiliki beberapa korelasi yang membuatnya menjadi perjalanan yang sedikit bergelombang, amkhususnya tampaknya memiliki efek drastis ketika masuk.
  • amjuga penting. Itu datang kemudian, dan berkorelasi dengan wt, karena mempengaruhi kemiringan wtdengan cara kekerasan. Ini juga berkorelasi dengan carbdan qsec, karena kita tidak melihat pelunakan lereng yang dapat diprediksi saat masuk. Setelah empat variabel tersebut telah memasuki meskipun, kita jangan melihat pola berkorelasi bagus, sehingga tampaknya tidak berkorelasi dengan semua prediktor di akhir.
  • Sesuatu masuk sekitar 2,25 pada sumbu x, tetapi lintasannya sendiri tidak terlihat, Anda hanya dapat mendeteksinya dengan pengaruhnya terhadap parameter cyldan wt.
  • cylcukup facinating. Memasuki kedua, jadi penting untuk model kecil. Setelah variabel lain, dan terutama ammasuk, itu tidak begitu penting lagi, dan trennya berbalik, akhirnya semuanya dihapus. Sepertinya efek cyldapat sepenuhnya ditangkap oleh variabel yang masuk pada akhir proses. Apakah lebih tepat untuk digunakan cyl, atau kelompok variabel pelengkap, benar-benar tergantung pada pengorbanan bias-varians. Mempunyai grup dalam model akhir Anda akan meningkatkan variansnya secara signifikan, tetapi mungkin ini merupakan penyebab bias yang lebih rendah menebusnya!

Itu pengantar kecil bagaimana saya belajar membaca informasi dari plot ini. Saya pikir mereka sangat menyenangkan!

Terima kasih untuk analisis yang bagus. Untuk melaporkan secara sederhana, dapatkah Anda mengatakan bahwa wt, am, dan cyl adalah 3 prediktor terpenting mpg. Juga, jika Anda ingin membuat model untuk prediksi, mana yang akan Anda sertakan berdasarkan gambar ini: wt, am and cyl? Atau kombinasi lainnya. Juga, Anda tampaknya tidak membutuhkan lambda terbaik untuk analisis. Apakah ini tidak penting seperti dalam regresi ridge?

Saya akan mengatakan kasus wtdan amjelas, mereka penting. cyljauh lebih halus, penting dalam model kecil, tetapi sama sekali tidak relevan dalam model besar.

Saya tidak akan dapat menentukan apa yang akan dimasukkan hanya berdasarkan gambar, yang benar-benar harus dijawab konteks dari apa yang Anda lakukan. Anda dapat mengatakan bahwa jika Anda menginginkan model tiga prediktor, maka wt, amdan cylmerupakan pilihan yang baik, karena mereka relevan dalam skema besar hal-hal, dan akhirnya akan memiliki ukuran efek yang masuk akal dalam model kecil. Ini didasarkan pada asumsi bahwa Anda memiliki beberapa alasan eksternal untuk menginginkan model tiga prediksi kecil.

Memang benar, jenis analisis ini melihat seluruh spektrum lambdas dan memungkinkan Anda memilah-milah hubungan pada berbagai kompleksitas model. Yang mengatakan, untuk model akhir, saya pikir menyetel lambda optimal sangat penting. Dengan tidak adanya kendala lain, saya pasti akan menggunakan validasi silang untuk menemukan di mana di sepanjang spektrum ini lambda paling prediktif adalah, dan kemudian menggunakan lambda itu untuk model akhir , dan analisis akhir.

λ

Di arah lain, kadang-kadang ada kendala luar untuk seberapa kompleks suatu model dapat (biaya implementasi, sistem warisan, minimalisme penjelas, interpretabilitas bisnis, warisan estetika) dan inspeksi semacam ini benar-benar dapat membantu Anda memahami bentuk data Anda, dan pengorbanan yang Anda lakukan dengan memilih model yang lebih kecil dari optimal.

Matthew Drury
sumber
Terima kasih untuk analisis yang bagus. Untuk melaporkan secara sederhana, dapatkah Anda mengatakan bahwa wt, am, dan cyl adalah 3 prediktor terpenting mpg. Juga, jika Anda ingin membuat model untuk prediksi, mana yang akan Anda sertakan berdasarkan gambar ini: wt, am and cyl? Atau kombinasi lainnya. Juga, Anda tampaknya tidak membutuhkan lambda terbaik untuk analisis. Apakah ini tidak penting seperti dalam regresi ridge?
rnso
@rnso saya menambahkan jawaban atas jawaban saya.
Matthew Drury
Mungkin 'warisan' seharusnya menjadi 'kekikiran'?
Hatshepsut
@Matthew Drury, saya punya beberapa hal yang saya tidak yakin tentang hal itu, saya akan berterima kasih atas klarifikasi Anda, # Anda menulis "misalnya ketika prediktor kedua masuk" bagaimana saya bisa tahu dari plot prediktor kedua atau prediktor ketiga / masuk . ## Kapan saya bisa mengatakan bahwa prediktor ini penting atau tidak. ### Akhirnya, bagaimana saya bisa memilih model yang terbaik pas ini. Apalagi legenda / label disertakan secara otomatis. (Saya telah menerapkan contoh ini dalam R)
jeza
5
+6, saya jelas melewatkan ini ketika keluar. Kerja yang sangat bagus.
gung - Reinstate Monica