Như justmarkham chỉ ra, bạn có thể xây dựng ma trận thiết kế x
bằng cách sử dụng model.matrix
. Lưu ý rằng bạn sẽ muốn loại trừ chặn, vì glmnet bao gồm một mặc định. Bạn cũng có thể muốn thay đổi chức năng tương phản mặc định, theo mặc định sẽ bỏ qua một cấp độ của từng yếu tố (mã hóa điều trị). Nhưng do hình phạt của Lasso, điều này không còn cần thiết cho việc nhận dạng và trên thực tế làm cho việc giải thích các biến được chọn trở nên phức tạp hơn. Để làm điều này, thiết lập
contr.Dummy <- function(contrasts, ...){
conT <- contr.treatment(contrasts=FALSE, ...)
conT
}
options(contrasts=c(ordered='contr.Dummy', unordered='contr.Dummy'))
Bây giờ, bất kể cấp độ nào của một yếu tố được chọn, bạn có thể nghĩ về nó như gợi ý rằng các cấp độ cụ thể này quan trọng, so với tất cả các cấp độ bị bỏ qua. Trong học máy, tôi đã thấy mã hóa này được gọi là mã hóa một nóng.
Giả sử g4
có K
các mức, type.multinomial="grouped"
tùy chọn chỉ định rằng x
tất cả các tính năng sẽ nhập mô hình đồng thời cho từng bộ K
dự báo tuyến tính, trái ngược với việc có bộ dự báo tuyến tính cho mỗi lớp (nói chung) có các tính năng riêng. glmnet
không (hiện tại?) hỗ trợ hình phạt loại nhóm của người dự đoán ( x
ma trận). Gói grplasso
này có, nhưng được viết bằng R thuần túy, vì vậy chậm hơn glmnet
, nhưng bạn có thể thử.