Seperti yang ditunjukkan justmarkham, Anda dapat membuat matriks desain x
menggunakan model.matrix
. Perhatikan bahwa Anda ingin mengecualikan intersep, karena glmnet menyertakan satu secara default. Anda mungkin juga ingin mengubah fungsi kontras default, yang secara default tidak menyertakan satu level dari masing-masing faktor (pengkodean pengobatan). Tetapi karena hukuman laso, ini tidak lagi diperlukan untuk identifikasi, dan bahkan membuat interpretasi dari variabel yang dipilih lebih rumit. Untuk melakukan ini, atur
contr.Dummy <- function(contrasts, ...){
conT <- contr.treatment(contrasts=FALSE, ...)
conT
}
options(contrasts=c(ordered='contr.Dummy', unordered='contr.Dummy'))
Sekarang, level apa pun dari suatu faktor dipilih, Anda dapat menganggapnya sebagai menyarankan bahwa level spesifik ini penting, dibandingkan semua level yang dihilangkan. Dalam pembelajaran mesin, saya telah melihat pengkodean ini disebut sebagai pengkodean satu-panas.
Dengan asumsi bahwa g4
ada K
level, type.multinomial="grouped"
opsi menentukan bahwa fitur x
semua akan memasuki model secara bersamaan untuk masing-masing K
prediktor linier, yang bertentangan dengan memiliki prediktor linier untuk setiap kelas (secara umum) memiliki fitur-fiturnya sendiri. glmnet
tidak (saat ini?) mendukung jenis hukuman prediktor ( x
matriks) yang dikelompokkan . Paket grplasso
tidak, tetapi ditulis dalam R murni, jadi lebih lambat daripada glmnet
, tetapi Anda bisa mencobanya.